Skip to content
This repository has been archived by the owner on Jun 10, 2021. It is now read-only.

Commit

Permalink
Merge 7d14642 into 5cc566e
Browse files Browse the repository at this point in the history
  • Loading branch information
buxx committed Nov 21, 2017
2 parents 5cc566e + 7d14642 commit 5d59af7
Show file tree
Hide file tree
Showing 21 changed files with 751 additions and 73 deletions.
41 changes: 28 additions & 13 deletions sandbox/tile/gui/base.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,36 @@
# coding: utf-8

from pyglet.window import key
from cocos.actions import MoveTo as BaseMoveTo
from sandbox.tile.gui.move import MoveActorInteraction
from sandbox.tile.gui.move import MoveFastActorInteraction
from sandbox.tile.gui.move import MoveCrawlActorInteraction
from synergine2_cocos2d.layer import LayerManager
from synergine2_xyz.move.simulation import FinishMoveEvent
from synergine2_xyz.move.simulation import StartMoveEvent

from synergine2_xyz.utils import get_angle
from cocos.actions import MoveTo as BaseMoveTo
from sandbox.tile.simulation.physics import TilePhysics
from sandbox.tile.user_action import UserAction
from synergine2.config import Config
from synergine2.log import SynergineLogger
from synergine2.terminals import Terminal
from synergine2_cocos2d.gui import TMXGui
from synergine2_cocos2d.gui import EditLayer as BaseEditLayer
from synergine2_cocos2d.actions import MoveTo
from synergine2_cocos2d.animation import Animate
# TODO NOW: MOVE
from synergine2_cocos2d.animation import ANIMATION_CRAWL
from synergine2_cocos2d.animation import ANIMATION_WALK

from sandbox.tile.user_action import UserAction
from synergine2_cocos2d.animation import Animate
from synergine2_cocos2d.gui import EditLayer as BaseEditLayer
from synergine2_cocos2d.gui import TMXGui
from synergine2_cocos2d.layer import LayerManager
from synergine2_xyz.move.simulation import FinishMoveEvent
from synergine2_xyz.move.simulation import StartMoveEvent
from synergine2_xyz.physics import Matrixes
from synergine2_xyz.utils import get_angle


class EditLayer(BaseEditLayer):
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.matrixes = Matrixes()
self.physics = TilePhysics(
self.config,
map_file_path='sandbox/tile/maps/003/003.tmx', # FIXME: HARDCODED
)

def _on_key_press(self, k, m):
if self.selection:
if k == key.M:
Expand All @@ -32,6 +39,8 @@ def _on_key_press(self, k, m):
self.user_action_pending = UserAction.ORDER_MOVE_FAST
if k == key.C:
self.user_action_pending = UserAction.ORDER_MOVE_CRAWL
if k == key.F:
self.user_action_pending = UserAction.ORDER_FIRE


class TileLayerManager(LayerManager):
Expand Down Expand Up @@ -73,9 +82,15 @@ def __init__(
self.move_crawl_duration_ref = float(self.config.resolve('game.move.crawl_ref_time'))

def before_run(self) -> None:
from sandbox.tile.gui.move import MoveActorInteraction
from sandbox.tile.gui.move import MoveFastActorInteraction
from sandbox.tile.gui.move import MoveCrawlActorInteraction
from sandbox.tile.gui.fire import FireActorInteraction

self.layer_manager.interaction_manager.register(MoveActorInteraction, self.layer_manager)
self.layer_manager.interaction_manager.register(MoveFastActorInteraction, self.layer_manager)
self.layer_manager.interaction_manager.register(MoveCrawlActorInteraction, self.layer_manager)
self.layer_manager.interaction_manager.register(FireActorInteraction, self.layer_manager)

def set_subject_position(self, event: FinishMoveEvent):
actor = self.layer_manager.subject_layer.subjects_index[event.subject_id]
Expand Down
67 changes: 67 additions & 0 deletions sandbox/tile/gui/fire.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# coding: utf-8
import typing

from sandbox.tile.simulation.fire import RequestFireBehaviour
from synergine2_cocos2d.interaction import BaseActorInteraction
from sandbox.tile.user_action import UserAction
from synergine2.simulation import SimulationBehaviour
from synergine2_cocos2d.actor import Actor
from synergine2_cocos2d.gl import draw_line


class BaseFireActorInteraction(BaseActorInteraction):
gui_action = None
color = None
not_visible_color = (0, 0, 0)
request_move_behaviour_class = RequestFireBehaviour

def draw_pending(self) -> None:
for actor in self.layer_manager.edit_layer.selection:
actor_grid_position = self.layer_manager.grid_manager.get_grid_position(actor.position)
actor_pixel_position = self.layer_manager.grid_manager.get_pixel_position_of_grid_position(
actor_grid_position,
)
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,
)
)
draw_to_pixel = self.layer_manager.edit_layer.screen_mouse

obstacle_grid_position = self.layer_manager.edit_layer.physics.get_visibility_obstacle(
subject=actor.subject,
to_position=mouse_grid_position,
matrixes=self.layer_manager.edit_layer.matrixes,
matrix_name='visibility',
opacity_property_name='opacity',
)
if obstacle_grid_position:
obstacle_pixel = self.layer_manager.grid_manager.get_pixel_position_of_grid_position(
obstacle_grid_position,
)
draw_to_pixel = obstacle_pixel

draw_line(
obstacle_pixel,
self.layer_manager.edit_layer.screen_mouse,
self.not_visible_color,
)

draw_line(
self.layer_manager.scrolling_manager.world_to_screen(*actor_pixel_position),
draw_to_pixel,
self.color,
)

def get_behaviour(self, actor: Actor, mouse_grid_position) -> typing.Tuple[typing.Type[SimulationBehaviour], dict]:
raise NotImplementedError()
return self.request_move_behaviour_class, {
'subject_id': actor.subject.id,
'move_to': mouse_grid_position,
'gui_action': self.gui_action,
}


class FireActorInteraction(BaseFireActorInteraction):
gui_action = UserAction.ORDER_FIRE
color = (255, 0, 0)
36 changes: 12 additions & 24 deletions sandbox/tile/gui/move.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# coding: utf-8
import typing

from synergine2_cocos2d.interaction import BaseActorInteraction
from sandbox.tile.user_action import UserAction
from synergine2.terminals import TerminalPackage
from synergine2.simulation import SimulationBehaviour
from synergine2_cocos2d.actor import Actor
from synergine2_cocos2d.gl import draw_line
from synergine2_cocos2d.interaction import Interaction
from synergine2_xyz.move.simulation import RequestMoveBehaviour


class BaseMoveActorInteraction(Interaction):
class BaseMoveActorInteraction(BaseActorInteraction):
gui_action = None
color = None
request_move_behaviour_class = RequestMoveBehaviour
Expand All @@ -22,27 +25,12 @@ def draw_pending(self) -> None:
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,
)
def get_behaviour(self, actor: Actor, mouse_grid_position) -> typing.Tuple[typing.Type[SimulationBehaviour], dict]:
return self.request_move_behaviour_class, {
'subject_id': actor.subject.id,
'move_to': mouse_grid_position,
'gui_action': self.gui_action,
}


class MoveActorInteraction(BaseMoveActorInteraction):
Expand Down
Loading

0 comments on commit 5d59af7

Please sign in to comment.