base.py 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # coding: utf-8
  2. import pyglet
  3. from cocos.director import event_loop
  4. from synergine2.terminals import TerminalPackage
  5. from opencombat.simulation.event import NewVisibleOpponent
  6. from opencombat.simulation.event import FireEvent
  7. from opencombat.simulation.event import DieEvent
  8. from opencombat.simulation.event import NoLongerVisibleOpponent
  9. from opencombat.simulation.physics import TilePhysics
  10. from opencombat.simulation.subject import TileSubject as ManSubject
  11. from opencombat.gui.actor import Man as ManActor
  12. from synergine2_cocos2d.terminal import GameTerminal
  13. from synergine2_cocos2d.util import get_map_file_path_from_dir
  14. from synergine2_xyz.move.simulation import FinishMoveEvent
  15. from synergine2_xyz.move.simulation import StartMoveEvent
  16. class CocosTerminal(GameTerminal):
  17. main_process = True
  18. subscribed_events = [
  19. FinishMoveEvent,
  20. StartMoveEvent,
  21. NewVisibleOpponent,
  22. NoLongerVisibleOpponent,
  23. FireEvent,
  24. DieEvent,
  25. ]
  26. def __init__(self, *args, asynchronous: bool, map_dir_path: str, **kwargs):
  27. super().__init__(*args, **kwargs)
  28. self.asynchronous = asynchronous
  29. map_file_path = get_map_file_path_from_dir(map_dir_path)
  30. self.physics = TilePhysics(
  31. self.config,
  32. map_file_path=map_file_path,
  33. )
  34. self.map_dir_path = map_dir_path
  35. def run(self):
  36. from opencombat.gui.base import Game
  37. from synergine2_cocos2d.gui import SubjectMapper
  38. self.gui = Game(
  39. self.config,
  40. self,
  41. physics=self.physics,
  42. map_dir_path=self.map_dir_path,
  43. )
  44. @event_loop.event
  45. def on_window_close(window):
  46. event_loop.exit()
  47. self.send(TerminalPackage(sigterm=True))
  48. self.core_process.join(timeout=120)
  49. return pyglet.event.EVENT_HANDLED
  50. # TODO: Defind on some other place ?
  51. self.gui.subject_mapper_factory.register_mapper(
  52. ManSubject,
  53. SubjectMapper(self.config, ManActor),
  54. )
  55. self.gui.run()