summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-01-23 18:43:13 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-01-23 18:43:13 +0100
commit14e79da8b8d45ef242aee34cf4376d220846f690 (patch)
treee263b48464dd95adae6fb37e25d121869c5e4b77
parent366b7e737d74a79e035d6e1a40b041c015f89baa (diff)
Cleaning up a bit...
-rw-r--r--src/battle/game-logic/btl_movement.erl60
-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.erl83
-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.erl65
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()])