75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
import pygame
|
|
from pygame.locals import *
|
|
|
|
from GameChild import GameChild
|
|
from Mainloop import Mainloop
|
|
from Audio import Audio
|
|
from Display import Display
|
|
from Configuration import Configuration
|
|
from Delegate import Delegate
|
|
from Input import Input
|
|
from ScreenGrabber import ScreenGrabber
|
|
from Profile import Profile
|
|
from VideoRecorder import VideoRecorder
|
|
from Interpolator import Interpolator
|
|
from TimeFilter import TimeFilter
|
|
|
|
class Game(GameChild):
|
|
|
|
resource_path = None
|
|
|
|
def __init__(self, config_rel_path=None, type_declarations=None):
|
|
self.profile = Profile(self)
|
|
GameChild.__init__(self)
|
|
self.print_debug(pygame.version.ver)
|
|
self.config_rel_path = config_rel_path
|
|
self.type_declarations = type_declarations
|
|
self.set_configuration()
|
|
pygame.init()
|
|
self.set_children()
|
|
self.subscribe(self.end, QUIT)
|
|
self.subscribe(self.end)
|
|
self.delegate.enable()
|
|
|
|
def set_configuration(self):
|
|
self.configuration = Configuration(self.config_rel_path,
|
|
self.resource_path,
|
|
self.type_declarations)
|
|
|
|
def set_children(self):
|
|
self.time_filter = TimeFilter(self)
|
|
self.delegate = Delegate(self)
|
|
self.display = Display(self)
|
|
self.mainloop = Mainloop(self)
|
|
self.input = Input(self)
|
|
self.audio = Audio(self)
|
|
self.screen_grabber = ScreenGrabber(self)
|
|
self.video_recorder = VideoRecorder(self)
|
|
self.interpolator = Interpolator(self)
|
|
|
|
def frame(self):
|
|
self.time_filter.update()
|
|
self.delegate.dispatch()
|
|
if not self.interpolator.is_gui_active():
|
|
self.update()
|
|
else:
|
|
self.interpolator.gui.update()
|
|
self.video_recorder.update()
|
|
|
|
def run(self):
|
|
self.mainloop.run()
|
|
|
|
def update(self):
|
|
pass
|
|
|
|
def blit(self, source, destination, area=None, special_flags=0):
|
|
self.get_screen().blit(source, destination, area, special_flags)
|
|
|
|
def get_rect(self):
|
|
return self.get_screen().get_rect()
|
|
|
|
def end(self, evt):
|
|
if evt.type == QUIT or self.delegate.compare(evt, "quit"):
|
|
self.mainloop.stop()
|
|
self.profile.end()
|