run.py 3.0KB

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