12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # coding: utf-8
- from sandbox.tile.user_action import UserAction
- from synergine2.terminals import TerminalPackage
- from synergine2_cocos2d.gl import draw_line
- from synergine2_cocos2d.interaction import Interaction
- from synergine2_xyz.move.simulation import RequestMoveBehaviour
-
-
- class BaseMoveActorInteraction(Interaction):
- gui_action = None
- color = None
- request_move_behaviour_class = RequestMoveBehaviour
-
- def draw_pending(self) -> None:
- for actor in self.layer_manager.edit_layer.selection:
- grid_position = self.layer_manager.grid_manager.get_grid_position(actor.position)
- pixel_position = self.layer_manager.grid_manager.get_pixel_position_of_grid_position(grid_position)
-
- draw_line(
- self.layer_manager.scrolling_manager.world_to_screen(*pixel_position),
- self.layer_manager.edit_layer.screen_mouse,
- self.color,
- )
-
- def get_package_for_terminal(self) -> TerminalPackage:
- # TODO: FinishMoveEvent ?
- actions = []
- mouse_grid_position = self.layer_manager.grid_manager.get_grid_position(
- self.layer_manager.scrolling_manager.screen_to_world(
- *self.layer_manager.edit_layer.screen_mouse,
- )
- )
-
- for actor in self.layer_manager.edit_layer.selection:
- actions.append((
- self.request_move_behaviour_class, {
- 'subject_id': actor.subject.id,
- 'move_to': mouse_grid_position,
- 'gui_action': self.gui_action,
- }
- ))
-
- return TerminalPackage(
- simulation_actions=actions,
- )
-
-
- class MoveActorInteraction(BaseMoveActorInteraction):
- gui_action = UserAction.ORDER_MOVE
- color = (0, 0, 255)
-
-
- class MoveFastActorInteraction(BaseMoveActorInteraction):
- gui_action = UserAction.ORDER_MOVE_FAST
- color = (72, 244, 66)
-
-
- class MoveCrawlActorInteraction(BaseMoveActorInteraction):
- gui_action = UserAction.ORDER_MOVE_CRAWL
- color = (235, 244, 66)
|