50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
import datetime
|
|
from game_object import GameObject
|
|
|
|
|
|
class GameManager:
|
|
|
|
_game_objects = list()
|
|
def __init__(self, screen):
|
|
|
|
self._last_update = None
|
|
self._screen = screen
|
|
self._pause = False
|
|
|
|
@property
|
|
def pause(self):
|
|
return self._pause
|
|
|
|
@pause.setter
|
|
def pause(self, pause: bool):
|
|
self._pause = pause
|
|
|
|
def update(self):
|
|
if not self._pause:
|
|
now = datetime.datetime.now()
|
|
self.__call_update(now - self._last_update)
|
|
self.__call_draw()
|
|
self._last_update = now
|
|
|
|
def __call_update(self, deltatime):
|
|
for go in GameManager._game_objects:
|
|
go.update(deltatime)
|
|
|
|
def __call_draw(self):
|
|
for go in GameManager._game_objects:
|
|
go.draw()
|
|
|
|
@classmethod
|
|
def register_game_object(cls, go: GameObject) -> bool:
|
|
if go not in cls._game_objects:
|
|
cls._game_objects.append(go)
|
|
return True
|
|
return False
|
|
|
|
@classmethod
|
|
def unregister_game_object(cls, go: GameObject) -> bool:
|
|
if go in cls._game_objects:
|
|
cls._game_objects.remove(go)
|
|
return True
|
|
return False
|