summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battlemap/game-logic/bm_victory.erl')
-rw-r--r--src/battlemap/game-logic/bm_victory.erl194
1 files changed, 0 insertions, 194 deletions
diff --git a/src/battlemap/game-logic/bm_victory.erl b/src/battlemap/game-logic/bm_victory.erl
deleted file mode 100644
index 327920a..0000000
--- a/src/battlemap/game-logic/bm_victory.erl
+++ /dev/null
@@ -1,194 +0,0 @@
--module(bm_victory).
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export
-(
- [
- handle_character_lost_health/3
- ]
-).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
--spec mark_players_characters_as_defeated
- (
- non_neg_integer(),
- array:array(bm_character:type())
- ) -> {array:array(bm_character:type()), list(non_neg_integer())}.
-mark_players_characters_as_defeated (PlayerIX, Characters) ->
- sh_array_util:mapiff
- (
- fun (Character) ->
- (bm_character:get_player_index(Character) == PlayerIX)
- end,
- fun (Character) ->
- bm_character:set_is_defeated(true, Character)
- end,
- Characters
- ).
-
--spec add_db_query_to_mark_character_as_defeated
- (
- non_neg_integer(),
- bm_character_turn_update:type()
- )
- -> bm_character_turn_update:type().
-add_db_query_to_mark_character_as_defeated (IX, Update) ->
- bm_character_turn_update:add_to_db
- (
- sh_db_query:update_indexed
- (
- bm_battle:get_characters_field(),
- IX,
- [
- sh_db_query:set_field
- (
- bm_character:get_is_defeated_field(),
- true
- )
- ]
- ),
- Update
- ).
-
--spec handle_player_defeat
- (
- non_neg_integer(),
- bm_character_turn_update:type()
- )
- -> bm_character_turn_update:type().
-handle_player_defeat (PlayerIX, Update) ->
- Data = bm_character_turn_update:get_data(Update),
- Battle = bm_character_turn_data:get_battle(Data),
- Characters = bm_battle:get_characters(Battle),
-
- %% FIXME: The controlled character might slip through.
- {UpdatedCharacters, ModifiedIXs} =
- mark_players_characters_as_defeated(PlayerIX, Characters),
-
- S1Update =
- lists:foldl
- (
- fun add_db_query_to_mark_character_as_defeated/2,
- Update,
- ModifiedIXs
- ),
-
- %% TODO: Battle.player[PlayerIX].is_active <- false
-
- UpdatedBattle = bm_battle:set_characters(UpdatedCharacters, Battle),
- UpdatedData = bm_character_turn_data:set_battle(UpdatedBattle, Data),
- S2Update = bm_character_turn_update:set_data(UpdatedData, S1Update),
-
- DBQuery =
- sh_db_query:update_indexed
- (
- bm_battle:get_players_field(),
- PlayerIX,
- [
- sh_db_query:set_field
- (
- bm_player:get_is_active_field(),
- false
- )
- ]
- ),
-
- S3Update =
- bm_character_turn_update:add_to_timeline
- (
- bm_turn_result:new_player_lost(PlayerIX),
- DBQuery,
- S2Update
- ),
-
- S3Update.
-
-
--spec actually_handle_character_lost_health
- (
- non_neg_integer(),
- bm_character_turn_update:type()
- )
- -> bm_character_turn_update:type().
-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),
- Characters = bm_battle:get_characters(Battle),
- CharacterPlayerIX = bm_character:get_player_index(Character),
-
- case bm_character:get_rank(Character) of
- optional ->
- %% Let's not assume there is a commander
- StillHasAliveChar =
- sh_array_util:any_indexed
- (
- fun (IX, Char) ->
- (
- (CharacterPlayerIX == bm_character:get_player_index(Char))
- and (IX /= CharIX)
- and bm_character:get_is_alive(Char)
- )
- end,
- Characters
- ),
-
- case StillHasAliveChar of
- true -> Update;
- _ -> handle_player_defeat(CharacterPlayerIX, Update)
- end;
-
- commander -> handle_player_defeat(CharacterPlayerIX, Update);
-
- target ->
- StillHasAliveChar =
- sh_array_util:any_indexed
- (
- fun (IX, Char) ->
- (
- (CharacterPlayerIX == bm_character:get_player_index(Char))
- and (IX /= CharIX)
- and bm_character:get_is_alive(Char)
- and (bm_character:get_rank(Char) == target)
- )
- end,
- Characters
- ),
-
- case StillHasAliveChar of
- true -> 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.