run.py 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # coding: utf-8
  2. import argparse
  3. import logging
  4. from random import seed
  5. from synergine2.log import get_default_logger
  6. from synergine2.config import Config
  7. from synergine2_cocos2d.const import SELECTION_COLOR_RGB
  8. from synergine2_cocos2d.util import get_map_file_path_from_dir
  9. from synergine2.core import Core
  10. from synergine2.cycle import CycleManager
  11. from synergine2.terminals import TerminalManager
  12. from opencombat.const import FLAG, SIDE
  13. from opencombat.const import FLAG_DE
  14. from opencombat.const import DE_COLOR
  15. from opencombat.const import URSS_COLOR
  16. from opencombat.const import FLAG_URSS
  17. from opencombat.simulation.subject import ManSubject
  18. from opencombat.simulation.subject import TankSubject
  19. from opencombat.simulation.base import TileStrategySimulation
  20. from opencombat.simulation.base import TileStrategySubjects
  21. from opencombat.state import StateLoaderBuilder
  22. from opencombat.terminal.base import CocosTerminal
  23. def main(
  24. map_dir_path: str,
  25. seed_value: int=None,
  26. state_file_path: str=None,
  27. ):
  28. if seed_value is not None:
  29. seed(seed_value)
  30. config = Config()
  31. config.load_yaml('config.yaml')
  32. level = logging.getLevelName(config.resolve('global.logging_level', 'ERROR'))
  33. logger = get_default_logger(level=level)
  34. map_file_path = get_map_file_path_from_dir(map_dir_path)
  35. simulation = TileStrategySimulation(config, map_file_path=map_file_path)
  36. subjects = TileStrategySubjects(simulation=simulation)
  37. if state_file_path:
  38. state_loader_builder = StateLoaderBuilder(config)
  39. state_loader = state_loader_builder.get_state_loader(state_file_path)
  40. subjects.extend(state_loader.get_subjects())
  41. # for position in ((10, 2), (11, 3), (11, 4), (12, 5),):
  42. # man = ManSubject(
  43. # config=config,
  44. # simulation=simulation,
  45. # position=position,
  46. # properties={
  47. # SELECTION_COLOR_RGB: DE_COLOR,
  48. # FLAG: FLAG_DE,
  49. # SIDE: 'AXIS',
  50. # }
  51. # )
  52. # subjects.append(man)
  53. #
  54. # for position in ((30, 15), (31, 16), (32, 17), (33, 18),):
  55. # man = ManSubject(
  56. # config=config,
  57. # simulation=simulation,
  58. # position=position,
  59. # properties={
  60. # SELECTION_COLOR_RGB: URSS_COLOR,
  61. # FLAG: FLAG_URSS,
  62. # SIDE: 'ALLIES',
  63. # }
  64. # )
  65. # subjects.append(man)
  66. #
  67. # for position in ((38, 24),):
  68. # man = TankSubject(
  69. # config=config,
  70. # simulation=simulation,
  71. # position=position,
  72. # properties={
  73. # SELECTION_COLOR_RGB: URSS_COLOR,
  74. # FLAG: FLAG_URSS,
  75. # SIDE: 'ALLIES',
  76. # }
  77. # )
  78. # subjects.append(man)
  79. simulation.subjects = subjects
  80. core = Core(
  81. config=config,
  82. simulation=simulation,
  83. cycle_manager=CycleManager(
  84. config=config,
  85. simulation=simulation,
  86. ),
  87. terminal_manager=TerminalManager(
  88. config=config,
  89. terminals=[CocosTerminal(
  90. config,
  91. asynchronous=False,
  92. map_dir_path=map_dir_path,
  93. )]
  94. ),
  95. cycles_per_seconds=1 / config.resolve('core.cycle_duration'),
  96. )
  97. core.run()
  98. if __name__ == '__main__':
  99. parser = argparse.ArgumentParser(description='Run TileStrategy')
  100. parser.add_argument('map_dir_path', help='map directory path')
  101. parser.add_argument('--seed', dest='seed', default=None)
  102. args = parser.parse_args()
  103. main(args.map_dir_path, seed_value=args.seed)