base.py 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # coding: utf-8
  2. from opencombat.const import COLLECTION_ALIVE
  3. from opencombat.const import COUNTRY_USSR
  4. from opencombat.const import FLAG_USSR
  5. from opencombat.const import FLAG_DE
  6. from opencombat.const import SIDE_ALLIES
  7. from opencombat.const import SIDE_AXIS
  8. from opencombat.const import COUNTRY_DE
  9. from opencombat.const import USSR_COLOR
  10. from opencombat.const import DE_COLOR
  11. from opencombat.const import SIDE
  12. from opencombat.const import FLAG
  13. from opencombat.const import SELECTION_COLOR_RGB
  14. from opencombat.simulation.physics import TilePhysics
  15. from synergine2.config import Config
  16. from synergine2.simulation import SubjectBehaviour
  17. from synergine2_xyz.physics import Physics
  18. from synergine2_xyz.simulation import XYZSimulation
  19. from synergine2_xyz.subjects import XYZSubject
  20. from synergine2_xyz.subjects import XYZSubjects
  21. class TileStrategySimulation(XYZSimulation):
  22. behaviours_classes = [
  23. ]
  24. @classmethod
  25. def get_default_properties_for_country(cls, country: str) -> dict:
  26. if country == COUNTRY_USSR:
  27. return {
  28. SELECTION_COLOR_RGB: USSR_COLOR,
  29. FLAG: FLAG_USSR,
  30. SIDE: SIDE_ALLIES,
  31. }
  32. elif country == COUNTRY_DE:
  33. return {
  34. SELECTION_COLOR_RGB: DE_COLOR,
  35. FLAG: FLAG_DE,
  36. SIDE: SIDE_AXIS,
  37. }
  38. raise NotImplementedError('Unknown country "{}"'.format(country))
  39. def __init__(
  40. self,
  41. config: Config,
  42. map_file_path: str,
  43. ) -> None:
  44. self.map_file_path = map_file_path
  45. super().__init__(config)
  46. def create_physics(self) -> Physics:
  47. return TilePhysics(
  48. config=self.config,
  49. map_file_path=self.map_file_path,
  50. )
  51. class TileStrategySubjects(XYZSubjects):
  52. pass
  53. class BaseSubject(XYZSubject):
  54. pass
  55. class AliveSubjectBehaviour(SubjectBehaviour):
  56. def is_terminated(self) -> bool:
  57. return COLLECTION_ALIVE not in self.subject.collections