state.py 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import os
  2. import time
  3. import typing
  4. from synergine2.config import Config
  5. from synergine2.simulation import SimulationBehaviour
  6. from synergine2.simulation import Event
  7. from synergine2.simulation import Simulation
  8. from opencombat.state import StateConstructorBuilder
  9. class SaveStateSimulationAction(SimulationBehaviour):
  10. def __init__(
  11. self,
  12. config: Config,
  13. simulation: Simulation,
  14. ):
  15. super().__init__(config, simulation)
  16. self.state_dumper = StateConstructorBuilder(
  17. config,
  18. simulation,
  19. ).get_state_dumper()
  20. self.state_save_dir = self.config.resolve('_runtime.state_save_dir')
  21. def run(self, data):
  22. pass
  23. def action(self, data) -> typing.List[Event]:
  24. state_file_path = os.path.join(
  25. self.state_save_dir,
  26. 'state_{}.xml'.format(time.time())
  27. )
  28. with open(state_file_path, 'w+') as file:
  29. file.write(self.state_dumper.get_state_dump())
  30. return []
  31. @classmethod
  32. def merge_data(cls, new_data, start_data=None):
  33. pass