| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2019-01-23 18:43:13 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2019-01-23 18:43:13 +0100 | 
| commit | 14e79da8b8d45ef242aee34cf4376d220846f690 (patch) | |
| tree | e263b48464dd95adae6fb37e25d121869c5e4b77 /src/battle | |
| parent | 366b7e737d74a79e035d6e1a40b041c015f89baa (diff) | |
Cleaning up a bit...
Diffstat (limited to 'src/battle')
| -rw-r--r-- | src/battle/game-logic/btl_movement.erl | 60 | ||||
| -rw-r--r-- | src/battle/mechanic/btl_next_turn.erl (renamed from src/battle/game-logic/btl_next_turn.erl) | 0 | ||||
| -rw-r--r-- | src/battle/mechanic/btl_turn_actions.erl | 83 | ||||
| -rw-r--r-- | src/battle/mechanic/btl_victory.erl (renamed from src/battle/game-logic/btl_victory.erl) | 0 | ||||
| -rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_attack.erl (renamed from src/battle/game-logic/btl_turn_actions_attack.erl) | 0 | ||||
| -rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_move.erl (renamed from src/battle/game-logic/btl_turn_actions_move.erl) | 50 | ||||
| -rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_stats_change.erl (renamed from src/battle/game-logic/btl_turn_actions.erl) | 18 | ||||
| -rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl (renamed from src/battle/game-logic/btl_turn_actions_switch_weapon.erl) | 2 | ||||
| -rw-r--r-- | src/battle/query/btl_character_turn.erl | 65 | 
9 files changed, 141 insertions, 137 deletions
| diff --git a/src/battle/game-logic/btl_movement.erl b/src/battle/game-logic/btl_movement.erl deleted file mode 100644 index dd7eff9..0000000 --- a/src/battle/game-logic/btl_movement.erl +++ /dev/null @@ -1,60 +0,0 @@ --module(btl_movement). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export([cross/4]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec cross -   ( -      btl_map:type(), -      list(btl_location:type()), -      list(btl_direction:enum()), -      non_neg_integer(), -      btl_location:type() -   ) -   -> {btl_location:type(), non_neg_integer()}. -cross (_Map, _ForbiddenLocations, [], Cost, Location) -> -   {Location, Cost}; -cross (Map, ForbiddenLocations, [Step|NextSteps], Cost, Location) -> -   NextLocation = btl_location:apply_direction(Step, Location), -   NextTileInstance = btl_map:get_tile_instance(NextLocation, Map), -   NextTileClassID = shr_tile:extract_main_class_id(NextTileInstance), -   NextTile = shr_tile:from_class_id(NextTileClassID), -   NextCost = (Cost + shr_tile:get_cost(NextTile)), -   IsForbidden = -      lists:foldl -      ( -         fun (ForbiddenLocation, Prev) -> -            (Prev or (NextLocation == ForbiddenLocation)) -         end, -         false, -         ForbiddenLocations -      ), - -   IsForbidden = false, - -   cross(Map, ForbiddenLocations, NextSteps, NextCost, NextLocation). - --spec cross -   ( -      btl_map:type(), -      list(btl_location:type()), -      list(btl_direction:enum()), -      btl_location:type() -   ) -   -> {btl_location:type(), non_neg_integer()}. -cross (Map, ForbiddenLocations, Path, Location) -> -   cross(Map, ForbiddenLocations, Path, 0, Location). diff --git a/src/battle/game-logic/btl_next_turn.erl b/src/battle/mechanic/btl_next_turn.erl index 886916d..886916d 100644 --- a/src/battle/game-logic/btl_next_turn.erl +++ b/src/battle/mechanic/btl_next_turn.erl diff --git a/src/battle/mechanic/btl_turn_actions.erl b/src/battle/mechanic/btl_turn_actions.erl new file mode 100644 index 0000000..d4a81fc --- /dev/null +++ b/src/battle/mechanic/btl_turn_actions.erl @@ -0,0 +1,83 @@ +-module(btl_turn_actions). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( +   [ +      apply_requested_actions/2 +   ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Move elsewhere + +%%%% TODO: move this elsewhere +-spec finalize_character +   ( +      btl_character_turn_update:type() +   ) +   -> btl_character_turn_update:type(). +finalize_character (Update) -> +   Data = btl_character_turn_update:get_data(Update), +   Character = btl_character_turn_data:get_character(Data), + +   DisabledCharacter = btl_character:set_is_active(false, Character), +   UpdatedData = btl_character_turn_data:set_character(DisabledCharacter, Data), +   FinalizedData = btl_character_turn_data:clean_battle(UpdatedData), + +   DBQuery = +      ataxic:update_field +      ( +         btl_battle:get_characters_field(), +         ataxic_sugar:update_orddict_element +         ( +            btl_character_turn_data:get_character_ix(Data), +            ataxic:update_field +            ( +               btl_character:get_is_active_field(), +               ataxic:constant(false) +            ) +         ) +      ), + +   S0Update = btl_character_turn_update:set_data(FinalizedData, Update), +   S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update), + +   S1Update. + +-spec handle +( +   btl_battle_action:type(), +   btl_character_turn_update:type() +) +-> btl_character_turn_update:type(). +handle (BattleAction, Update) -> +   case btl_battle_action:get_category(BattleAction) of +      move -> btl_turn_actions_move:handle(BattleAction, Update); +      switch_weapon -> btl_turn_actions_switch_weapon:handle(Update); +      attack -> btl_turn_actions_attack:handle(BattleAction, Update) +   end. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec apply_requested_actions +   ( +      btl_character_turn_data:type(), +      btl_character_turn_request:type() +   ) +   -> btl_character_turn_update:type(). +apply_requested_actions (Data, Request) -> +   Actions = btl_character_turn_request:get_actions(Request), + +   EmptyUpdate = btl_character_turn_update:new(Data), +   PostActionsUpdate = lists:foldl(fun handle/2, EmptyUpdate, Actions), + +   finalize_character(PostActionsUpdate). diff --git a/src/battle/game-logic/btl_victory.erl b/src/battle/mechanic/btl_victory.erl index 089af81..089af81 100644 --- a/src/battle/game-logic/btl_victory.erl +++ b/src/battle/mechanic/btl_victory.erl diff --git a/src/battle/game-logic/btl_turn_actions_attack.erl b/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl index 52dd3fb..52dd3fb 100644 --- a/src/battle/game-logic/btl_turn_actions_attack.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl diff --git a/src/battle/game-logic/btl_turn_actions_move.erl b/src/battle/mechanic/turn_action/btl_turn_actions_move.erl index 80e5170..bf023d5 100644 --- a/src/battle/game-logic/btl_turn_actions_move.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_move.erl @@ -16,6 +16,48 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec cross +   ( +      btl_map:type(), +      list(btl_location:type()), +      list(btl_direction:enum()), +      non_neg_integer(), +      btl_location:type() +   ) +   -> {btl_location:type(), non_neg_integer()}. +cross (_Map, _ForbiddenLocations, [], Cost, Location) -> +   {Location, Cost}; +cross (Map, ForbiddenLocations, [Step|NextSteps], Cost, Location) -> +   NextLocation = btl_location:apply_direction(Step, Location), +   NextTileInstance = btl_map:get_tile_instance(NextLocation, Map), +   NextTileClassID = shr_tile:extract_main_class_id(NextTileInstance), +   NextTile = shr_tile:from_class_id(NextTileClassID), +   NextCost = (Cost + shr_tile:get_cost(NextTile)), +   IsForbidden = +      lists:foldl +      ( +         fun (ForbiddenLocation, Prev) -> +            (Prev or (NextLocation == ForbiddenLocation)) +         end, +         false, +         ForbiddenLocations +      ), + +   IsForbidden = false, + +   cross(Map, ForbiddenLocations, NextSteps, NextCost, NextLocation). + +-spec cross +   ( +      btl_map:type(), +      list(btl_location:type()), +      list(btl_direction:enum()), +      btl_location:type() +   ) +   -> {btl_location:type(), non_neg_integer()}. +cross (Map, ForbiddenLocations, Path, Location) -> +   cross(Map, ForbiddenLocations, Path, 0, Location). +  -spec get_path_cost_and_destination     (        btl_character_turn_data:type(), @@ -45,7 +87,7 @@ get_path_cost_and_destination (Data, Path) ->        ),     {NewLocation, Cost} = -      btl_movement:cross +      cross        (           Map,           ForbiddenLocations, @@ -89,7 +131,11 @@ commit_move (PreviousCurrentData, Update, Path, NewLocation) ->     S0Update = btl_character_turn_update:set_data(S1Data, Update),     S1Update = -      btl_turn_actions:handle_max_health_changes(PreviousCurrentData, S0Update), +      btl_turn_actions_stats_change:handle_max_health_changes +      ( +         PreviousCurrentData, +         S0Update +      ),     TimelineItem =        btl_turn_result:new_character_moved(CharacterIX, Path, NewLocation), diff --git a/src/battle/game-logic/btl_turn_actions.erl b/src/battle/mechanic/turn_action/btl_turn_actions_stats_change.erl index 4e469f1..5fe5444 100644 --- a/src/battle/game-logic/btl_turn_actions.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_stats_change.erl @@ -1,4 +1,5 @@ --module(btl_turn_actions). +-module(btl_turn_actions_stats_change). +  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -9,7 +10,6 @@  -export  (     [ -      handle/2,        handle_max_health_changes/2     ]  ). @@ -61,23 +61,9 @@ mod_current_health (CurrentMaxHealth, PreviousMaxHealth, Update) ->     S1Update. -  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec handle -( -   btl_battle_action:type(), -   btl_character_turn_update:type() -) --> btl_character_turn_update:type(). -handle (BattleAction, Update) -> -   case btl_battle_action:get_category(BattleAction) of -      move -> btl_turn_actions_move:handle(BattleAction, Update); -      switch_weapon -> btl_turn_actions_switch_weapon:handle(Update); -      attack -> btl_turn_actions_attack:handle(BattleAction, Update) -   end. -  -spec handle_max_health_changes     (        btl_character_current_data:type(), diff --git a/src/battle/game-logic/btl_turn_actions_switch_weapon.erl b/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl index 990f91f..119dbe7 100644 --- a/src/battle/game-logic/btl_turn_actions_switch_weapon.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_switch_weapon.erl @@ -42,7 +42,7 @@ handle (Update) ->     S0Update = btl_character_turn_update:set_data(S1Data, Update),     S1Update = -      btl_turn_actions:handle_max_health_changes +      btl_turn_actions_stats_change:handle_max_health_changes        (           CharacterCurrentData,           S0Update diff --git a/src/battle/query/btl_character_turn.erl b/src/battle/query/btl_character_turn.erl index 32ec9be..90afba8 100644 --- a/src/battle/query/btl_character_turn.erl +++ b/src/battle/query/btl_character_turn.erl @@ -113,54 +113,8 @@ assert_user_permissions (Data, Request) ->     ok.  %%%% QUERY LOGIC HANDLING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec finalize_character -   ( -      btl_character_turn_update:type() -   ) -   -> btl_character_turn_update:type(). -finalize_character (Update) -> -   Data = btl_character_turn_update:get_data(Update), -   Character = btl_character_turn_data:get_character(Data), - -   DisabledCharacter = btl_character:set_is_active(false, Character), -   UpdatedData = btl_character_turn_data:set_character(DisabledCharacter, Data), -   FinalizedData = btl_character_turn_data:clean_battle(UpdatedData), - -   DBQuery = -      ataxic:update_field -      ( -         btl_battle:get_characters_field(), -         ataxic_sugar:update_orddict_element -         ( -            btl_character_turn_data:get_character_ix(Data), -            ataxic:update_field -            ( -               btl_character:get_is_active_field(), -               ataxic:constant(false) -            ) -         ) -      ), - -   S0Update = btl_character_turn_update:set_data(FinalizedData, Update), -   S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update), - -   S1Update. - --spec handle_actions -   ( -      btl_character_turn_data:type(), -      btl_character_turn_request:type() -   ) -   -> btl_character_turn_update:type(). -handle_actions (Data, Request) -> -   Actions = btl_character_turn_request:get_actions(Request), - -   EmptyUpdate = btl_character_turn_update:new(Data), -   PostActionsUpdate = -      lists:foldl(fun btl_turn_actions:handle/2, EmptyUpdate, Actions), - -   finalize_character(PostActionsUpdate). +%%%% TODO: move this elsewhere  -spec update_timeline     (        btl_character_turn_update:type() @@ -214,7 +168,7 @@ update_timeline (Update) ->     )     -> btl_character_turn_update:type().  update_data (Data, Request) -> -   PostActionsUpdate = handle_actions(Data, Request), +   PostActionsUpdate = btl_turn_actions:apply_requested_actions(Data, Request),     PostCharacterTurnUpdate = update_timeline(PostActionsUpdate),     btl_next_turn:update_if_needed(PostCharacterTurnUpdate). @@ -276,15 +230,6 @@ commit_update (Update, Request) ->     ok. -%%%% USER DISCONNECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec disconnect_user (btl_character_turn_request:type()) -> 'ok'. -disconnect_user (Request) -> -   PlayerID = btl_character_turn_request:get_player_id(Request), - -   shr_security:unlock_queries(PlayerID), - -   ok. -  %%%% REPLY GENERATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec generate_reply (btl_character_turn_update:type()) -> binary().  generate_reply (Update) -> @@ -301,12 +246,16 @@ handle (EncodedRequest) ->     case authenticate_user(Request) of        ok ->           PlayerID = btl_character_turn_request:get_player_id(Request), +           shr_security:lock_queries(PlayerID), +           Data = fetch_data(Request),           assert_user_permissions(Data, Request),           Update = update_data(Data, Request),           commit_update(Update, Request), -         disconnect_user(Request), + +         shr_security:unlock_queries(PlayerID), +           generate_reply(Update);        error -> jiffy:encode([shr_disconnected:generate()]) | 


