pyrharckade/CONF/DefFrontEndGameFile.py
2018-11-06 14:20:43 +01:00

351 lines
11 KiB
Python

import pygame
import sys
import time
import subprocess
import os
from pygame.locals import *
from pygame import *
from pygame import movie
#from pygame.movie import *
from DefFrontEndEmuMapFile import *
from DefFrontEndEmuFile import *
from ConfAllPath import *
from DefFrontEndGameMapFile import DefFrontEndGameMap
from DefLaunchSomethingFile import DefLaunchSomething
from DefDownladPerGame import DownloadGraphical
from DefCheckEnvFile import DefCheckEnv
from KeyMapKeyBoard import *
from time import gmtime, strftime
def DefFrontEndGame(EmuChoose,Resolution,emu,li,CptGame,MAX_EMU,MAX,CptEmu,GamePerEmu,MaxForThisEmu,Orientation,JOY_TEST):
Sys=DefCheckEnv()[0]
pygame.key.set_repeat(400, 70)
# Orientation='X'
ParentOfPyr,ConfRomFile,AllMedia,ConfigKeyboardFile=DefConfPathHome()
font_path,font_size,max_carac,WHERE_TEXTE,WHERE_TEXTE_X,WHERE_TEXTE_Y,SIZE_TEXTE_W,SIZE_TEXTE_H,SIZE_TEXTE,WHERE_WHEEL,WHERE_SYS,SIZE_WHEEL_CONVERT,WHERE_SNAP,SIZE_SNAP_CONVERT,SIZE_SYS_CONVERT,UNIT_L,UNIT_H=DefFrontEndGameMap(Resolution,Orientation)
font = pygame.font.Font(font_path, font_size)
ParentOfPyr,BinOfPyr,Wheel,Snap,Sound,Roms,Docs,ImgY,ImgX,Img,BlackImg,IMG_EMU=DefConfPathGame(Orientation)
BeepFileGame=ParentOfPyr + "/MEDIA/SOUND/blip.wav"
MyBip=pygame.mixer.Sound(BeepFileGame)
pygame.init()
PyrScreen = pygame.display.set_mode(Resolution,FULLSCREEN)
if Orientation=='Y':
### TODO
if (os.path.isfile(ImgY + EmuChoose + ".png")):
Background=Img + "/black.png"
else:
Background=Img + "/black.png"
### ODOT
else:
if (os.path.isfile(ImgX + EmuChoose + ".png")):
Background=ImgX + EmuChoose + ".png"
else:
Background=Img + "/menu_X.png"
fond = pygame.transform.scale(pygame.image.load(Background).convert(),Resolution)
PyrScreen.blit(fond, (0,0))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_SNAP_CONVERT)),WHERE_SNAP)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_SYS_CONVERT)),WHERE_SYS)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_WHEEL_CONVERT)),WHERE_WHEEL)
GameSnapPath=AllMedia+EmuChoose+ "/SNAP/" + GamePerEmu[CptGame][0]+".png"
GameWheelPath=AllMedia+EmuChoose+ "/WHEEL/" + GamePerEmu[CptGame][0]+".png"
GameSysPath=AllMedia + "/IMG/EMU/LOGO/" + EmuChoose +".png"
GameDocPath=AllMedia+EmuChoose+ "/DOCS/" + GamePerEmu[CptGame][0]+".txt"
GameVideoPath=AllMedia+EmuChoose+ "/VIDEO/" + GamePerEmu[CptGame][0]+".mpg"
if (os.path.isfile(GameSysPath)):
GameSys=pygame.transform.scale(pygame.image.load(GameSysPath).convert_alpha(),SIZE_SYS_CONVERT)
else:
GameSysPath=AllMedia+"/no_sys.png"
GameSys=pygame.transform.scale(pygame.image.load(GameSysPath).convert_alpha(),SIZE_SYS_CONVERT)
if (os.path.isfile(GameSnapPath)):
GameSnap=pygame.transform.scale(pygame.image.load(GameSnapPath).convert_alpha(),SIZE_SNAP_CONVERT)
else:
GameSnapPath=AllMedia+"/no_snap.png"
GameSnap=pygame.transform.scale(pygame.image.load(GameSnapPath).convert_alpha(),SIZE_SNAP_CONVERT)
if (os.path.isfile(GameWheelPath)):
GameWheel=pygame.transform.scale(pygame.image.load(GameWheelPath).convert_alpha(),SIZE_WHEEL_CONVERT)
else:
GameWheelPath=AllMedia+"/no_wheel.png"
GameWheel=pygame.transform.scale(pygame.image.load(GameWheelPath).convert_alpha(),SIZE_WHEEL_CONVERT)
FILE_INFO=AllMedia+EmuChoose+ "/DOCS/" + GamePerEmu[CptGame][0]+".txt"
if os.path.isfile(FILE_INFO):
FILE_DOC = open(FILE_INFO,"r")
text1 = FILE_DOC.read()
LPLUS=0
LPLUS=LPLUS + (font_size+3)
WHERE_TEXTE=(WHERE_TEXTE_X,WHERE_TEXTE_Y)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),(WHERE_TEXTE))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),WHERE_TEXTE)
for ligne in text1.splitlines():
ligne=ligne[0:max_carac]
x,y = PyrScreen.blit(font.render(ligne,10,pygame.Color("red")),(WHERE_TEXTE_X,WHERE_TEXTE_Y+LPLUS)).bottomleft
LPLUS=LPLUS + (font_size+1)
if ((WHERE_TEXTE_Y + LPLUS) > (SIZE_TEXTE_H*3 +(UNIT_H*2))):
break
FILE_DOC.close()
else:
text1 = "No DATA File : " #+ GamePerEmu[CptGame][MAX_EMU][0]
text2 = font.render(text1, True, pygame.Color("red"))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE_W,SIZE_TEXTE_H)),((WHERE_TEXTE_X,WHERE_TEXTE_Y)))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),WHERE_TEXTE)
PyrScreen.blit(text2,(WHERE_TEXTE_X,WHERE_TEXTE_Y+50)).bottomleft
PyrScreen.blit(GameSnap,WHERE_SNAP)
PyrScreen.blit(GameSys,WHERE_SYS)
PyrScreen.blit(GameWheel,WHERE_WHEEL)
pygame.display.flip()
KeepInGame = 1
FrontEndGame = 1
ExitStatus = 0
T1=0
while KeepInGame == 1:
for event in pygame.event.get():
#T1=(time.time())
T1=strftime("%H%M%S", gmtime())
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),WHERE_TEXTE)
if JOY_TEST == 1 :
if event.type == JOYAXISMOTION:
if event.axis == 0 and event.value > 0:
CptGame = CptGame + 1
if event.axis == 0 and event.value < 0:
CptGame = CptGame - 1
if event.axis == 1 and event.value < 0:
ROM_L1 = GamePerEmu[CptGame][0][0]
ROM_L2 = ROM_L1
while (ROM_L1 == ROM_L2):
CptGame = CptGame + 1
if CptGame >= MaxForThisEmu:
CptGame=0
break
ROM_L1 = GamePerEmu[CptGame][0][0]
if event.axis == 1 and event.value > 0:
ROM_L1 = GamePerEmu[CptGame][0][0]
ROM_L2 = ROM_L1
while (ROM_L1 == ROM_L2):
CptGame = CptGame - 1
if CptGame <= -MaxForThisEmu:
CptGame=0
break
ROM_L1 = GamePerEmu[CptGame][0][0]
if event.type == JOYBUTTONDOWN:
if event.button == BTN_J1_2:
FrontEndGame = 0
ExitStatus = 0
KeepInGame = 0
FrontEndEmu = 1
CptEmu = 0
if event.button == BTN_J1_1:
FrontEndGame = 0
FrontEndGame = 1
ExitStatus = 0
KeepInGame= 1
FrontEndEmu = 0
GameChoose = GamePerEmu[CptGame][0]
DefLaunchSomething(EmuChoose,GameChoose,AllMedia,font,Resolution,BlackImg,WHERE_TEXTE,SIZE_TEXTE,Background,Orientation)
pygame.mixer.Sound(BeepFileGame).play()
if JOY_TEST == 0 :
if event.type == KEYDOWN:
if event.key == LEFT_J1:
# if event.key == K_LEFT:
CptGame = CptGame - 1
# if event.key == K_RIGHT:
if event.key == RIGHT_J1:
CptGame = CptGame + 1
# if event.key == K_UP:
if event.key == UP_J1:
ROM_L1 = GamePerEmu[CptGame][0][0]
ROM_L2 = ROM_L1
while (ROM_L1 == ROM_L2):
CptGame = CptGame + 1
if CptGame >= MaxForThisEmu:
CptGame=0
break
ROM_L1 = GamePerEmu[CptGame][0][0]
if event.key == DOWN_J1:
# if event.key == K_DOWN:
ROM_L1 = GamePerEmu[CptGame][0][0]
ROM_L2 = ROM_L1
while (ROM_L1 == ROM_L2):
CptGame = CptGame - 1
if CptGame <= -MaxForThisEmu:
CptGame=0
break
ROM_L1 = GamePerEmu[CptGame][0][0]
# LAUNCH GAME
if event.key == BTN_J1_1:
# if event.key == K_d:
FrontEndGame = 1
ExitStatus = 0
KeepInGame= 1
FrontEndEmu = 0
GameChoose = GamePerEmu[CptGame][0]
DefLaunchSomething(EmuChoose,GameChoose,AllMedia,font,Resolution,BlackImg,WHERE_TEXTE,SIZE_TEXTE,Background,Orientation)
###################################################
# DOWNLAOD MEDIA
# if event.key == K_f:
if event.key == BTN_J1_3:
T1=0
T2=0
DownloadGraphical(EmuChoose, GamePerEmu[CptGame][0])
PyrScreen.blit(fond, (0,0))
T1=0
T2=0
###################################################
# ESCAPE (keyboard only)
if event.key == K_ESCAPE:
FrontEndGame = 0
ExitStatus = 1
KeepInGame=0
FrontEndEmu = 0
# Back to Emu Selector
if event.key == BTN_J1_2:
# if event.key == K_e:
FrontEndGame = 0
ExitStatus = 0
KeepInGame = 0
FrontEndEmu = 1
CptEmu = 0
pygame.mixer.Sound(BeepFileGame).play()
if CptGame >= MaxForThisEmu:
CptGame = -MaxForThisEmu
if CptGame < -MaxForThisEmu:
CptGame = MaxForThisEmu -1
if MaxForThisEmu == 1:
CptGame = 0
GameSnapPath=AllMedia+EmuChoose+ "/SNAP/" + GamePerEmu[CptGame][0]+".png"
if (os.path.isfile(GameSnapPath)):
GameSnap=pygame.transform.scale(pygame.image.load(GameSnapPath).convert_alpha(),SIZE_SNAP_CONVERT)
else:
GameSnapPath=AllMedia+"/no_snap.png"
GameWheelPath=AllMedia+EmuChoose+ "/WHEEL/" + GamePerEmu[CptGame][0]+".png"
if (os.path.isfile(GameWheelPath)):
GameWheel=pygame.transform.scale(pygame.image.load(GameWheelPath).convert_alpha(),SIZE_WHEEL_CONVERT)
else:
GameWheelPath=AllMedia+"/no_wheel.png"
GameWheel=pygame.transform.scale(pygame.image.load(GameWheelPath).convert_alpha(),SIZE_WHEEL_CONVERT)
GameSnap=pygame.transform.scale(pygame.image.load(GameSnapPath).convert_alpha(),SIZE_SNAP_CONVERT)
FILE_INFO=AllMedia+EmuChoose+ "/DOCS/" + GamePerEmu[CptGame][0]+".txt"
if os.path.isfile(FILE_INFO):
FILE_DOC = open(FILE_INFO,"r")
text1 = FILE_DOC.read()
LPLUS=0
LPLUS=LPLUS + (font_size+3)
WHERE_TEXTE=(WHERE_TEXTE_X,WHERE_TEXTE_Y)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),(WHERE_TEXTE))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),WHERE_TEXTE)
for ligne in text1.splitlines():
ligne=ligne[0:max_carac]
x,y = PyrScreen.blit(font.render(ligne,1,pygame.Color("red")),(WHERE_TEXTE_X,WHERE_TEXTE_Y+LPLUS)).bottomleft
LPLUS=LPLUS + (font_size+1)
if ((WHERE_TEXTE_Y + LPLUS) > (SIZE_TEXTE_H*3 +(UNIT_H*2))):
break
FILE_DOC.close()
else:
text1 = "No DATA File : " + GamePerEmu[CptGame][0]
text2 = font.render(text1, True, pygame.Color("red"))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE_W,SIZE_TEXTE_H)),((WHERE_TEXTE_X,WHERE_TEXTE_Y)))
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_TEXTE)),WHERE_TEXTE)
PyrScreen.blit(text2,(WHERE_TEXTE_X,WHERE_TEXTE_Y+50)).bottomleft
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_SNAP_CONVERT)),WHERE_SNAP)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_SYS_CONVERT)),WHERE_SYS)
PyrScreen.blit(pygame.transform.scale(pygame.image.load(BlackImg).convert(),(SIZE_WHEEL_CONVERT)),WHERE_WHEEL)
PyrScreen.blit(GameSnap,WHERE_SNAP)
PyrScreen.blit(GameSys,WHERE_SYS)
PyrScreen.blit(GameWheel,WHERE_WHEEL)
if T1 == 0:
T1=strftime("%H%M%S", gmtime())
TDiff=int(strftime("%H%M%S", gmtime())) - int(T1)
GameVideoPath=AllMedia+EmuChoose+ "/VIDEO/" + GamePerEmu[CptGame][0]+".mpg"
if os.path.isfile(GameVideoPath):
if TDiff > 2 and Sys != "Darwin":
FPS = 60
pygame.mixer.quit()
movie = pygame.movie.Movie(GameVideoPath)
movie.set_volume(0.8)
#VIDE FULLSCREEN
#mrect = pygame.Rect((0,0),Resolution)
mrect = pygame.Rect(WHERE_SNAP,SIZE_SNAP_CONVERT)
movie.set_display(PyrScreen,mrect)
movie.play()
while movie.get_busy():
evt = pygame.event.wait()
if any( [ evt.type == JOYAXISMOTION,evt.type == JOYBUTTONDOWN, evt.type == QUIT,evt.type == KEYDOWN] ):
T1=0
T2=0
movie.stop()
movie=None
pygame.mixer.init()
break
pygame.display.flip()
pygame.display.flip()
return FrontEndGame,ExitStatus,FrontEndEmu,CptEmu