run.py 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 TileSubject
  18. from opencombat.simulation.base import TileStrategySimulation
  19. from opencombat.simulation.base import TileStrategySubjects
  20. from opencombat.terminal.base import CocosTerminal
  21. def main(map_dir_path: str, seed_value: int=None):
  22. if seed_value is not None:
  23. seed(seed_value)
  24. config = Config()
  25. config.load_yaml('config.yaml')
  26. level = logging.getLevelName(config.resolve('global.logging_level', 'ERROR'))
  27. logger = get_default_logger(level=level)
  28. map_file_path = get_map_file_path_from_dir(map_dir_path)
  29. simulation = TileStrategySimulation(config, map_file_path=map_file_path)
  30. subjects = TileStrategySubjects(simulation=simulation)
  31. for position in ((10, 2), (11, 3), (11, 4), (12, 5),):
  32. man = TileSubject(
  33. config=config,
  34. simulation=simulation,
  35. position=position,
  36. properties={
  37. SELECTION_COLOR_RGB: DE_COLOR,
  38. FLAG: FLAG_DE,
  39. SIDE: 'AXIS',
  40. }
  41. )
  42. subjects.append(man)
  43. for position in ((30, 15), (31, 16), (32, 17), (33, 18),):
  44. man = TileSubject(
  45. config=config,
  46. simulation=simulation,
  47. position=position,
  48. properties={
  49. SELECTION_COLOR_RGB: URSS_COLOR,
  50. FLAG: FLAG_URSS,
  51. SIDE: 'ALLIES',
  52. }
  53. )
  54. subjects.append(man)
  55. simulation.subjects = subjects
  56. core = Core(
  57. config=config,
  58. logger=logger,
  59. simulation=simulation,
  60. cycle_manager=CycleManager(
  61. config=config,
  62. logger=logger,
  63. simulation=simulation,
  64. ),
  65. terminal_manager=TerminalManager(
  66. config=config,
  67. logger=logger,
  68. terminals=[CocosTerminal(
  69. config,
  70. logger,
  71. asynchronous=False,
  72. map_dir_path=map_dir_path,
  73. )]
  74. ),
  75. cycles_per_seconds=1 / config.resolve('core.cycle_duration'),
  76. )
  77. core.run()
  78. if __name__ == '__main__':
  79. parser = argparse.ArgumentParser(description='Run TileStrategy')
  80. parser.add_argument('map_dir_path', help='map directory path')
  81. parser.add_argument('--seed', dest='seed', default=None)
  82. args = parser.parse_args()
  83. main(args.map_dir_path, seed_value=args.seed)