base.py 1.9KB

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