run.py 2.9KB

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