| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-07-03 17:13:18 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-07-03 17:13:18 +0200 | 
| commit | 2815ff9a8e7e4400cd07a5a33389542535a91def (patch) | |
| tree | 398ae5fc6276818bd26df172ce39a275bf42343d /src/battlemap | |
| parent | d9efd610e9d89e299792f53d46760dfbe0f0cde6 (diff) | |
Avoids issues with dirty character turn data.
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/game-logic/bm_victory.erl | 37 | ||||
| -rw-r--r-- | src/battlemap/struct/bm_character_turn_data.erl | 15 | 
2 files changed, 40 insertions, 12 deletions
| diff --git a/src/battlemap/game-logic/bm_victory.erl b/src/battlemap/game-logic/bm_victory.erl index 3531739..327920a 100644 --- a/src/battlemap/game-logic/bm_victory.erl +++ b/src/battlemap/game-logic/bm_victory.erl @@ -112,18 +112,13 @@ handle_player_defeat (PlayerIX, Update) ->     S3Update. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec handle_character_lost_health +-spec actually_handle_character_lost_health     (        non_neg_integer(), -      integer(),        bm_character_turn_update:type()     )     -> bm_character_turn_update:type(). -handle_character_lost_health (_, Health, Update) when (Health > 0) -> Update; -handle_character_lost_health (CharIX, _Health, Update) -> +actually_handle_character_lost_health (CharIX, Update) ->     Data = bm_character_turn_update:get_data(Update),     Battle = bm_character_turn_data:get_battle(Data),     Character = bm_battle:get_character(CharIX, Battle), @@ -143,8 +138,6 @@ handle_character_lost_health (CharIX, _Health, Update) ->                       and bm_character:get_is_alive(Char)                    )                 end, -               %% FIXME: Potential issue if it's the controlled player and Data -               %% is dirty.                 Characters              ), @@ -167,8 +160,6 @@ handle_character_lost_health (CharIX, _Health, Update) ->                       and (bm_character:get_rank(Char) == target)                    )                 end, -               %% FIXME: Potential issue if it's the controlled player and Data -               %% is dirty.                 Characters              ), @@ -177,3 +168,27 @@ handle_character_lost_health (CharIX, _Health, Update) ->              _ -> handle_player_defeat(CharacterPlayerIX, Update)           end     end. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec handle_character_lost_health +   ( +      non_neg_integer(), +      integer(), +      bm_character_turn_update:type() +   ) +   -> bm_character_turn_update:type(). +handle_character_lost_health (_, Health, Update) when (Health > 0) -> Update; +handle_character_lost_health (CharIX, _Health, Update) -> +   Data = bm_character_turn_update:get_data(Update), +   S1Data = bm_character_turn_data:clean_battle(Data), +   S1Update = bm_character_turn_update:set_data(S1Data, Update), + +   S2Update = actually_handle_character_lost_health(CharIX, S1Update), + +   S2Data = bm_character_turn_update:get_data(S2Update), +   S3Data = bm_character_turn_data:refresh_character(S2Data), +   S3Update = bm_character_turn_update:set_data(S3Data, S2Update), + +   S3Update. diff --git a/src/battlemap/struct/bm_character_turn_data.erl b/src/battlemap/struct/bm_character_turn_data.erl index aaf7426..65b650c 100644 --- a/src/battlemap/struct/bm_character_turn_data.erl +++ b/src/battlemap/struct/bm_character_turn_data.erl @@ -39,7 +39,8 @@  -export  (     [ -      clean_battle/1 +      clean_battle/1, +      refresh_character/1     ]  ). @@ -100,3 +101,15 @@ clean_battle (Data) ->           )     }. +-spec refresh_character (type()) -> type(). +refresh_character (Data) -> +   Data#type +   { +      dirty = false, +      character = +         bm_battle:get_character +         ( +            Data#type.character_ix, +            Data#type.battle +         ) +   }. | 


