371 lines
8.8 KiB
Python
Executable File
371 lines
8.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
global cpt
|
|
global Origcpt
|
|
global EmuMod
|
|
|
|
FirstRun = 1
|
|
cpt = 0
|
|
import configparser
|
|
from collections import Counter
|
|
from tkinter import *
|
|
from tkinter import ttk
|
|
from PIL import Image, ImageTk
|
|
import PIL.Image
|
|
import PIL.ImageTk
|
|
import sys
|
|
from modules.arrow import *
|
|
from modules.emulateur_display import *
|
|
import time
|
|
import os
|
|
#sys.path.append( './modules/')
|
|
#from arrow import *
|
|
|
|
|
|
#EmuMod :
|
|
# 0 : Emu select
|
|
# 1 : Rom select
|
|
|
|
|
|
|
|
#def EmuMod():
|
|
|
|
|
|
|
|
def ViewRom(EmuName):
|
|
|
|
WheelEmu="./data/roms/"+str(EmuName)+"/media/wheel/" + str(EmuName) + "_wheel.png"
|
|
NfL = IsImgExist(NfL,"emu")
|
|
|
|
OpenNfL=Image.open(NfL)
|
|
PhotoNfL=OpenNfL.resize((Square,Square))
|
|
TkNfL=ImageTk.PhotoImage(PhotoNfL)
|
|
LabelPNfL=Label(arkadeus, image=TkNfL)
|
|
LabelPNfL.TkNfL = TkNfL
|
|
|
|
Cnv.pack(fill = "both", expand = True)
|
|
# for IdCanvas in Cnv.find_all():
|
|
# if IdCanvas != 1:
|
|
# Cnv.delete(IdCanvas)
|
|
|
|
Cnv.create_image(xL, yL, image=TkNfL)
|
|
print("Curent Emu : " + str(EmuRes[cM]))
|
|
|
|
|
|
|
|
def BackgroundRom(Emu):
|
|
|
|
|
|
|
|
EmuBgFile = "./data/emu/media/" + str(Emu) +"_bg.png"
|
|
EmuBgFile = IsImgExist(EmuBgFile,"bg")
|
|
|
|
OpenEmuBgfile=Image.open(EmuBgFile)
|
|
PhotoEmuBgFile=OpenEmuBgfile.resize((Xsize,Ysize))
|
|
TkPhotoEmuBgFile=ImageTk.PhotoImage(PhotoEmuBgFile)
|
|
LabelEmuBgFile=Label(arkadeus, image=TkPhotoEmuBgFile)
|
|
LabelEmuBgFile.TkPhotoEmuBgFile = TkPhotoEmuBgFile
|
|
Cnv.create_image(0, 0, image=TkPhotoEmuBgFile, anchor = "nw")
|
|
|
|
|
|
def IsImgExist(AbsPathFile,TypeMedia):
|
|
if not os.path.exists(AbsPathFile):
|
|
match TypeMedia:
|
|
case "emu":
|
|
return "./media/noemu.png"
|
|
case "bg":
|
|
return "./media/nobg.png"
|
|
case "wheel":
|
|
return "./media/nowheel.png"
|
|
case "snap":
|
|
return "./media/nopsnap.png"
|
|
case "wheelemu":
|
|
return "./media/nowheelemu.png"
|
|
case "doc":
|
|
return "./media/nodoc.txt"
|
|
else:
|
|
return AbsPathFile
|
|
|
|
def BackgroundEmu():
|
|
|
|
BackgroundEmu = Media["background"]
|
|
BgEmu = PhotoImage(file = Background)
|
|
LabelBgEmu = Label(arkadeus,image=BgEmu)
|
|
LabelBgEmu.BgEmu = BgEmu
|
|
Cnv.create_image( 0, 0, image = BgEmu, anchor = "nw")
|
|
|
|
def EnterEmu(GetEmuMod):
|
|
global EmuMod
|
|
global cpt
|
|
EmuMod=1
|
|
runMcpt = cpt + 1
|
|
if runMcpt > EmuCpt:
|
|
runMcpt = 0
|
|
print("Emu : " + str(EmuRes[runMcpt]))
|
|
#Cnv.delete("all")
|
|
BackgroundRom(str(EmuRes[runMcpt]))
|
|
GenRomListPerGame(str(EmuRes[runMcpt]))
|
|
|
|
|
|
def ViewEmu(cL,xL,yL,cM,xM,yM,cR,xR,yR):
|
|
NfL="./data/emu/media/" + EmuRes[cL] + ".png"
|
|
NfL = IsImgExist(NfL,"emu")
|
|
NfM="./data/emu/media/" + EmuRes[cM] + ".png"
|
|
NfM = IsImgExist(NfM,"emu")
|
|
NfR="./data/emu/media/" + EmuRes[cR] + ".png"
|
|
NfR = IsImgExist(NfR,"emu")
|
|
|
|
|
|
OpenNfL=Image.open(NfL)
|
|
PhotoNfL=OpenNfL.resize((Square,Square))
|
|
TkNfL=ImageTk.PhotoImage(PhotoNfL)
|
|
LabelPNfL=Label(arkadeus, image=TkNfL)
|
|
LabelPNfL.TkNfL = TkNfL
|
|
|
|
OpenNfM=Image.open(NfM)
|
|
PhotoNfM=OpenNfM.resize((Square,Square))
|
|
TkNfM=ImageTk.PhotoImage(PhotoNfM)
|
|
LabelPNfM=Label(arkadeus, image=TkNfM)
|
|
LabelPNfM.TkNfM = TkNfM
|
|
|
|
OpenNfR=Image.open(NfR)
|
|
PhotoNfR=OpenNfR.resize((Square,Square))
|
|
TkNfR=ImageTk.PhotoImage(PhotoNfR)
|
|
LabelPNfR=Label(arkadeus, image=TkNfR)
|
|
LabelPNfR.TkNfR = TkNfR
|
|
|
|
Cnv.pack(fill = "both", expand = True)
|
|
for IdCanvas in Cnv.find_all():
|
|
if IdCanvas != 1:
|
|
Cnv.delete(IdCanvas)
|
|
|
|
Cnv.create_image(xL, yL, image=TkNfL)
|
|
Cnv.create_image(xM, yM, image=TkNfM)
|
|
Cnv.create_image(xR, yR, image=TkNfR)
|
|
print("Curent Emu : " + str(EmuRes[cM]))
|
|
|
|
def leftKey(GetEmuMod):
|
|
if GetEmuMod == 0:
|
|
global cpt
|
|
cpt = cpt - 1
|
|
if cpt < 0:
|
|
cpt = EmuCpt
|
|
Lcpt = cpt
|
|
Mcpt = cpt + 1
|
|
Rcpt = cpt + 2
|
|
if Mcpt > EmuCpt:
|
|
Mcpt = 0
|
|
Rcpt = 1
|
|
if Rcpt > EmuCpt:
|
|
Rcpt = 0
|
|
print("DEBUG : " + str(EmuMod) + " Emu : " + str(cpt))
|
|
ViewEmu(Lcpt,EmuLeftSquareX, EmuLeftSquareY,Mcpt,EmuMiddleSquareX, EmuMiddleSquareY,Rcpt,EmuRightSquareX, EmuRightSquareY)
|
|
if GetEmuMod == 1:
|
|
print ("get in ")
|
|
ViewRom(EmuRes[Mcpt])
|
|
|
|
def rightKey(GetEmuMod):
|
|
|
|
if GetEmuMod == 0:
|
|
global cpt
|
|
cpt = cpt + 1
|
|
if cpt > EmuCpt:
|
|
cpt = 0
|
|
Lcpt = cpt
|
|
Mcpt = cpt + 1
|
|
Rcpt = cpt + 2
|
|
if Mcpt > EmuCpt:
|
|
Mcpt = 0
|
|
Rcpt = 1
|
|
if Rcpt > EmuCpt:
|
|
Rcpt = 0
|
|
print("DEBUG : " + str(EmuMod) + " Emu : " + str(cpt))
|
|
ViewEmu(Lcpt,EmuLeftSquareX, EmuLeftSquareY,Mcpt,EmuMiddleSquareX, EmuMiddleSquareY,Rcpt,EmuRightSquareX, EmuRightSquareY)
|
|
|
|
def Escape(GetEmuMod):
|
|
if GetEmuMod == 0:
|
|
print("Ciao !!")
|
|
arkadeus.quit()
|
|
if GetEmuMod == 1:
|
|
global EmuMod
|
|
global cpt
|
|
EmuMod = 0
|
|
cpt = 0
|
|
|
|
|
|
BackgroundEmu()
|
|
ViewEmu(0,EmuLeftSquareX, EmuLeftSquareY,1,EmuMiddleSquareX, EmuMiddleSquareY,2,EmuRightSquareX, EmuRightSquareY)
|
|
|
|
|
|
|
|
def GenEmuList():
|
|
global EmuRes
|
|
dir_path = r'./data/emu/bin/'
|
|
for path in os.listdir(dir_path):
|
|
if os.path.isfile(os.path.join(dir_path, path)):
|
|
FileName=os.path.splitext(path)[0]
|
|
EmuRes.append(FileName)
|
|
print("DEBUG : " + FileName)
|
|
|
|
cnt = Counter(EmuRes)
|
|
global EmuCpt
|
|
EmuCpt=len(cnt) - 1
|
|
print(" Nmbre emulateur : " + str(EmuCpt))
|
|
|
|
|
|
def GenRomListPerGame(Emu):
|
|
global RomRes
|
|
RomRes.clear()
|
|
DirRomPath='./data/roms/'+Emu+'/roms'
|
|
dir_rom_path = r''+DirRomPath
|
|
|
|
isDirRom = os.path.isdir(DirRomPath)
|
|
print ("Dir : " + DirRomPath + " : status:" + str(isDirRom))
|
|
if isDirRom == True:
|
|
|
|
for RomFile in os.listdir(dir_rom_path):
|
|
if os.path.isfile(os.path.join(dir_rom_path, RomFile)):
|
|
RomFileName=os.path.splitext(RomFile)[0]
|
|
RomRes.append(RomFileName)
|
|
print("DEBUG : " + RomFileName)
|
|
|
|
cntrom = Counter(RomRes)
|
|
global RomCpt
|
|
RomCpt=len(cntrom) - 1
|
|
print("Nmbre de roms : " + str(RomCpt))
|
|
print ("ListROms : " + str(RomRes))
|
|
print ("TEST 1942 : " + str(RomRes[0]) )
|
|
|
|
|
|
arkadeus= Tk()
|
|
|
|
global EmuRes
|
|
global RomRes
|
|
|
|
EmuRes = []
|
|
RomRes = []
|
|
|
|
|
|
EmuMod = 0
|
|
|
|
GenEmuList()
|
|
|
|
|
|
|
|
config_obj = configparser.ConfigParser()
|
|
config_obj.read("./conf/config.ini")
|
|
Media = config_obj["Media"]
|
|
ForceRes = Media["force_resolution"]
|
|
Background = Media["background"]
|
|
Square = int(Media["square_size"])
|
|
|
|
config_rom = configparser.ConfigParser()
|
|
config_rom.read("./conf/games.ini")
|
|
|
|
Emulateur = config_rom["emulateurs"]
|
|
|
|
print(Emulateur["EmulateurList"])
|
|
IdEmu(Emulateur["EmulateurList"])
|
|
|
|
|
|
arkadeus.attributes('-fullscreen', True)
|
|
arkadeus.title("Arkadeus")
|
|
|
|
|
|
|
|
if ForceRes == "y":
|
|
Xsize = int(Media["x_resolution"])
|
|
Ysize = int(Media["y_resolution"])
|
|
else:
|
|
Xsize = arkadeus.winfo_screenwidth()
|
|
Ysize = arkadeus.winfo_screenheight()
|
|
|
|
|
|
print("res : " + str(Xsize) + ":" + str(Ysize) )
|
|
|
|
|
|
|
|
################ Carto Emu Mode ####################
|
|
EmuMiddleSquareX=(Xsize/2)
|
|
EmuMiddleSquareY=(Ysize/2)
|
|
|
|
EmuLeftSquareX=(Xsize/3)
|
|
EmuLeftSquareY=(Ysize/3)
|
|
|
|
EmuRightSquareX=(Xsize*2/3)
|
|
EmuRightSquareY=(Ysize/3)
|
|
|
|
################ Carto Rom Mode ####################
|
|
|
|
RomIndice = 40
|
|
|
|
#RomIndiceX = round(Xsize / RomIndice)
|
|
#RomIndiceY = round(Ysize / RomIndice)
|
|
|
|
RomIndiceX = RomIndice
|
|
RomIndiceY = RomIndice
|
|
|
|
RomUpSquareX=RomIndiceX
|
|
RomUpSquareY=RomIndiceY
|
|
#RomUpSquareSizeX=round((Xsize/2)-(RomIndiceX/2)-RomIndiceX)
|
|
#RomUpSquareSizeY=round((Ysize/3)-(RomIndiceY*4))
|
|
|
|
RomUpSquareSizeX=((Xsize-(RomIndiceX*3))/2)
|
|
RomUpSquareSizeY=(Ysize-(RomIndiceY))
|
|
|
|
RomMiddleSquareX=RomIndiceX
|
|
RomMiddleSquareY=(RomIndiceY*2) + RomUpSquareSizeY
|
|
RomMiddleSquareSizeX=RomUpSquareSizeX
|
|
RomMiddleSquareSizeY=RomUpSquareSizeY
|
|
|
|
RomBottomSquareX=RomIndiceX
|
|
RomBottomSquareY=(RomIndiceY*3) + (RomUpSquareSizeY*2)
|
|
RomBottomSquareSizeX=RomUpSquareSizeX
|
|
RomBottomSquareSizeY=RomUpSquareSizeY
|
|
|
|
RomLeftSquareX=(RomIndiceX*2) + RomUpSquareSizeX
|
|
RomLeftSquareY=RomIndiceY
|
|
RomLeftSquareSizeX=RomUpSquareSizeX - RomIndiceX
|
|
RomLeftSquareSizeY=(RomIndiceY*2) + (RomUpSquareSizeY*3)
|
|
|
|
print("RomIndice :" + str(RomIndice))
|
|
print("RomIndiceX :" + str(RomIndiceX))
|
|
print("RomIndiceY :" + str(RomIndiceY))
|
|
print("RomUpSquareX :" + str(RomUpSquareX))
|
|
print("RomUpSquareY :" + str(RomUpSquareY))
|
|
print("RomUpSquareSizeX :" + str(RomUpSquareSizeX))
|
|
print("RomUpSquareSizeY :" + str(RomUpSquareSizeY))
|
|
print("RomMiddleSquareX :" + str(RomMiddleSquareX))
|
|
print("RomMiddleSquareY :" + str(RomMiddleSquareY))
|
|
print("RomMiddleSquareSizeX :" + str(RomMiddleSquareSizeX))
|
|
print("RomMiddleSquareSizeY :" + str(RomMiddleSquareSizeY))
|
|
print("RomBottomSquareX :" + str(RomBottomSquareX))
|
|
print("RomBottomSquareY :" + str(RomBottomSquareY))
|
|
print("RomBottomSquareSizeX :" + str(RomBottomSquareSizeX))
|
|
print("RomBottomSquareSizeY :" + str(RomBottomSquareSizeY))
|
|
print("RomLeftSquareX :" + str(RomLeftSquareX))
|
|
print("RomLeftSquareY :" + str(RomLeftSquareY))
|
|
print("RomLeftSquareSizeX :" + str(RomLeftSquareSizeX))
|
|
print("RomLeftSquareSizeY :" + str(RomLeftSquareSizeY))
|
|
|
|
|
|
####################################################
|
|
|
|
|
|
|
|
|
|
|
|
Cnv = Canvas( arkadeus, width = Ysize , height = Xsize)
|
|
Cnv.pack(fill = "both", expand = True)
|
|
|
|
BackgroundEmu()
|
|
ViewEmu(cpt,EmuLeftSquareX, EmuLeftSquareY,cpt+1,EmuMiddleSquareX, EmuMiddleSquareY,cpt+2,EmuRightSquareX, EmuRightSquareY)
|
|
|
|
|
|
arkadeus.bind("<Left>", lambda event: leftKey(EmuMod))
|
|
arkadeus.bind("<Right>", lambda event: rightKey(EmuMod))
|
|
arkadeus.bind("<Return>", lambda event: EnterEmu(EmuMod))
|
|
arkadeus.bind('<Escape>',lambda event : Escape(EmuMod))
|
|
|
|
arkadeus.mainloop()
|