| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-05-11 18:03:50 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-05-11 18:03:50 +0200 | 
| commit | 2bea185eb9191ddaeb406cd7ff3bcef37fbc4343 (patch) | |
| tree | 31f205308a462fa82cf9a2443518f7339754a1f5 /src/battlemap | |
| parent | dfa4fa60b4fc5c96573cd75128906c0db593424d (diff) | |
Passes Dialyzer's checks once again.
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/src/game-logic/next_turn.erl | 6 | ||||
| -rw-r--r-- | src/battlemap/src/game-logic/turn_actions.erl | 64 | ||||
| -rw-r--r-- | src/battlemap/src/query/character_turn.erl | 5 | ||||
| -rw-r--r-- | src/battlemap/src/struct/attack.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/attributes.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/battle.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/battle_action.erl | 29 | ||||
| -rw-r--r-- | src/battlemap/src/struct/battlemap.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/character.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/character_instance.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/character_turn_update.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/player.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/statistics.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/tile.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/turn_result.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/struct/weapon.erl | 2 | 
16 files changed, 87 insertions, 41 deletions
| diff --git a/src/battlemap/src/game-logic/next_turn.erl b/src/battlemap/src/game-logic/next_turn.erl index ee3b59f..03d2cbf 100644 --- a/src/battlemap/src/game-logic/next_turn.erl +++ b/src/battlemap/src/game-logic/next_turn.erl @@ -25,7 +25,11 @@ set_player_turn_to_next (Battle) ->     battle:set_current_player_turn(NextPlayerTurn, Battle). --spec reset_next_player_timeline (battle:type()) -> battle:type(). +-spec reset_next_player_timeline +   ( +      battle:type() +   ) +   -> {battle:type(), player:type()}.  reset_next_player_timeline (Battle) ->     NextPlayerTurn = battle:get_current_player_turn(Battle),     NextPlayerIX = player_turn:get_player_ix(NextPlayerTurn), diff --git a/src/battlemap/src/game-logic/turn_actions.erl b/src/battlemap/src/game-logic/turn_actions.erl index 4f46771..29886a1 100644 --- a/src/battlemap/src/game-logic/turn_actions.erl +++ b/src/battlemap/src/game-logic/turn_actions.erl @@ -102,7 +102,7 @@ get_path_cost_and_destination (Data, Path) ->  -spec assert_character_can_move     (        character_turn_data:type(), -      list(direction:type()) +      non_neg_integer()     )     -> 'ok'.  assert_character_can_move (Data, Cost) -> @@ -234,20 +234,14 @@ handle_attack_sequence        AttackPlannedEffects     ). --spec handle_attack +-spec get_attack_sequence     ( -      character_turn_update:type(), -      battle_action:type() +      character_instance:type(), +      character_instance:type()     ) -   -> character_turn_update:type(). -handle_attack (Update, BattleAction) -> -   Data = character_turn_update:get_data(Update), -   Battle = character_turn_data:get_battle(Data), -   CharacterInstance = character_turn_data:get_character_instance(Data), -   CharacterInstanceIX = character_turn_data:get_character_instance_ix(Data), +   -> list(attack:step()). +get_attack_sequence (CharacterInstance, TargetCharacterInstance) ->     Character = character_instance:get_character(CharacterInstance), -   TargetIX = battle_action:get_target_ix(BattleAction), -   TargetCharacterInstance = battle:get_character_instance(TargetIX, Battle),     TargetCharacter = character_instance:get_character(TargetCharacterInstance),     Range = @@ -263,8 +257,25 @@ handle_attack (Update, BattleAction) ->     AttackingWeapon = weapon:from_id(AttackingWeaponID),     DefendingWeapon = weapon:from_id(DefendingWeaponID), +   attack:get_sequence(Range, AttackingWeapon, DefendingWeapon). + + +-spec handle_attack +   ( +      character_turn_update:type(), +      battle_action:type() +   ) +   -> character_turn_update:type(). +handle_attack (Update, BattleAction) -> +   Data = character_turn_update:get_data(Update), +   Battle = character_turn_data:get_battle(Data), +   CharacterInstance = character_turn_data:get_character_instance(Data), +   CharacterInstanceIX = character_turn_data:get_character_instance_ix(Data), +   TargetIX = battle_action:get_target_ix(BattleAction), +   TargetCharacterInstance = battle:get_character_instance(TargetIX, Battle), +     AttackSequence = -      attack:get_sequence(Range, AttackingWeapon, DefendingWeapon), +      get_attack_sequence(CharacterInstance, TargetCharacterInstance),     {AttackEffects, RemainingAttackerHealth, RemainingDefenderHealth} =        handle_attack_sequence @@ -292,20 +303,27 @@ handle_attack (Update, BattleAction) ->           ),           Battle        ), -   { -      % TODO: hide that into database_diff structs. -      [], % TODO -      [ + +   S0Data = character_turn_data:set_battle(UpdatedBattle, Data), +   S1Data = +      character_turn_data:set_character_instance +      ( +         UpdatedCharacterInstance, +         S0Data +      ), + +   S0Update = +      character_turn_update:add_to_timeline +      (           turn_result:new_character_attacked           (              CharacterInstanceIX,              TargetIX,              AttackEffects -         ) -      ], -      UpdatedBattle, -      UpdatedCharacterInstance -   }. +         ), +         Update +      ), +   character_turn_update:set_data(S1Data, S0Update).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -317,7 +335,7 @@ handle_attack (Update, BattleAction) ->  )  -> character_turn_update:type().  handle (Update, BattleAction) -> -   case battle_action:get_type(BattleAction) of +   case battle_action:get_category(BattleAction) of        move -> handle_move(Update, BattleAction);        switch_weapon -> handle_switch_weapon(Update);        attack -> handle_attack(Update, BattleAction) diff --git a/src/battlemap/src/query/character_turn.erl b/src/battlemap/src/query/character_turn.erl index b269084..0814131 100644 --- a/src/battlemap/src/query/character_turn.erl +++ b/src/battlemap/src/query/character_turn.erl @@ -119,7 +119,7 @@ finalize_character_instance (Update) ->           DisabledCharacterInstance,           Data        ), -   FinalizedData = character_turn_data:cleanup(UpdatedData), +   FinalizedData = character_turn_data:clean_battle(UpdatedData),     character_turn_update:set_data(FinalizedData, Update). @@ -164,8 +164,7 @@ update_timeline (Update) ->     )     -> character_turn_update:type().  update_data (Data, Request) -> -   EmptyUpdate = character_turn_update:new(Data), -   PostActionsUpdate = handle_actions(EmptyUpdate, Request), +   PostActionsUpdate = handle_actions(Data, Request),     PostCharacterTurnUpdate = update_timeline(PostActionsUpdate),     next_turn:update_if_needed(PostCharacterTurnUpdate). diff --git a/src/battlemap/src/struct/attack.erl b/src/battlemap/src/struct/attack.erl index bddc3cd..fed6a56 100644 --- a/src/battlemap/src/struct/attack.erl +++ b/src/battlemap/src/struct/attack.erl @@ -24,7 +24,7 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([struct/0, maybe_struct/0, step/0]). +-export_type([type/0, maybe_type/0, step/0]).  -export  ( diff --git a/src/battlemap/src/struct/attributes.erl b/src/battlemap/src/struct/attributes.erl index 0d503ee..aca91d3 100644 --- a/src/battlemap/src/struct/attributes.erl +++ b/src/battlemap/src/struct/attributes.erl @@ -18,7 +18,7 @@  -opaque type() :: #attributes{}. --export_type([struct/0]). +-export_type([type/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/battle.erl b/src/battlemap/src/struct/battle.erl index 4d5be8b..259e7f0 100644 --- a/src/battlemap/src/struct/battle.erl +++ b/src/battlemap/src/struct/battle.erl @@ -19,7 +19,7 @@  -opaque type() :: #battle{}. --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/battle_action.erl b/src/battlemap/src/struct/battle_action.erl index 2b1a89e..b7d80ee 100644 --- a/src/battlemap/src/struct/battle_action.erl +++ b/src/battlemap/src/struct/battle_action.erl @@ -29,7 +29,7 @@  -type category() :: ('move' | 'switch_weapon' | 'attack' | 'nothing').  -opaque type() :: (#move{} | #switch_weapon{} | #attack{}). --export_type([category/0, struct/0]). +-export_type([category/0, type/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -42,6 +42,15 @@     ]  ). +-export +( +   [ +      get_path/1, +      get_target_ix/1, +      get_category/1 +   ] +). +  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -62,7 +71,6 @@ decode_atk_action (JSONMap) ->  decode_swp_action (_JSONMap) ->     #switch_weapon{}. -  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -83,3 +91,20 @@ can_follow (nothing, move) -> true;  can_follow (switch_weapon, attack) -> true;  can_follow (move, attack) -> true;  can_follow (_, _) -> false. + +-spec get_path (type()) -> list(direction:type()). +get_path (Action) when is_record(Action, move) -> +   Action#move.path; +get_path (_) -> +   []. + +-spec get_target_ix (type()) -> non_neg_integer(). +get_target_ix (Action) when is_record(Action, attack) -> +   Action#attack.target_ix; +get_target_ix (_) -> +   []. + +-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. diff --git a/src/battlemap/src/struct/battlemap.erl b/src/battlemap/src/struct/battlemap.erl index e0d30a4..dc6bdc7 100644 --- a/src/battlemap/src/struct/battlemap.erl +++ b/src/battlemap/src/struct/battlemap.erl @@ -18,7 +18,7 @@  -opaque type() :: #battlemap{}. --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/character.erl b/src/battlemap/src/struct/character.erl index 7daaadd..34a44a1 100644 --- a/src/battlemap/src/struct/character.erl +++ b/src/battlemap/src/struct/character.erl @@ -22,7 +22,7 @@  -opaque type() :: #character{}. --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/character_instance.erl b/src/battlemap/src/struct/character_instance.erl index e58723e..912f2cf 100644 --- a/src/battlemap/src/struct/character_instance.erl +++ b/src/battlemap/src/struct/character_instance.erl @@ -16,7 +16,7 @@  -opaque type() :: #character_instance{}. --export_type([struct/0]). +-export_type([type/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/character_turn_update.erl b/src/battlemap/src/struct/character_turn_update.erl index a6642e4..dda09d9 100644 --- a/src/battlemap/src/struct/character_turn_update.erl +++ b/src/battlemap/src/struct/character_turn_update.erl @@ -42,7 +42,7 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new (data:type()) -> type(). +-spec new (character_turn_data:type()) -> type().  new (Data) ->     #type     { diff --git a/src/battlemap/src/struct/player.erl b/src/battlemap/src/struct/player.erl index 04939cb..4cd073e 100644 --- a/src/battlemap/src/struct/player.erl +++ b/src/battlemap/src/struct/player.erl @@ -16,7 +16,7 @@  -opaque type() :: #player{}. --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/statistics.erl b/src/battlemap/src/struct/statistics.erl index b1e88b8..3406d9a 100644 --- a/src/battlemap/src/struct/statistics.erl +++ b/src/battlemap/src/struct/statistics.erl @@ -21,7 +21,7 @@  -opaque type() :: #statistics{}. --export_type([struct/0]). +-export_type([type/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/tile.erl b/src/battlemap/src/struct/tile.erl index aea139e..a2e04ee 100644 --- a/src/battlemap/src/struct/tile.erl +++ b/src/battlemap/src/struct/tile.erl @@ -6,7 +6,7 @@  -opaque id() :: non_neg_integer().  -opaque type() :: id(). --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/struct/turn_result.erl b/src/battlemap/src/struct/turn_result.erl index 797c8ca..53ae94e 100644 --- a/src/battlemap/src/struct/turn_result.erl +++ b/src/battlemap/src/struct/turn_result.erl @@ -37,7 +37,7 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([struct/0]). +-export_type([type/0]).  -export  ( diff --git a/src/battlemap/src/struct/weapon.erl b/src/battlemap/src/struct/weapon.erl index fa348a0..7d3c874 100644 --- a/src/battlemap/src/struct/weapon.erl +++ b/src/battlemap/src/struct/weapon.erl @@ -25,7 +25,7 @@  -opaque type() :: #weapon{}. --export_type([struct/0, id/0]). +-export_type([type/0, id/0]).  -export_type  (     [ | 


