arkadeus/start.py

394 lines
9.5 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"
IsWheelEmu = IsImgExist(WheelEmu,"wheelemu")
OpenWheelEmu=Image.open(IsWheelEmu)
ResizeOpenWheelEmu=OpenWheelEmu.resize((RomUpSquareSizeX,RomUpSquareSizeY))
TkOpenWheelEmu=ImageTk.PhotoImage(ResizeOpenWheelEmu)
LabelResizeOpenWheelEmu=Label(arkadeus, image=TkOpenWheelEmu)
LabelResizeOpenWheelEmu.TkOpenWheelEmu = TkOpenWheelEmu
print("AHHHHHHHHHHHHHHHHHH : " + str(IsWheelEmu))
Cnv.pack(fill = "both", expand = True)
# for IdCanvas in Cnv.find_all():
# if IdCanvas != 1:
# Cnv.delete(IdCanvas)
Cnv.create_image(RomUpSquareX, RomUpSquareY, image=TkOpenWheelEmu)
print(str(RomUpSquareX) + " : " + str(RomUpSquareY) + "(" + str(RomUpSquareSizeX) + ":" + str(RomUpSquareSizeY) +")")
print("Curent Emu : " + str(EmuRes[RomCpt]))
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
if EmuMod == 0:
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)
print (str(xL) + ":" + str(yL))
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:
global RomCpt
print ("get in ")
ViewRom(EmuRes[RomCpt])
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)
if GetEmuMod == 1:
global RomCpt
print ("get in ")
ViewRom(EmuRes[RomCpt])
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-(RomIndiceX*3))/2))
RomUpSquareSizeY=round(((Ysize-(RomIndiceY*4))/3))
RomUpSquareX=round(RomIndiceX + RomUpSquareSizeX/2)
RomUpSquareY=round(RomIndiceY + RomUpSquareSizeY/2)
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=round(((Xsize-(RomIndiceX*3))/2))
RomLeftSquareSizeY=round((Ysize-(RomIndiceY*2)))
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)
if EmuMod == 0:
BackgroundEmu()
ViewEmu(cpt,EmuLeftSquareX, EmuLeftSquareY,cpt+1,EmuMiddleSquareX, EmuMiddleSquareY,cpt+2,EmuRightSquareX, EmuRightSquareY)
if EmuMod == 1:
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()