run.py 3.0KB

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