mechanism.py 804B

12345678910111213141516171819202122232425
  1. # coding: utf-8
  2. import typing
  3. from synergine2_xyz.subjects import XYZSubject
  4. from synergine2_xyz.visible.simulation import VisibleMechanism
  5. from synergine2.simulation import disable_when
  6. from synergine2.simulation import config_value
  7. from opencombat.const import SIDE
  8. from opencombat.const import COLLECTION_ALIVE
  9. class OpponentVisibleMechanism(VisibleMechanism):
  10. from_collection = COLLECTION_ALIVE
  11. @disable_when(config_value('_runtime.placement_mode'))
  12. def run(self) -> dict:
  13. return super().run()
  14. def reduce_subjects(self, subjects: typing.List[XYZSubject]) -> typing.Iterator[XYZSubject]:
  15. def filter_subject(subject: XYZSubject) -> bool:
  16. return self.subject.properties[SIDE] != subject.properties[SIDE]
  17. return filter(filter_subject, subjects)