| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2019-06-05 17:52:58 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2019-06-05 17:52:58 +0200 | 
| commit | 9e7dcabc164eacb7024387e060623993b48c60b4 (patch) | |
| tree | 50df2a6143eb2eca18b2588383630c81bb11c1b6 /src/battle/struct/btl_action.erl | |
| parent | 1afb69a11b0e291c7bfd6c24bdd8e55742e61889 (diff) | |
[Broken] ...
Diffstat (limited to 'src/battle/struct/btl_action.erl')
| -rw-r--r-- | src/battle/struct/btl_action.erl | 85 | 
1 files changed, 51 insertions, 34 deletions
| diff --git a/src/battle/struct/btl_action.erl b/src/battle/struct/btl_action.erl index 174a063..50606ac 100644 --- a/src/battle/struct/btl_action.erl +++ b/src/battle/struct/btl_action.erl @@ -8,8 +8,8 @@     move,     {        actor_ix :: non_neg_integer(), -      path :: list(shr_direction:enum()) -      movement_points :: non_neg_integer() +      path :: list(shr_direction:enum()), +      movement_points :: (non_neg_integer() | -1)     }  ). @@ -38,12 +38,12 @@        | 'attack'        | 'nothing'     ). +  -opaque type() ::     (        #move{}        | #switch_weapon{}        | #attack{} -      | #attack_of_opportunity{}     ).  -export_type([category/0, type/0]). @@ -54,7 +54,7 @@  -export  (     [ -      from_map_marker/2, +      from_map_marker/3,        maybe_decode_move/2,        maybe_decode_weapon_switch/2,        maybe_decode_attack/2, @@ -65,13 +65,14 @@  -export  (     [ -      new_interrupted_move/2 +      new_move/3     ]  ).  -export  (     [ +      get_is_opportunistic/1,        get_path/1,        get_movement_points/1,        get_target_index/1, @@ -97,7 +98,14 @@ maybe_decode_move (_CharacterIX, []) -> [];  maybe_decode_move (CharacterIX, PathInBinary) ->     Path = lists:map(fun shr_direction:decode/1, PathInBinary), -   [#move{ actor_ix = CharacterIX, path = Path }]. +   [ +      #move +      { +         actor_ix = CharacterIX, +         path = Path, +         movement_points = -1 +      } +   ].  -spec maybe_decode_attack     ( @@ -107,7 +115,14 @@ maybe_decode_move (CharacterIX, PathInBinary) ->     -> list(type()).  maybe_decode_attack (_CharacterIX, TargetIX) when (TargetIX < 0) -> [];  maybe_decode_attack (CharacterIX, TargetIX) -> -   [#attack{ actor_ix = CharacterIX, target_ix = TargetIX }]. +   [ +      #attack +      { +         actor_ix = CharacterIX, +         target_ix = TargetIX, +         is_opportunistic = false +      } +   ].  -spec maybe_decode_weapon_switch     ( @@ -128,31 +143,23 @@ can_follow (move, attack) -> true;  can_follow (_, _) -> false.  -spec get_path (type()) -> list(shr_direction:type()). -get_path (Action) when is_record(Action, move) -> -   Action#move.path; -get_path (Action) when is_record(Action, interrupted_move) -> -   Action#interrupted_move.path; +get_path (Action) when is_record(Action, move) -> Action#move.path;  get_path (_) ->     []. --spec get_movement_points (type()) -> non_neg_integer(). -get_movement_points (Action) when is_record(Action, interrupted_move) -> -   Action#interrupted_move.movement_points; -get_movement_points (_) -> 0. +-spec get_movement_points (type()) -> (non_neg_integer() | -1). +get_movement_points (Action) when is_record(Action, move) -> +   Action#move.movement_points; +get_movement_points (_) -> -1. --spec get_target_index (type()) -> non_neg_integer(). +-spec get_target_index (type()) -> (non_neg_integer() | -1).  get_target_index (Action) when is_record(Action, attack) ->     Action#attack.target_ix; -get_target_index (Action) when is_record(Action, attack_of_opportunity) -> -   Action#attack_of_opportunity.target_ix; -get_target_index (_) -> -   0. +get_target_index (_) -> -1.  -spec get_actor_index (type()) -> (non_neg_integer() | -1).  get_actor_index (Action) when is_record(Action, attack) ->     Action#attack.actor_ix; -get_actor_index (Action) when is_record(Action, attack_of_opportunity) -> -   Action#attack_of_opportunity.actor_ix;  get_actor_index (Action) when is_record(Action, move) ->     Action#move.actor_ix;  get_actor_index (Action) when is_record(Action, switch_weapon) -> @@ -160,37 +167,47 @@ get_actor_index (Action) when is_record(Action, switch_weapon) ->  get_actor_index (_) ->     -1. --spec new_interrupted_move +-spec get_is_opportunistic (type()) -> boolean(). +get_is_opportunistic (Action) when is_record(Action, attack) -> +   Action#attack.is_opportunistic; +get_is_opportunistic (_) -> false. + +-spec new_move     ( +      non_neg_integer(),        list(shr_direction:type()), -      non_neg_integer() +      (non_neg_integer() | -1)     )     -> type(). -new_interrupted_move (Path, MovementPoints) -> -   #interrupted_move{ path = Path, movement_points = MovementPoints }. +new_move (ActorIX, Path, MovementPoints) -> +   #move +   { +      actor_ix = ActorIX, +      path = Path, +      movement_points = MovementPoints +   }.  -spec get_category (type()) -> category().  get_category (Action) when is_record(Action, attack) -> attack;  get_category (Action) when is_record(Action, move) -> move; -get_category (Action) when is_record(Action, switch_weapon) -> switch_weapon; -get_category (Action) when is_record(Action, interrupted_move) -> -   interrupted_move; -get_category (Action) when is_record(Action, attack_of_opportunity) -> -  attack_of_opportunity. +get_category (Action) when is_record(Action, switch_weapon) -> switch_weapon.  -spec from_map_marker     ( +      non_neg_integer(),        btl_character:type(),        shr_map_marker:type()     )     -> list(type()). -from_map_marker (_Character, Marker) -> +from_map_marker (CharacterIX, _Character, Marker) ->     case shr_map_marker:get_category(Marker) of        matk ->           [ -            #attack_of_opportunity +            #attack              { -               target_ix = shr_map_marker:get_character_index(Marker) +               target_ix = CharacterIX, +               actor_ix = shr_map_marker:get_character_index(Marker), +               is_opportunistic = true              }           ]; | 


