summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | conf/yaws.conf.m4 | 4 | ||||
-rw-r--r-- | src/battle/btl_handler.erl (renamed from src/battlemap/bm_handler.erl) | 10 | ||||
-rw-r--r-- | src/battle/btl_shim.erl (renamed from src/battlemap/bm_shim.erl) | 38 | ||||
-rw-r--r-- | src/battle/game-logic/btl_movement.erl (renamed from src/battlemap/game-logic/bm_movement.erl) | 32 | ||||
-rw-r--r-- | src/battle/game-logic/btl_next_turn.erl (renamed from src/battlemap/game-logic/bm_next_turn.erl) | 86 | ||||
-rw-r--r-- | src/battle/game-logic/btl_turn_actions.erl (renamed from src/battlemap/game-logic/bm_turn_actions.erl) | 196 | ||||
-rw-r--r-- | src/battle/game-logic/btl_victory.erl (renamed from src/battlemap/game-logic/bm_victory.erl) | 86 | ||||
-rw-r--r-- | src/battle/io/btl_security.erl (renamed from src/battlemap/io/bm_security.erl) | 2 | ||||
-rw-r--r-- | src/battle/query/btl_character_turn.erl | 282 | ||||
-rw-r--r-- | src/battle/query/btl_load_state.erl (renamed from src/battlemap/query/bm_load_state.erl) | 40 | ||||
-rw-r--r-- | src/battle/reply/btl_add_armor.erl (renamed from src/battlemap/reply/bm_add_armor.erl) | 2 | ||||
-rw-r--r-- | src/battle/reply/btl_add_char.erl (renamed from src/battlemap/reply/bm_add_char.erl) | 32 | ||||
-rw-r--r-- | src/battle/reply/btl_add_tile.erl (renamed from src/battlemap/reply/bm_add_tile.erl) | 14 | ||||
-rw-r--r-- | src/battle/reply/btl_add_weapon.erl (renamed from src/battlemap/reply/bm_add_weapon.erl) | 2 | ||||
-rw-r--r-- | src/battle/reply/btl_set_map.erl (renamed from src/battlemap/reply/bm_set_map.erl) | 10 | ||||
-rw-r--r-- | src/battle/reply/btl_set_timeline.erl (renamed from src/battlemap/reply/bm_set_timeline.erl) | 2 | ||||
-rw-r--r-- | src/battle/reply/btl_turn_results.erl (renamed from src/battlemap/reply/bm_turn_results.erl) | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_attack.erl (renamed from src/battlemap/struct/bm_attack.erl) | 20 | ||||
-rw-r--r-- | src/battle/struct/btl_battle.erl (renamed from src/battlemap/struct/bm_battle.erl) | 52 | ||||
-rw-r--r-- | src/battle/struct/btl_battle_action.erl (renamed from src/battlemap/struct/bm_battle_action.erl) | 8 | ||||
-rw-r--r-- | src/battle/struct/btl_battlemap.erl (renamed from src/battlemap/struct/bm_battlemap.erl) | 12 | ||||
-rw-r--r-- | src/battle/struct/btl_character.erl (renamed from src/battlemap/struct/bm_character.erl) | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_character_turn_data.erl (renamed from src/battlemap/struct/bm_character_turn_data.erl) | 22 | ||||
-rw-r--r-- | src/battle/struct/btl_character_turn_request.erl (renamed from src/battlemap/struct/bm_character_turn_request.erl) | 12 | ||||
-rw-r--r-- | src/battle/struct/btl_character_turn_update.erl (renamed from src/battlemap/struct/bm_character_turn_update.erl) | 14 | ||||
-rw-r--r-- | src/battle/struct/btl_direction.erl (renamed from src/battlemap/struct/bm_direction.erl) | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_location.erl (renamed from src/battlemap/struct/bm_location.erl) | 4 | ||||
-rw-r--r-- | src/battle/struct/btl_player.erl (renamed from src/battlemap/struct/bm_player.erl) | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_player_turn.erl (renamed from src/battlemap/struct/bm_player_turn.erl) | 8 | ||||
-rw-r--r-- | src/battle/struct/btl_tile.erl (renamed from src/battlemap/struct/bm_tile.erl) | 2 | ||||
-rw-r--r-- | src/battle/struct/btl_turn_result.erl (renamed from src/battlemap/struct/bm_turn_result.erl) | 36 | ||||
-rw-r--r-- | src/battlemap/query/bm_character_turn.erl | 282 | ||||
-rw-r--r-- | src/query/qry_handler.erl | 23 |
33 files changed, 682 insertions, 659 deletions
diff --git a/conf/yaws.conf.m4 b/conf/yaws.conf.m4 index 3f5b36b..abd174e 100644 --- a/conf/yaws.conf.m4 +++ b/conf/yaws.conf.m4 @@ -110,6 +110,6 @@ keepalive_timeout = 30000 listen = 0.0.0.0 docroot = __MAKEFILE_WWW_DIR auth_log = true - appmods = bm_character_turn bm_load_state - start_mod = bm_handler + appmods = btl_character_turn btl_load_state + start_mod = qry_handler </server> diff --git a/src/battlemap/bm_handler.erl b/src/battle/btl_handler.erl index d355ea1..19b0e20 100644 --- a/src/battlemap/bm_handler.erl +++ b/src/battle/btl_handler.erl @@ -1,4 +1,4 @@ --module(bm_handler). +-module(btl_handler). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,8 +16,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -start (_YawsParams) -> - {ok, Pid} = sh_timed_caches_manager:start(), +-spec start (pid()) -> 'ok'. +start (TimedCachesManagerPid) -> case sh_database:fetch(battle_db, <<"0">>) of {ok, _} -> ok; not_found -> @@ -26,8 +26,8 @@ start (_YawsParams) -> battle_db, <<"0">>, any, - bm_shim:generate_random_battle() + btl_shim:generate_random_battle() ) end, - sh_timed_caches_manager:new_cache(Pid, battle_db, none), + sh_timed_caches_manager:new_cache(TimedCachesManagerPid, battle_db, none), ok. diff --git a/src/battlemap/bm_shim.erl b/src/battle/btl_shim.erl index 67e82bf..07d5854 100644 --- a/src/battlemap/bm_shim.erl +++ b/src/battle/btl_shim.erl @@ -1,4 +1,4 @@ --module(bm_shim). +-module(btl_shim). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -19,11 +19,11 @@ non_neg_integer(), non_neg_integer(), non_neg_integer(), - bm_battlemap:type(), - list(bm_location:type()), - list(bm_character:type()) + btl_battlemap:type(), + list(btl_location:type()), + list(btl_character:type()) ) - -> list(bm_character:type()). + -> list(btl_character:type()). generate_random_characters ( 0, @@ -66,17 +66,17 @@ generate_random_characters Result ) -> NewCharacter = - bm_character:random + btl_character:random ( TotalCharacterCount, MaxPlayerIX, - bm_battlemap:get_width(Battlemap), - bm_battlemap:get_height(Battlemap), + btl_battlemap:get_width(Battlemap), + btl_battlemap:get_height(Battlemap), ForbiddenLocations ), Character = case MaxPlayerIX of - 0 -> bm_character:set_is_active(true, NewCharacter); + 0 -> btl_character:set_is_active(true, NewCharacter); _ -> NewCharacter end, @@ -87,7 +87,7 @@ generate_random_characters CharactersPerPlayer, (TotalCharacterCount + 1), Battlemap, - [bm_character:get_location(Character)|ForbiddenLocations], + [btl_character:get_location(Character)|ForbiddenLocations], [Character|Result] ). -spec demo_map () -> list(non_neg_integer()). @@ -130,21 +130,21 @@ demo_map () -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate_random_battle () -> bm_battle:type(). +-spec generate_random_battle () -> btl_battle:type(). generate_random_battle () -> %BattlemapWidth = 32, % sh_roll:between(16, 32), %BattlemapHeight = 32, %sh_roll:between(16, 32), - %Battlemap = bm_battlemap:random(0, BattlemapWidth, BattlemapHeight), - Battlemap = bm_battlemap:from_list(0, 32, 32, demo_map()), + %Battlemap = btl_battlemap:random(0, BattlemapWidth, BattlemapHeight), + Battlemap = btl_battlemap:from_list(0, 32, 32, demo_map()), Characters = generate_random_characters(1, 8, 8, 0, Battlemap, [], []), - PlayersAsList = [bm_player:new(0, 8, <<"0">>), bm_player:new(1, 0, <<"1">>)], + PlayersAsList = [btl_player:new(0, 8, <<"0">>), btl_player:new(1, 0, <<"1">>)], {UsedWeaponIDs, UsedArmorIDs} = lists:foldl ( fun (Character, {UWIDs, UAIDs}) -> - {MWpID, SWpID} = bm_character:get_weapon_ids(Character), - AID = bm_character:get_armor_id(Character), + {MWpID, SWpID} = btl_character:get_weapon_ids(Character), + AID = btl_character:get_armor_id(Character), { sets:add_element(MWpID, sets:add_element(SWpID, UWIDs)), sets:add_element(AID, UAIDs) @@ -160,16 +160,16 @@ generate_random_battle () -> fun (_IX, TileClassID, CurrentTileIDs) -> sets:add_element ( - bm_tile:class_id_to_type_id(TileClassID), + btl_tile:class_id_to_type_id(TileClassID), CurrentTileIDs ) end, sets:new(), - bm_battlemap:get_tile_class_ids(Battlemap) + btl_battlemap:get_tile_class_ids(Battlemap) ), Battle = - bm_battle:new + btl_battle:new ( <<"0">>, PlayersAsList, diff --git a/src/battlemap/game-logic/bm_movement.erl b/src/battle/game-logic/btl_movement.erl index 8bf2c5b..87b1806 100644 --- a/src/battlemap/game-logic/bm_movement.erl +++ b/src/battle/game-logic/btl_movement.erl @@ -1,4 +1,4 @@ --module(bm_movement). +-module(btl_movement). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -19,21 +19,21 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec cross ( - bm_battlemap:type(), - list(bm_location:type()), - list(bm_direction:enum()), + btl_battlemap:type(), + list(btl_location:type()), + list(btl_direction:enum()), non_neg_integer(), - bm_location:type() + btl_location:type() ) - -> {bm_location:type(), non_neg_integer()}. + -> {btl_location:type(), non_neg_integer()}. cross (_Battlemap, _ForbiddenLocations, [], Cost, Location) -> {Location, Cost}; cross (Battlemap, ForbiddenLocations, [Step|NextSteps], Cost, Location) -> - NextLocation = bm_location:apply_direction(Step, Location), - NextTileClassID = bm_battlemap:get_tile_class_id(NextLocation, Battlemap), - NextTileID = bm_tile:class_id_to_type_id(NextTileClassID), - NextTile = bm_tile:from_id(NextTileID), - NextCost = (Cost + bm_tile:get_cost(NextTile)), + NextLocation = btl_location:apply_direction(Step, Location), + NextTileClassID = btl_battlemap:get_tile_class_id(NextLocation, Battlemap), + NextTileID = btl_tile:class_id_to_type_id(NextTileClassID), + NextTile = btl_tile:from_id(NextTileID), + NextCost = (Cost + btl_tile:get_cost(NextTile)), IsForbidden = lists:foldl ( @@ -50,11 +50,11 @@ cross (Battlemap, ForbiddenLocations, [Step|NextSteps], Cost, Location) -> -spec cross ( - bm_battlemap:type(), - list(bm_location:type()), - list(bm_direction:enum()), - bm_location:type() + btl_battlemap:type(), + list(btl_location:type()), + list(btl_direction:enum()), + btl_location:type() ) - -> {bm_location:type(), non_neg_integer()}. + -> {btl_location:type(), non_neg_integer()}. cross (Battlemap, ForbiddenLocations, Path, Location) -> cross(Battlemap, ForbiddenLocations, Path, 0, Location). diff --git a/src/battlemap/game-logic/bm_next_turn.erl b/src/battle/game-logic/btl_next_turn.erl index 56e7f7e..82eec98 100644 --- a/src/battlemap/game-logic/bm_next_turn.erl +++ b/src/battle/game-logic/btl_next_turn.erl @@ -1,4 +1,4 @@ --module(bm_next_turn). +-module(btl_next_turn). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,61 +16,61 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec set_player_turn_to_next (bm_battle:type()) - -> {bm_battle:type(), sh_db_query:op()}. +-spec set_player_turn_to_next (btl_battle:type()) + -> {btl_battle:type(), sh_db_query:op()}. set_player_turn_to_next (Battle) -> - Players = bm_battle:get_players(Battle), - CurrentPlayerTurn = bm_battle:get_current_player_turn(Battle), + Players = btl_battle:get_players(Battle), + CurrentPlayerTurn = btl_battle:get_current_player_turn(Battle), - NextPlayerTurn = bm_player_turn:next(Players, CurrentPlayerTurn), + NextPlayerTurn = btl_player_turn:next(Players, CurrentPlayerTurn), - UpdatedBattle = bm_battle:set_current_player_turn(NextPlayerTurn, Battle), + UpdatedBattle = btl_battle:set_current_player_turn(NextPlayerTurn, Battle), DBQuery = sh_db_query:set_field ( - bm_battle:get_current_player_turn_field(), + btl_battle:get_current_player_turn_field(), NextPlayerTurn ), {UpdatedBattle, DBQuery}. --spec reset_next_player_timeline (bm_battle:type()) - -> {bm_battle:type(), bm_player:type(), sh_db_query:op()}. +-spec reset_next_player_timeline (btl_battle:type()) + -> {btl_battle:type(), btl_player:type(), sh_db_query:op()}. reset_next_player_timeline (Battle) -> - NextPlayerTurn = bm_battle:get_current_player_turn(Battle), - NextPlayerIX = bm_player_turn:get_player_ix(NextPlayerTurn), - NextPlayer = bm_battle:get_player(NextPlayerIX, Battle), + NextPlayerTurn = btl_battle:get_current_player_turn(Battle), + NextPlayerIX = btl_player_turn:get_player_ix(NextPlayerTurn), + NextPlayer = btl_battle:get_player(NextPlayerIX, Battle), - UpdatedNextPlayer = bm_player:reset_timeline(NextPlayer), + UpdatedNextPlayer = btl_player:reset_timeline(NextPlayer), UpdatedBattle = - bm_battle:set_player(NextPlayerIX, UpdatedNextPlayer, Battle), + btl_battle:set_player(NextPlayerIX, UpdatedNextPlayer, Battle), DBQuery = sh_db_query:update_indexed ( - bm_battle:get_players_field(), + btl_battle:get_players_field(), NextPlayerIX, - [ sh_db_query:set_field(bm_player:get_timeline_field(), []) ] + [ sh_db_query:set_field(btl_player:get_timeline_field(), []) ] ), {UpdatedBattle, UpdatedNextPlayer, DBQuery}. --spec activate_next_players_characters (bm_battle:type(), bm_player:type()) - -> {bm_battle:type(), list(sh_db_query:op())}. +-spec activate_next_players_characters (btl_battle:type(), btl_player:type()) + -> {btl_battle:type(), list(sh_db_query:op())}. activate_next_players_characters (Battle, NextPlayer) -> - NextPlayerIX = bm_player:get_index(NextPlayer), - Characters = bm_battle:get_characters(Battle), + NextPlayerIX = btl_player:get_index(NextPlayer), + Characters = btl_battle:get_characters(Battle), {UpdatedCharacters, ModifiedIXs} = sh_array_util:mapiff ( fun (Character) -> - (bm_character:get_player_index(Character) == NextPlayerIX) + (btl_character:get_player_index(Character) == NextPlayerIX) end, fun (Character) -> - bm_character:set_is_active(true, Character) + btl_character:set_is_active(true, Character) end, Characters ), @@ -81,12 +81,12 @@ activate_next_players_characters (Battle, NextPlayer) -> fun (IX) -> sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), IX, [ sh_db_query:set_field ( - bm_character:get_is_active_field(), + btl_character:get_is_active_field(), true ) ] @@ -95,64 +95,64 @@ activate_next_players_characters (Battle, NextPlayer) -> ModifiedIXs ), - UpdatedBattle = bm_battle:set_characters(UpdatedCharacters, Battle), + UpdatedBattle = btl_battle:set_characters(UpdatedCharacters, Battle), {UpdatedBattle, DBQueries}. -spec update ( - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). update (Update) -> - Data = bm_character_turn_update:get_data(Update), - Battle = bm_character_turn_data:get_battle(Data), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), {S0Battle, DBQuery0} = set_player_turn_to_next(Battle), {S1Battle, NextPlayer, DBQuery1} = reset_next_player_timeline(S0Battle), {S2Battle, DBQueries} = activate_next_players_characters(S1Battle, NextPlayer), - S0Data = bm_character_turn_data:set_battle(S2Battle, Data), + S0Data = btl_character_turn_data:set_battle(S2Battle, Data), S0Update = - bm_character_turn_update:add_to_timeline + btl_character_turn_update:add_to_timeline ( - bm_turn_result:new_player_turn_started + btl_turn_result:new_player_turn_started ( - bm_player:get_index(NextPlayer) + btl_player:get_index(NextPlayer) ), DBQuery0, Update ), - S1Update = bm_character_turn_update:set_data(S0Data, S0Update), + S1Update = btl_character_turn_update:set_data(S0Data, S0Update), S2Update = lists:foldl ( - fun bm_character_turn_update:add_to_db/2, + fun btl_character_turn_update:add_to_db/2, S1Update, [DBQuery1|DBQueries] ), S2Update. --spec requires_update (bm_character_turn_update:type()) -> boolean(). +-spec requires_update (btl_character_turn_update:type()) -> boolean(). requires_update (Update) -> - Data = bm_character_turn_update:get_data(Update), - Battle = bm_character_turn_data:get_battle(Data), - Characters = bm_battle:get_characters(Battle), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + Characters = btl_battle:get_characters(Battle), - sh_array_util:none(fun bm_character:get_is_active/1, Characters). + sh_array_util:none(fun btl_character:get_is_active/1, Characters). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec update_if_needed ( - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). update_if_needed (Update) -> case requires_update(Update) of true -> update(Update); diff --git a/src/battlemap/game-logic/bm_turn_actions.erl b/src/battle/game-logic/btl_turn_actions.erl index c3e091a..21205ac 100644 --- a/src/battlemap/game-logic/bm_turn_actions.erl +++ b/src/battle/game-logic/btl_turn_actions.erl @@ -1,4 +1,4 @@ --module(bm_turn_actions). +-module(btl_turn_actions). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -20,102 +20,102 @@ %%%% SWITCHING WEAPON %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec handle_switch_weapon ( - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). handle_switch_weapon (Update) -> - Data = bm_character_turn_update:get_data(Update), - Character = bm_character_turn_data:get_character(Data), - CharacterIX = bm_character_turn_data:get_character_ix(Data), - CharacterAttributes = bm_character:get_attributes(Character), - ArmorID = bm_character:get_armor_id(Character), - {PrimaryWeaponID, SecondaryWeaponID} = bm_character:get_weapon_ids(Character), + Data = btl_character_turn_update:get_data(Update), + Character = btl_character_turn_data:get_character(Data), + CharacterIX = btl_character_turn_data:get_character_ix(Data), + CharacterAttributes = btl_character:get_attributes(Character), + ArmorID = btl_character:get_armor_id(Character), + {PrimaryWeaponID, SecondaryWeaponID} = btl_character:get_weapon_ids(Character), UpdatedWeaponIDs = {SecondaryWeaponID, PrimaryWeaponID}, UpdatedCharacterStatistics = sh_statistics:new(CharacterAttributes, UpdatedWeaponIDs, ArmorID), UpdatedCharacter = - bm_character:set_statistics + btl_character:set_statistics ( UpdatedCharacterStatistics, - bm_character:set_weapon_ids(UpdatedWeaponIDs, Character) + btl_character:set_weapon_ids(UpdatedWeaponIDs, Character) ), - TimelineItem = bm_turn_result:new_character_switched_weapons(CharacterIX), + TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX), DBQuery = sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), CharacterIX, [ sh_db_query:set_field ( - bm_character:get_weapons_field(), + btl_character:get_weapons_field(), UpdatedWeaponIDs ), sh_db_query:set_field ( - bm_character:get_statistics_field(), + btl_character:get_statistics_field(), UpdatedCharacterStatistics ) ] ), - UpdatedData = bm_character_turn_data:set_character(UpdatedCharacter, Data), + UpdatedData = btl_character_turn_data:set_character(UpdatedCharacter, Data), - S0Update = bm_character_turn_update:set_data(UpdatedData, Update), + S0Update = btl_character_turn_update:set_data(UpdatedData, Update), - bm_character_turn_update:add_to_timeline(TimelineItem, DBQuery, S0Update). + btl_character_turn_update:add_to_timeline(TimelineItem, DBQuery, S0Update). %%%% MOVING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec get_path_cost_and_destination ( - bm_character_turn_data:type(), - list(bm_direction:type()) + btl_character_turn_data:type(), + list(btl_direction:type()) ) - -> {non_neg_integer(), bm_location:type()}. + -> {non_neg_integer(), btl_location:type()}. get_path_cost_and_destination (Data, Path) -> - Character = bm_character_turn_data:get_character(Data), - CharacterIX = bm_character_turn_data:get_character_ix(Data), - Battle = bm_character_turn_data:get_battle(Data), - Battlemap = bm_battle:get_battlemap(Battle), + Character = btl_character_turn_data:get_character(Data), + CharacterIX = btl_character_turn_data:get_character_ix(Data), + Battle = btl_character_turn_data:get_battle(Data), + Battlemap = btl_battle:get_battlemap(Battle), ForbiddenLocations = array:foldl ( fun (IX, Char, Prev) -> - IsAlive = bm_character:get_is_alive(Char), + IsAlive = btl_character:get_is_alive(Char), if (IX == CharacterIX) -> Prev; (not IsAlive) -> Prev; - true -> [bm_character:get_location(Char)|Prev] + true -> [btl_character:get_location(Char)|Prev] end end, [], - bm_battle:get_characters(Battle) + btl_battle:get_characters(Battle) ), {NewLocation, Cost} = - bm_movement:cross + btl_movement:cross ( Battlemap, ForbiddenLocations, Path, - bm_character:get_location(Character) + btl_character:get_location(Character) ), {Cost, NewLocation}. -spec assert_character_can_move ( - bm_character_turn_data:type(), + btl_character_turn_data:type(), non_neg_integer() ) -> 'ok'. assert_character_can_move (Data, Cost) -> - Character = bm_character_turn_data:get_character(Data), - CharacterStatistics = bm_character:get_statistics(Character), + Character = btl_character_turn_data:get_character(Data), + CharacterStatistics = btl_character:get_statistics(Character), CharacterMovementPoints = sh_statistics:get_movement_points(CharacterStatistics), @@ -125,56 +125,56 @@ assert_character_can_move (Data, Cost) -> -spec commit_move ( - bm_character_turn_update:type(), - list(bm_direction:type()), - bm_location:type() + btl_character_turn_update:type(), + list(btl_direction:type()), + btl_location:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). commit_move (Update, Path, NewLocation) -> - Data = bm_character_turn_update:get_data(Update), - Character = bm_character_turn_data:get_character(Data), - CharacterIX = bm_character_turn_data:get_character_ix(Data), + Data = btl_character_turn_update:get_data(Update), + Character = btl_character_turn_data:get_character(Data), + CharacterIX = btl_character_turn_data:get_character_ix(Data), - UpdatedCharacter = bm_character:set_location(NewLocation, Character), + UpdatedCharacter = btl_character:set_location(NewLocation, Character), - UpdatedData = bm_character_turn_data:set_character(UpdatedCharacter, Data), + UpdatedData = btl_character_turn_data:set_character(UpdatedCharacter, Data), TimelineItem = - bm_turn_result:new_character_moved(CharacterIX, Path, NewLocation), + btl_turn_result:new_character_moved(CharacterIX, Path, NewLocation), DBQuery = sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), CharacterIX, [ sh_db_query:set_field ( - bm_character:get_location_field(), + btl_character:get_location_field(), NewLocation ) ] ), S0Update = - bm_character_turn_update:add_to_timeline + btl_character_turn_update:add_to_timeline ( TimelineItem, DBQuery, Update ), - bm_character_turn_update:set_data(UpdatedData, S0Update). + btl_character_turn_update:set_data(UpdatedData, S0Update). -spec handle_move ( - bm_battle_action:type(), - bm_character_turn_update:type() + btl_battle_action:type(), + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). handle_move (BattleAction, Update) -> - Data = bm_character_turn_update:get_data(Update), - Path = bm_battle_action:get_path(BattleAction), + Data = btl_character_turn_update:get_data(Update), + Path = btl_battle_action:get_path(BattleAction), {PathCost, NewLocation} = get_path_cost_and_destination(Data, Path), assert_character_can_move(Data, PathCost), @@ -184,11 +184,11 @@ handle_move (BattleAction, Update) -> %%%% ATTACKING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec handle_attack_sequence ( - bm_character:type(), - bm_character:type(), - list(bm_attack:step()) + btl_character:type(), + btl_character:type(), + list(btl_attack:step()) ) - -> {list(bm_attack:type()), non_neg_integer(), non_neg_integer()}. + -> {list(btl_attack:type()), non_neg_integer(), non_neg_integer()}. handle_attack_sequence ( Character, @@ -199,7 +199,7 @@ handle_attack_sequence lists:map ( fun (AttackStep) -> - bm_attack:get_description_of + btl_attack:get_description_of ( AttackStep, Character, @@ -217,7 +217,7 @@ handle_attack_sequence {AttackValidEffects, AttackerHealth, DefenderHealth} ) -> {AttackResult, NewAttackerHealth, NewDefenderHealth} = - bm_attack:apply_to_healths + btl_attack:apply_to_healths ( AttackEffectCandidate, AttackerHealth, @@ -235,50 +235,50 @@ handle_attack_sequence end, { [], - bm_character:get_current_health(Character), - bm_character:get_current_health(TargetCharacter) + btl_character:get_current_health(Character), + btl_character:get_current_health(TargetCharacter) }, AttackPlannedEffects ). -spec get_attack_sequence ( - bm_character:type(), - bm_character:type() + btl_character:type(), + btl_character:type() ) - -> list(bm_attack:step()). + -> list(btl_attack:step()). get_attack_sequence (Character, TargetCharacter) -> Range = - bm_location:dist + btl_location:dist ( - bm_character:get_location(Character), - bm_character:get_location(TargetCharacter) + btl_character:get_location(Character), + btl_character:get_location(TargetCharacter) ), - {AttackingWeaponID, _} = bm_character:get_weapon_ids(Character), - {DefendingWeaponID, _} = bm_character:get_weapon_ids(TargetCharacter), + {AttackingWeaponID, _} = btl_character:get_weapon_ids(Character), + {DefendingWeaponID, _} = btl_character:get_weapon_ids(TargetCharacter), AttackingWeapon = sh_weapon:from_id(AttackingWeaponID), DefendingWeapon = sh_weapon:from_id(DefendingWeaponID), - bm_attack:get_sequence(Range, AttackingWeapon, DefendingWeapon). + btl_attack:get_sequence(Range, AttackingWeapon, DefendingWeapon). -spec handle_attack ( - bm_battle_action:type(), - bm_character_turn_update:type() + btl_battle_action:type(), + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). handle_attack (BattleAction, Update) -> - Data = bm_character_turn_update:get_data(Update), - Battle = bm_character_turn_data:get_battle(Data), - Character = bm_character_turn_data:get_character(Data), - CharacterIX = bm_character_turn_data:get_character_ix(Data), - TargetIX = bm_battle_action:get_target_ix(BattleAction), - TargetCharacter = bm_battle:get_character(TargetIX, Battle), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + Character = btl_character_turn_data:get_character(Data), + CharacterIX = btl_character_turn_data:get_character_ix(Data), + TargetIX = btl_battle_action:get_target_ix(BattleAction), + TargetCharacter = btl_battle:get_character(TargetIX, Battle), - true = bm_character:get_is_alive(TargetCharacter), + true = btl_character:get_is_alive(TargetCharacter), AttackSequence = get_attack_sequence(Character, TargetCharacter), @@ -286,13 +286,13 @@ handle_attack (BattleAction, Update) -> handle_attack_sequence(Character, TargetCharacter, AttackSequence), UpdatedCharacter = - bm_character:set_current_health(RemainingAttackerHealth, Character), + btl_character:set_current_health(RemainingAttackerHealth, Character), UpdatedBattle = - bm_battle:set_character + btl_battle:set_character ( TargetIX, - bm_character:set_current_health + btl_character:set_current_health ( RemainingDefenderHealth, TargetCharacter @@ -300,11 +300,11 @@ handle_attack (BattleAction, Update) -> Battle ), - S0Data = bm_character_turn_data:set_battle(UpdatedBattle, Data), - S1Data = bm_character_turn_data:set_character(UpdatedCharacter, S0Data), + S0Data = btl_character_turn_data:set_battle(UpdatedBattle, Data), + S1Data = btl_character_turn_data:set_character(UpdatedCharacter, S0Data), TimelineItem = - bm_turn_result:new_character_attacked + btl_turn_result:new_character_attacked ( CharacterIX, TargetIX, @@ -314,12 +314,12 @@ handle_attack (BattleAction, Update) -> DBQuery0 = sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), TargetIX, [ sh_db_query:set_field ( - bm_character:get_current_health_field(), + btl_character:get_current_health_field(), RemainingDefenderHealth ) ] @@ -328,19 +328,19 @@ handle_attack (BattleAction, Update) -> DBQuery1 = sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), CharacterIX, [ sh_db_query:set_field ( - bm_character:get_current_health_field(), + btl_character:get_current_health_field(), RemainingAttackerHealth ) ] ), S0Update = - bm_character_turn_update:add_to_timeline + btl_character_turn_update:add_to_timeline ( TimelineItem, DBQuery0, @@ -348,16 +348,16 @@ handle_attack (BattleAction, Update) -> ), S1Update = - bm_character_turn_update:add_to_db + btl_character_turn_update:add_to_db ( DBQuery1, S0Update ), - S2Update = bm_character_turn_update:set_data(S1Data, S1Update), + S2Update = btl_character_turn_update:set_data(S1Data, S1Update), S3Update = - bm_victory:handle_character_lost_health + btl_victory:handle_character_lost_health ( CharacterIX, RemainingAttackerHealth, @@ -365,7 +365,7 @@ handle_attack (BattleAction, Update) -> ), S4Update = - bm_victory:handle_character_lost_health + btl_victory:handle_character_lost_health ( TargetIX, RemainingDefenderHealth, @@ -379,12 +379,12 @@ handle_attack (BattleAction, Update) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec handle ( - bm_battle_action:type(), - bm_character_turn_update:type() + btl_battle_action:type(), + btl_character_turn_update:type() ) --> bm_character_turn_update:type(). +-> btl_character_turn_update:type(). handle (BattleAction, Update) -> - case bm_battle_action:get_category(BattleAction) of + case btl_battle_action:get_category(BattleAction) of move -> handle_move(BattleAction, Update); switch_weapon -> handle_switch_weapon(Update); attack -> handle_attack(BattleAction, Update) diff --git a/src/battlemap/game-logic/bm_victory.erl b/src/battle/game-logic/btl_victory.erl index 327920a..eef42ad 100644 --- a/src/battlemap/game-logic/bm_victory.erl +++ b/src/battle/game-logic/btl_victory.erl @@ -1,4 +1,4 @@ --module(bm_victory). +-module(btl_victory). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -20,16 +20,16 @@ -spec mark_players_characters_as_defeated ( non_neg_integer(), - array:array(bm_character:type()) - ) -> {array:array(bm_character:type()), list(non_neg_integer())}. + array:array(btl_character:type()) + ) -> {array:array(btl_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) + (btl_character:get_player_index(Character) == PlayerIX) end, fun (Character) -> - bm_character:set_is_defeated(true, Character) + btl_character:set_is_defeated(true, Character) end, Characters ). @@ -37,20 +37,20 @@ mark_players_characters_as_defeated (PlayerIX, Characters) -> -spec add_db_query_to_mark_character_as_defeated ( non_neg_integer(), - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_character_turn_update:type(). add_db_query_to_mark_character_as_defeated (IX, Update) -> - bm_character_turn_update:add_to_db + btl_character_turn_update:add_to_db ( sh_db_query:update_indexed ( - bm_battle:get_characters_field(), + btl_battle:get_characters_field(), IX, [ sh_db_query:set_field ( - bm_character:get_is_defeated_field(), + btl_character:get_is_defeated_field(), true ) ] @@ -61,13 +61,13 @@ add_db_query_to_mark_character_as_defeated (IX, Update) -> -spec handle_player_defeat ( non_neg_integer(), - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_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), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + Characters = btl_battle:get_characters(Battle), %% FIXME: The controlled character might slip through. {UpdatedCharacters, ModifiedIXs} = @@ -83,28 +83,28 @@ handle_player_defeat (PlayerIX, Update) -> %% 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), + UpdatedBattle = btl_battle:set_characters(UpdatedCharacters, Battle), + UpdatedData = btl_character_turn_data:set_battle(UpdatedBattle, Data), + S2Update = btl_character_turn_update:set_data(UpdatedData, S1Update), DBQuery = sh_db_query:update_indexed ( - bm_battle:get_players_field(), + btl_battle:get_players_field(), PlayerIX, [ sh_db_query:set_field ( - bm_player:get_is_active_field(), + btl_player:get_is_active_field(), false ) ] ), S3Update = - bm_character_turn_update:add_to_timeline + btl_character_turn_update:add_to_timeline ( - bm_turn_result:new_player_lost(PlayerIX), + btl_turn_result:new_player_lost(PlayerIX), DBQuery, S2Update ), @@ -115,17 +115,17 @@ handle_player_defeat (PlayerIX, Update) -> -spec actually_handle_character_lost_health ( non_neg_integer(), - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_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), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + Character = btl_battle:get_character(CharIX, Battle), + Characters = btl_battle:get_characters(Battle), + CharacterPlayerIX = btl_character:get_player_index(Character), - case bm_character:get_rank(Character) of + case btl_character:get_rank(Character) of optional -> %% Let's not assume there is a commander StillHasAliveChar = @@ -133,9 +133,9 @@ actually_handle_character_lost_health (CharIX, Update) -> ( fun (IX, Char) -> ( - (CharacterPlayerIX == bm_character:get_player_index(Char)) + (CharacterPlayerIX == btl_character:get_player_index(Char)) and (IX /= CharIX) - and bm_character:get_is_alive(Char) + and btl_character:get_is_alive(Char) ) end, Characters @@ -154,10 +154,10 @@ actually_handle_character_lost_health (CharIX, Update) -> ( fun (IX, Char) -> ( - (CharacterPlayerIX == bm_character:get_player_index(Char)) + (CharacterPlayerIX == btl_character:get_player_index(Char)) and (IX /= CharIX) - and bm_character:get_is_alive(Char) - and (bm_character:get_rank(Char) == target) + and btl_character:get_is_alive(Char) + and (btl_character:get_rank(Char) == target) ) end, Characters @@ -176,19 +176,19 @@ actually_handle_character_lost_health (CharIX, Update) -> ( non_neg_integer(), integer(), - bm_character_turn_update:type() + btl_character_turn_update:type() ) - -> bm_character_turn_update:type(). + -> btl_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), + Data = btl_character_turn_update:get_data(Update), + S1Data = btl_character_turn_data:clean_battle(Data), + S1Update = btl_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), + S2Data = btl_character_turn_update:get_data(S2Update), + S3Data = btl_character_turn_data:refresh_character(S2Data), + S3Update = btl_character_turn_update:set_data(S3Data, S2Update), S3Update. diff --git a/src/battlemap/io/bm_security.erl b/src/battle/io/btl_security.erl index 787082a..cf6bb9b 100644 --- a/src/battlemap/io/bm_security.erl +++ b/src/battle/io/btl_security.erl @@ -1,4 +1,4 @@ --module(bm_security). +-module(btl_security). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battle/query/btl_character_turn.erl b/src/battle/query/btl_character_turn.erl new file mode 100644 index 0000000..c232ab0 --- /dev/null +++ b/src/battle/query/btl_character_turn.erl @@ -0,0 +1,282 @@ +-module(btl_character_turn). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-include("../../../include/yaws_api.hrl"). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([out/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%-spec send_to_database (list(database_diff:type()), character_turn_request:type()) -> 'ok'. + + +%%%% REQUEST DECODING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec decode_request (binary()) -> btl_character_turn_request:type(). +decode_request (BinaryRequest) -> + JSONMap = jiffy:decode(BinaryRequest, [return_maps]), + + btl_character_turn_request:decode(JSONMap). + +%%%% USER AUTHENTICATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec authenticate_user (btl_character_turn_request:type()) -> 'ok'. +authenticate_user (Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + SessionToken = btl_character_turn_request:get_session_token(Request), + + btl_security:assert_identity(PlayerID, SessionToken), + btl_security:lock_queries(PlayerID), + + ok. + +%%%% MAIN LOGIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec fetch_data + ( + btl_character_turn_request:type() + ) + -> btl_character_turn_data:type(). +fetch_data (Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + BattleID = btl_character_turn_request:get_battle_id(Request), + CharacterIX = btl_character_turn_request:get_character_ix(Request), + Battle = sh_timed_cache:fetch(battle_db, PlayerID, BattleID), + + btl_character_turn_data:new(Battle, CharacterIX). + +%%%% ASSERTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec assert_user_is_current_player + ( + btl_character_turn_data:type(), + btl_character_turn_request:type() + ) -> 'ok'. +assert_user_is_current_player (Data, Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + Battle = btl_character_turn_data:get_battle(Data), + CurrentPlayerTurn = btl_battle:get_current_player_turn(Battle), + CurrentPlayerIX = btl_player_turn:get_player_ix(CurrentPlayerTurn), + CurrentPlayer = btl_battle:get_player(CurrentPlayerIX, Battle), + + true = (PlayerID == btl_player:get_id(CurrentPlayer)), + + ok. + +-spec assert_user_owns_played_character + ( + btl_character_turn_data:type(), + btl_character_turn_request:type() + ) -> 'ok'. +assert_user_owns_played_character (Data, Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + Battle = btl_character_turn_data:get_battle(Data), + Players = btl_battle:get_players(Battle), + Character = btl_character_turn_data:get_character(Data), + CharacterPlayerIX = btl_character:get_player_index(Character), + CharacterPlayer = array:get(CharacterPlayerIX, Players), + CharacterPlayerID = btl_player:get_id(CharacterPlayer), + + true = (PlayerID == CharacterPlayerID), + + ok. + +-spec assert_character_can_be_played (btl_character_turn_data:type()) -> 'ok'. +assert_character_can_be_played (Data) -> + Character = btl_character_turn_data:get_character(Data), + + true = btl_character:get_is_active(Character), + + ok. + +-spec assert_user_permissions + ( + btl_character_turn_data:type(), + btl_character_turn_request:type() + ) -> 'ok'. +assert_user_permissions (Data, Request) -> + assert_user_is_current_player(Data, Request), + assert_user_owns_played_character(Data, Request), + assert_character_can_be_played(Data), + + 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 = + sh_db_query:update_indexed + ( + btl_battle:get_characters_field(), + btl_character_turn_data:get_character_ix(Data), + [ sh_db_query:set_field(btl_character:get_is_active_field(), 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). + +-spec update_timeline + ( + btl_character_turn_update:type() + ) + -> btl_character_turn_update:type(). +update_timeline (Update) -> + NewTimelineElements = btl_character_turn_update:get_timeline(Update), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + PlayerTurn = btl_battle:get_current_player_turn(Battle), + PlayerIX = btl_player_turn:get_player_ix(PlayerTurn), + Player = btl_battle:get_player(PlayerIX, Battle), + + UpdatedPlayer = btl_player:add_to_timeline(NewTimelineElements, Player), + UpdatedBattle = btl_battle:set_player(PlayerIX, UpdatedPlayer, Battle), + UpdatedData = btl_character_turn_data:set_battle(UpdatedBattle, Data), + + DBQuery = + sh_db_query:update_indexed + ( + btl_battle:get_players_field(), + PlayerIX, + [ + sh_db_query:add_to_field + ( + btl_player:get_timeline_field(), + NewTimelineElements, + true % We add those to the start of the list + ) + ] + ), + + S0Update = btl_character_turn_update:set_data(UpdatedData, Update), + S1Update = btl_character_turn_update:add_to_db(DBQuery, S0Update), + + S1Update. + + +-spec update_data + ( + btl_character_turn_data:type(), + btl_character_turn_request:type() + ) + -> btl_character_turn_update:type(). +update_data (Data, Request) -> + PostActionsUpdate = handle_actions(Data, Request), + PostCharacterTurnUpdate = update_timeline(PostActionsUpdate), + + btl_next_turn:update_if_needed(PostCharacterTurnUpdate). + +%%%% DATABASE UPDATES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec send_to_database + ( + btl_character_turn_update:type(), + btl_character_turn_request:type() + ) + -> 'ok'. +send_to_database (Update, Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + BattleID = btl_character_turn_request:get_battle_id(Request), + Ops = btl_character_turn_update:get_db(Update), + Query = sh_db_query:new(battle_db, BattleID, {user, PlayerID}, Ops), + + sh_database:commit(Query), + + ok. + +-spec send_to_cache + ( + btl_character_turn_update:type(), + btl_character_turn_request:type() + ) + -> 'ok'. +send_to_cache (Update, Request) -> + PlayerID = btl_character_turn_request:get_player_id(Request), + BattleID = btl_character_turn_request:get_battle_id(Request), + Data = btl_character_turn_update:get_data(Update), + Battle = btl_character_turn_data:get_battle(Data), + + sh_timed_cache:update(battle_db, PlayerID, BattleID, Battle), + + ok. + +-spec commit_update + ( + btl_character_turn_update:type(), + btl_character_turn_request:type() + ) + -> 'ok'. +commit_update (Update, Request) -> + send_to_database(Update, Request), + send_to_cache(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), + + btl_security:unlock_queries(PlayerID), + + ok. + +%%%% REPLY GENERATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec generate_reply (btl_character_turn_update:type()) -> binary(). +generate_reply (Update) -> + NewTimelineItems = btl_character_turn_update:get_timeline(Update), + + TurnResultReply = btl_turn_results:generate(NewTimelineItems), + + jiffy:encode([TurnResultReply]). + +%%%% MAIN LOGIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec handle (binary()) -> binary(). +handle (EncodedRequest) -> + Request = decode_request(EncodedRequest), + authenticate_user(Request), + Data = fetch_data(Request), + assert_user_permissions(Data, Request), + Update = update_data(Data, Request), + commit_update(Update, Request), + disconnect_user(Request), + generate_reply(Update). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +out(A) -> + { + content, + "application/json; charset=UTF-8", + handle(A#arg.clidata) + }. diff --git a/src/battlemap/query/bm_load_state.erl b/src/battle/query/btl_load_state.erl index 505ec3b..f79e24e 100644 --- a/src/battlemap/query/bm_load_state.erl +++ b/src/battle/query/btl_load_state.erl @@ -1,4 +1,4 @@ --module(bm_load_state). +-module(btl_load_state). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -9,7 +9,7 @@ ( input, { - player_id :: bm_player:id(), + player_id :: btl_player:id(), session_token :: binary(), battle_id :: binary() } @@ -19,7 +19,7 @@ ( query_state, { - battle :: bm_battle:type() + battle :: btl_battle:type() } ). @@ -39,7 +39,7 @@ parse_input (Req) -> JSONReqMap = jiffy:decode(Req, [return_maps]), PlayerID = maps:get(<<"pid">>, JSONReqMap), SessionToken = maps:get(<<"stk">>, JSONReqMap), - BattleID = maps:get(<<"bmi">>, JSONReqMap), + BattleID = maps:get(<<"bid">>, JSONReqMap), #input { @@ -64,13 +64,13 @@ fetch_data (Input) -> generate_reply (QueryState, Input) -> PlayerID = Input#input.player_id, Battle = QueryState#query_state.battle, - Players = bm_battle:get_players(Battle), + Players = btl_battle:get_players(Battle), PlayerIX = sh_array_util:first ( fun (Player) -> - (bm_player:get_id(Player) == PlayerID) + (btl_player:get_id(Player) == PlayerID) end, Players ), @@ -78,12 +78,12 @@ generate_reply (QueryState, Input) -> true = (PlayerIX >= 0), SetTimeline = - bm_set_timeline:generate + btl_set_timeline:generate ( - bm_battle:get_encoded_last_turns_effects(Battle) + btl_battle:get_encoded_last_turns_effects(Battle) ), - SetMap = bm_set_map:generate(bm_battle:get_battlemap(Battle)), + SetMap = btl_set_map:generate(btl_battle:get_battlemap(Battle)), AddCharList = array:sparse_to_list @@ -91,9 +91,9 @@ generate_reply (QueryState, Input) -> array:map ( fun (IX, Character) -> - bm_add_char:generate(IX, Character, PlayerIX) + btl_add_char:generate(IX, Character, PlayerIX) end, - bm_battle:get_characters(Battle) + btl_battle:get_characters(Battle) ) ), @@ -101,27 +101,27 @@ generate_reply (QueryState, Input) -> lists:map ( fun (WeaponID) -> - bm_add_weapon:generate(sh_weapon:from_id(WeaponID)) + btl_add_weapon:generate(sh_weapon:from_id(WeaponID)) end, - bm_battle:get_used_weapon_ids(Battle) + btl_battle:get_used_weapon_ids(Battle) ), AddArmorList = lists:map ( fun (ArmorID) -> - bm_add_armor:generate(sh_armor:from_id(ArmorID)) + btl_add_armor:generate(sh_armor:from_id(ArmorID)) end, - bm_battle:get_used_armor_ids(Battle) + btl_battle:get_used_armor_ids(Battle) ), AddTileList = lists:map ( fun (TileID) -> - bm_add_tile:generate(bm_tile:from_id(TileID)) + btl_add_tile:generate(btl_tile:from_id(TileID)) end, - bm_battle:get_used_tile_ids(Battle) + btl_battle:get_used_tile_ids(Battle) ), OutputList = @@ -138,14 +138,14 @@ generate_reply (QueryState, Input) -> -spec handle (binary()) -> binary(). handle (Req) -> Input = parse_input(Req), - bm_security:assert_identity + btl_security:assert_identity ( Input#input.player_id, Input#input.session_token ), - bm_security:lock_queries(Input#input.player_id), + btl_security:lock_queries(Input#input.player_id), QueryState = fetch_data(Input), - bm_security:unlock_queries(Input#input.player_id), + btl_security:unlock_queries(Input#input.player_id), generate_reply(QueryState, Input). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/reply/bm_add_armor.erl b/src/battle/reply/btl_add_armor.erl index 4f098bd..2c6a875 100644 --- a/src/battlemap/reply/bm_add_armor.erl +++ b/src/battle/reply/btl_add_armor.erl @@ -1,4 +1,4 @@ --module(bm_add_armor). +-module(btl_add_armor). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/reply/bm_add_char.erl b/src/battle/reply/btl_add_char.erl index 4dab700..75b6fcd 100644 --- a/src/battlemap/reply/bm_add_char.erl +++ b/src/battle/reply/btl_add_char.erl @@ -1,4 +1,4 @@ --module(bm_add_char). +-module(btl_add_char). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -12,7 +12,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec rank_to_string (bm_character:rank()) -> binary(). +-spec rank_to_string (btl_character:rank()) -> binary(). rank_to_string (Rank) -> case Rank of optional -> <<"o">>; @@ -43,41 +43,41 @@ attributes_as_json (Attributes) -> -spec generate ( non_neg_integer(), - bm_character:type(), + btl_character:type(), non_neg_integer() ) -> {list(any())}. generate (IX, Character, PlayerIX) -> - Attributes = bm_character:get_attributes(Character), - {ActiveWeapon, SecondaryWeapon} = bm_character:get_weapon_ids(Character), - CharacterPlayerIX = bm_character:get_player_index(Character), - Location = bm_character:get_location(Character), + Attributes = btl_character:get_attributes(Character), + {ActiveWeapon, SecondaryWeapon} = btl_character:get_weapon_ids(Character), + CharacterPlayerIX = btl_character:get_player_index(Character), + Location = btl_character:get_location(Character), { [ {<<"msg">>, <<"add_char">>}, {<<"ix">>, IX}, - {<<"nam">>, bm_character:get_name(Character)}, - {<<"rnk">>, rank_to_string(bm_character:get_rank(Character))}, - {<<"ico">>, bm_character:get_icon(Character)}, - {<<"prt">>, bm_character:get_portrait(Character)}, + {<<"nam">>, btl_character:get_name(Character)}, + {<<"rnk">>, rank_to_string(btl_character:get_rank(Character))}, + {<<"ico">>, btl_character:get_icon(Character)}, + {<<"prt">>, btl_character:get_portrait(Character)}, { <<"hea">>, - bm_character:get_current_health(Character) + btl_character:get_current_health(Character) }, - {<<"lc">>, bm_location:encode(Location)}, + {<<"lc">>, btl_location:encode(Location)}, {<<"pla">>, CharacterPlayerIX}, { <<"ena">>, ( - bm_character:get_is_active(Character) + btl_character:get_is_active(Character) and (CharacterPlayerIX == PlayerIX) ) }, - {<<"dea">>, bm_character:get_is_defeated(Character)}, + {<<"dea">>, btl_character:get_is_defeated(Character)}, {<<"att">>, attributes_as_json(Attributes)}, {<<"awp">>, ActiveWeapon}, {<<"swp">>, SecondaryWeapon}, - {<<"ar">>, bm_character:get_armor_id(Character)} + {<<"ar">>, btl_character:get_armor_id(Character)} ] }. diff --git a/src/battlemap/reply/bm_add_tile.erl b/src/battle/reply/btl_add_tile.erl index 1845ffc..04c4ec2 100644 --- a/src/battlemap/reply/bm_add_tile.erl +++ b/src/battle/reply/btl_add_tile.erl @@ -1,4 +1,4 @@ --module(bm_add_tile). +-module(btl_add_tile). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,15 +16,15 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate (bm_tile:type()) -> {list(any())}. +-spec generate (btl_tile:type()) -> {list(any())}. generate (Tile) -> { [ {<<"msg">>, <<"add_tile">>}, - {<<"id">>, bm_tile:get_id(Tile)}, - {<<"nam">>, bm_tile:get_name(Tile)}, - {<<"ct">>, bm_tile:get_cost(Tile)}, - {<<"rmi">>, bm_tile:get_range_minimum(Tile)}, - {<<"rma">>, bm_tile:get_range_maximum(Tile)} + {<<"id">>, btl_tile:get_id(Tile)}, + {<<"nam">>, btl_tile:get_name(Tile)}, + {<<"ct">>, btl_tile:get_cost(Tile)}, + {<<"rmi">>, btl_tile:get_range_minimum(Tile)}, + {<<"rma">>, btl_tile:get_range_maximum(Tile)} ] }. diff --git a/src/battlemap/reply/bm_add_weapon.erl b/src/battle/reply/btl_add_weapon.erl index 3473265..d4edbef 100644 --- a/src/battlemap/reply/bm_add_weapon.erl +++ b/src/battle/reply/btl_add_weapon.erl @@ -1,4 +1,4 @@ --module(bm_add_weapon). +-module(btl_add_weapon). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/reply/bm_set_map.erl b/src/battle/reply/btl_set_map.erl index 9989fa0..37c6331 100644 --- a/src/battlemap/reply/bm_set_map.erl +++ b/src/battle/reply/btl_set_map.erl @@ -1,4 +1,4 @@ --module(bm_set_map). +-module(btl_set_map). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,16 +16,16 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate (bm_battlemap:type()) -> {list(any())}. +-spec generate (btl_battlemap:type()) -> {list(any())}. generate (Battlemap) -> { [ {<<"msg">>, <<"set_map">>}, - {<<"w">>, bm_battlemap:get_width(Battlemap)}, - {<<"h">>, bm_battlemap:get_height(Battlemap)}, + {<<"w">>, btl_battlemap:get_width(Battlemap)}, + {<<"h">>, btl_battlemap:get_height(Battlemap)}, { <<"t">>, - array:sparse_to_list(bm_battlemap:get_tile_class_ids(Battlemap)) + array:sparse_to_list(btl_battlemap:get_tile_class_ids(Battlemap)) } ] }. diff --git a/src/battlemap/reply/bm_set_timeline.erl b/src/battle/reply/btl_set_timeline.erl index cea3790..e6f571f 100644 --- a/src/battlemap/reply/bm_set_timeline.erl +++ b/src/battle/reply/btl_set_timeline.erl @@ -1,4 +1,4 @@ --module(bm_set_timeline). +-module(btl_set_timeline). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/reply/bm_turn_results.erl b/src/battle/reply/btl_turn_results.erl index d47a693..361cab1 100644 --- a/src/battlemap/reply/bm_turn_results.erl +++ b/src/battle/reply/btl_turn_results.erl @@ -1,4 +1,4 @@ --module(bm_turn_results). +-module(btl_turn_results). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_attack.erl b/src/battle/struct/btl_attack.erl index a1ce027..aa7659f 100644 --- a/src/battlemap/struct/bm_attack.erl +++ b/src/battle/struct/btl_attack.erl @@ -1,4 +1,4 @@ --module(bm_attack). +-module(btl_attack). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -86,14 +86,14 @@ roll_parry (DefenderStatistics) -> -spec effect_of_attack ( order(), - bm_character:type(), - bm_character:type(), + btl_character:type(), + btl_character:type(), boolean() ) -> type(). effect_of_attack (Order, Attacker, Defender, CanParry) -> - AttackerStatistics = bm_character:get_statistics(Attacker), - DefenderStatistics = bm_character:get_statistics(Defender), + AttackerStatistics = btl_character:get_statistics(Attacker), + DefenderStatistics = btl_character:get_statistics(Defender), ParryIsSuccessful = (CanParry and roll_parry(DefenderStatistics)), @@ -108,8 +108,8 @@ effect_of_attack (Order, Attacker, Defender, CanParry) -> false -> {Attacker, Defender} end, - ActualDefArmor = sh_armor:from_id(bm_character:get_armor_id(ActualDefender)), - {ActualAtkWeaponID, _} = bm_character:get_weapon_ids(ActualAttacker), + ActualDefArmor = sh_armor:from_id(btl_character:get_armor_id(ActualDefender)), + {ActualAtkWeaponID, _} = btl_character:get_weapon_ids(ActualAttacker), ActualAtkWeaponDmgType = sh_weapon:get_damage_type(sh_weapon:from_id(ActualAtkWeaponID)), @@ -151,14 +151,14 @@ encode_precision (misses) -> <<"m">>. -spec get_description_of ( step(), - bm_character:type(), - bm_character:type() + btl_character:type(), + btl_character:type() ) -> maybe_type(). get_description_of ({first, CanParry}, Attacker, Defender) -> effect_of_attack(first, Attacker, Defender, CanParry); get_description_of ({second, CanParry}, Attacker, Defender) -> - AttackerStatistics = bm_character:get_statistics(Attacker), + AttackerStatistics = btl_character:get_statistics(Attacker), AttackerDoubleAttackChange = sh_statistics:get_double_hits(AttackerStatistics), diff --git a/src/battlemap/struct/bm_battle.erl b/src/battle/struct/btl_battle.erl index 4c93460..8befc4e 100644 --- a/src/battlemap/struct/bm_battle.erl +++ b/src/battle/struct/btl_battle.erl @@ -1,4 +1,4 @@ --module(bm_battle). +-module(btl_battle). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -12,11 +12,11 @@ id :: id(), used_armor_ids :: list(sh_armor:id()), used_weapon_ids :: list(sh_weapon:id()), - used_tile_ids :: list(bm_tile:id()), - battlemap :: bm_battlemap:type(), - characters :: array:array(bm_character:type()), - players :: array:array(bm_player:type()), - current_player_turn :: bm_player_turn:type() + used_tile_ids :: list(btl_tile:id()), + battlemap :: btl_battlemap:type(), + characters :: array:array(btl_character:type()), + players :: array:array(btl_player:type()), + current_player_turn :: btl_player_turn:type() } ). @@ -68,7 +68,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% get_all_timelines (Result, CurrentIndex, EndPoint, ArraySize, Players) -> Player = array:get(CurrentIndex, Players), - Timeline = bm_player:get_timeline(Player), + Timeline = btl_player:get_timeline(Player), NextIndex = ((CurrentIndex + 1) rem ArraySize), NextResult = (Timeline ++ Result), case CurrentIndex of @@ -92,28 +92,28 @@ get_used_weapon_ids (Battle) -> Battle#battle.used_weapon_ids. -spec get_used_armor_ids (type()) -> list(sh_armor:id()). get_used_armor_ids (Battle) -> Battle#battle.used_armor_ids. --spec get_used_tile_ids (type()) -> list(bm_tile:id()). +-spec get_used_tile_ids (type()) -> list(btl_tile:id()). get_used_tile_ids (Battle) -> Battle#battle.used_tile_ids. --spec get_battlemap (type()) -> bm_battlemap:type(). +-spec get_battlemap (type()) -> btl_battlemap:type(). get_battlemap (Battle) -> Battle#battle.battlemap. --spec get_characters (type()) -> array:array(bm_character:type()). +-spec get_characters (type()) -> array:array(btl_character:type()). get_characters (Battle) -> Battle#battle.characters. --spec get_character (non_neg_integer(), type()) -> bm_character:type(). +-spec get_character (non_neg_integer(), type()) -> btl_character:type(). get_character (IX, Battle) -> array:get(IX, Battle#battle.characters). --spec get_players (type()) -> array:array(bm_player:type()). +-spec get_players (type()) -> array:array(btl_player:type()). get_players (Battle) -> Battle#battle.players. --spec get_player (non_neg_integer(), type()) -> bm_player:type(). +-spec get_player (non_neg_integer(), type()) -> btl_player:type(). get_player (IX, Battle) -> array:get(IX, Battle#battle.players). --spec get_current_player_turn (type()) -> bm_player_turn:type(). +-spec get_current_player_turn (type()) -> btl_player_turn:type(). get_current_player_turn (Battle) -> Battle#battle.current_player_turn. @@ -121,27 +121,27 @@ get_current_player_turn (Battle) -> get_encoded_last_turns_effects (Battle) -> CurrentPlayerTurn = Battle#battle.current_player_turn, Players = Battle#battle.players, - CurrentPlayerIX = bm_player_turn:get_player_ix(CurrentPlayerTurn), + CurrentPlayerIX = btl_player_turn:get_player_ix(CurrentPlayerTurn), PlayersCount = array:size(Players), StartingPoint = ((CurrentPlayerIX + 1) rem PlayersCount), get_all_timelines([], StartingPoint, CurrentPlayerIX, PlayersCount, Players). --spec set_battlemap (bm_battlemap:type(), type()) -> type(). +-spec set_battlemap (btl_battlemap:type(), type()) -> type(). set_battlemap (Battlemap, Battle) -> Battle#battle { battlemap = Battlemap }. --spec set_characters (array:array(bm_character:type()), type()) -> type(). +-spec set_characters (array:array(btl_character:type()), type()) -> type(). set_characters (Characters, Battle) -> Battle#battle { characters = Characters }. --spec set_character (non_neg_integer(), bm_character:type(), type()) -> type(). +-spec set_character (non_neg_integer(), btl_character:type(), type()) -> type(). set_character (IX, Character, Battle) -> Battle#battle { @@ -154,14 +154,14 @@ set_character (IX, Character, Battle) -> ) }. --spec set_players (array:array(bm_player:type()), type()) -> type(). +-spec set_players (array:array(btl_player:type()), type()) -> type(). set_players (Players, Battle) -> Battle#battle { players = Players }. --spec set_player (non_neg_integer(), bm_player:type(), type()) -> type(). +-spec set_player (non_neg_integer(), btl_player:type(), type()) -> type(). set_player (IX, Player, Battle) -> Battle#battle { @@ -174,7 +174,7 @@ set_player (IX, Player, Battle) -> ) }. --spec set_current_player_turn (bm_player_turn:type(), type()) -> type(). +-spec set_current_player_turn (btl_player_turn:type(), type()) -> type(). set_current_player_turn (PlayerTurn, Battle) -> Battle#battle { @@ -184,12 +184,12 @@ set_current_player_turn (PlayerTurn, Battle) -> -spec new ( id(), - list(bm_player:type()), - bm_battlemap:type(), - list(bm_character:type()), + list(btl_player:type()), + btl_battlemap:type(), + list(btl_character:type()), list(sh_weapon:id()), list(sh_armor:id()), - list(bm_tile:id()) + list(btl_tile:id()) ) -> type(). new (ID, PlayersAsList, Battlemap, CharactersAsList, UWIDs, UAIDs, UTIDs) -> @@ -202,7 +202,7 @@ new (ID, PlayersAsList, Battlemap, CharactersAsList, UWIDs, UAIDs, UTIDs) -> battlemap = Battlemap, characters = array:from_list(CharactersAsList), players = array:from_list(PlayersAsList), - current_player_turn = bm_player_turn:new(0, 0) + current_player_turn = btl_player_turn:new(0, 0) }. diff --git a/src/battlemap/struct/bm_battle_action.erl b/src/battle/struct/btl_battle_action.erl index 1bc0f3b..307043a 100644 --- a/src/battlemap/struct/bm_battle_action.erl +++ b/src/battle/struct/btl_battle_action.erl @@ -1,4 +1,4 @@ --module(bm_battle_action). +-module(btl_battle_action). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -7,7 +7,7 @@ ( move, { - path :: list(bm_direction:enum()) + path :: list(btl_direction:enum()) } ). @@ -57,7 +57,7 @@ -spec decode_mov_action (map()) -> type(). decode_mov_action (JSONMap) -> PathInBinary = maps:get(<<"p">>, JSONMap), - Path = lists:map(fun bm_direction:decode/1, PathInBinary), + Path = lists:map(fun btl_direction:decode/1, PathInBinary), #move { path = Path }. @@ -92,7 +92,7 @@ can_follow (switch_weapon, attack) -> true; can_follow (move, attack) -> true; can_follow (_, _) -> false. --spec get_path (type()) -> list(bm_direction:type()). +-spec get_path (type()) -> list(btl_direction:type()). get_path (Action) when is_record(Action, move) -> Action#move.path; get_path (_) -> diff --git a/src/battlemap/struct/bm_battlemap.erl b/src/battle/struct/btl_battlemap.erl index 77d3041..886e2a9 100644 --- a/src/battlemap/struct/bm_battlemap.erl +++ b/src/battle/struct/btl_battlemap.erl @@ -1,4 +1,4 @@ --module(bm_battlemap). +-module(btl_battlemap). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -12,7 +12,7 @@ id :: id(), width :: integer(), height :: integer(), - tile_class_ids :: array:array(bm_tile:class_id()) + tile_class_ids :: array:array(btl_tile:class_id()) } ). @@ -48,7 +48,7 @@ -spec location_to_array_index ( non_neg_integer(), - bm_location:type() + btl_location:type() ) -> ('error' | non_neg_integer()). location_to_array_index (ArrayWidth, {X, Y}) -> @@ -72,10 +72,10 @@ get_width (Battlemap) -> Battlemap#battlemap.width. -spec get_height (type()) -> integer(). get_height (Battlemap) -> Battlemap#battlemap.height. --spec get_tile_class_ids (type()) -> array:array(bm_tile:class_id()). +-spec get_tile_class_ids (type()) -> array:array(btl_tile:class_id()). get_tile_class_ids (Battlemap) -> Battlemap#battlemap.tile_class_ids. --spec get_tile_class_id (bm_location:type(), type()) -> bm_tile:class_id(). +-spec get_tile_class_id (btl_location:type(), type()) -> btl_tile:class_id(). get_tile_class_id (Location, Battlemap) -> TileIX = location_to_array_index(Battlemap#battlemap.width, Location), array:get(TileIX, Battlemap#battlemap.tile_class_ids). @@ -89,7 +89,7 @@ get_tile_class_id (Location, Battlemap) -> ) -> type(). from_list (ID, Width, Height, List) -> - TileClassIDs = lists:map(fun bm_tile:class_id_from_int/1, List), + TileClassIDs = lists:map(fun btl_tile:class_id_from_int/1, List), #battlemap { diff --git a/src/battlemap/struct/bm_character.erl b/src/battle/struct/btl_character.erl index b0e19ed..841f4ea 100644 --- a/src/battlemap/struct/bm_character.erl +++ b/src/battle/struct/btl_character.erl @@ -1,4 +1,4 @@ --module(bm_character). +-module(btl_character). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_character_turn_data.erl b/src/battle/struct/btl_character_turn_data.erl index 65b650c..31a4b7d 100644 --- a/src/battlemap/struct/bm_character_turn_data.erl +++ b/src/battle/struct/btl_character_turn_data.erl @@ -1,4 +1,4 @@ --module(bm_character_turn_data). +-module(btl_character_turn_data). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -8,8 +8,8 @@ type, { dirty :: boolean(), - battle :: bm_battle:type(), - character :: bm_character:type(), + battle :: btl_battle:type(), + character :: btl_character:type(), character_ix :: non_neg_integer() } ). @@ -51,9 +51,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new (bm_battle:type(), non_neg_integer()) -> type(). +-spec new (btl_battle:type(), non_neg_integer()) -> type(). new (Battle, CharacterIX) -> - Character = bm_battle:get_character(CharacterIX, Battle), + Character = btl_battle:get_character(CharacterIX, Battle), #type { @@ -66,20 +66,20 @@ new (Battle, CharacterIX) -> -spec get_battle_is_dirty (type()) -> boolean(). get_battle_is_dirty (Data) -> Data#type.dirty. --spec get_battle (type()) -> bm_battle:type(). +-spec get_battle (type()) -> btl_battle:type(). get_battle (Data) -> Data#type.battle. --spec get_character (type()) -> bm_character:type(). +-spec get_character (type()) -> btl_character:type(). get_character (Data) -> Data#type.character. -spec get_character_ix (type()) -> non_neg_integer(). get_character_ix (Data) -> Data#type.character_ix. --spec set_battle (bm_battle:type(), type()) -> type(). +-spec set_battle (btl_battle:type(), type()) -> type(). set_battle (Battle, Data) -> Data#type{ battle = Battle }. --spec set_character (bm_character:type(), type()) -> type(). +-spec set_character (btl_character:type(), type()) -> type(). set_character (Character, Data) -> Data#type { @@ -93,7 +93,7 @@ clean_battle (Data) -> { dirty = false, battle = - bm_battle:set_character + btl_battle:set_character ( Data#type.character_ix, Data#type.character, @@ -107,7 +107,7 @@ refresh_character (Data) -> { dirty = false, character = - bm_battle:get_character + btl_battle:get_character ( Data#type.character_ix, Data#type.battle diff --git a/src/battlemap/struct/bm_character_turn_request.erl b/src/battle/struct/btl_character_turn_request.erl index 51c87a3..a4f310d 100644 --- a/src/battlemap/struct/bm_character_turn_request.erl +++ b/src/battle/struct/btl_character_turn_request.erl @@ -1,4 +1,4 @@ --module(bm_character_turn_request). +-module(btl_character_turn_request). -define(PLAYER_ID_FIELD, <<"pid">>). -define(SESSION_TOKEN_FIELD, <<"stk">>). @@ -13,11 +13,11 @@ ( type, { - player_id :: bm_player:id(), + player_id :: btl_player:id(), session_token :: binary(), battle_id :: binary(), character_ix :: non_neg_integer(), - actions :: list(bm_battle_action:type()) + actions :: list(btl_battle_action:type()) } ). @@ -57,7 +57,7 @@ decode (Map) -> CharacterIX = maps:get(?CHAR_IX_FIELD, Map), EncodedActions = maps:get(?ACTIONS_FIELD, Map), - Actions = lists:map(fun bm_battle_action:decode/1, EncodedActions), + Actions = lists:map(fun btl_battle_action:decode/1, EncodedActions), #type { @@ -68,7 +68,7 @@ decode (Map) -> actions = Actions }. --spec get_player_id (type()) -> bm_player:id(). +-spec get_player_id (type()) -> btl_player:id(). get_player_id (Request) -> Request#type.player_id. -spec get_session_token (type()) -> binary(). @@ -80,5 +80,5 @@ get_battle_id (Request) -> Request#type.battle_id. -spec get_character_ix (type()) -> non_neg_integer(). get_character_ix (Request) -> Request#type.character_ix. --spec get_actions (type()) -> list(bm_battle_action:type()). +-spec get_actions (type()) -> list(btl_battle_action:type()). get_actions (Request) -> Request#type.actions. diff --git a/src/battlemap/struct/bm_character_turn_update.erl b/src/battle/struct/btl_character_turn_update.erl index 1ca5d94..a6b29d9 100644 --- a/src/battlemap/struct/bm_character_turn_update.erl +++ b/src/battle/struct/btl_character_turn_update.erl @@ -1,4 +1,4 @@ --module(bm_character_turn_update). +-module(btl_character_turn_update). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -7,7 +7,7 @@ ( type, { - data :: bm_character_turn_data:type(), + data :: btl_character_turn_data:type(), timeline :: list(any()), db :: list(sh_db_query:op()) } @@ -42,7 +42,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new (bm_character_turn_data:type()) -> type(). +-spec new (btl_character_turn_data:type()) -> type(). new (Data) -> #type { @@ -51,7 +51,7 @@ new (Data) -> db = [] }. --spec get_data (type()) -> bm_character_turn_data:type(). +-spec get_data (type()) -> btl_character_turn_data:type(). get_data (Update) -> Update#type.data. -spec get_timeline (type()) -> list(any()). @@ -60,13 +60,13 @@ get_timeline (Update) -> Update#type.timeline. -spec get_db (type()) -> list(sh_db_query:op()). get_db (Update) -> Update#type.db. --spec set_data (bm_character_turn_data:type(), type()) -> type(). +-spec set_data (btl_character_turn_data:type(), type()) -> type(). set_data (Data, Update) -> Update#type{ data = Data}. -spec add_to_timeline ( - bm_turn_result:type(), + btl_turn_result:type(), sh_db_query:op(), type() ) -> type(). @@ -76,7 +76,7 @@ add_to_timeline (Item, DBUpdate, Update) -> DBUpdate, Update#type { - timeline = [bm_turn_result:encode(Item)|Update#type.timeline] + timeline = [btl_turn_result:encode(Item)|Update#type.timeline] } ). diff --git a/src/battlemap/struct/bm_direction.erl b/src/battle/struct/btl_direction.erl index 2da3936..9fb5a01 100644 --- a/src/battlemap/struct/bm_direction.erl +++ b/src/battle/struct/btl_direction.erl @@ -1,4 +1,4 @@ --module(bm_direction). +-module(btl_direction). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_location.erl b/src/battle/struct/btl_location.erl index 056d10c..9670cb0 100644 --- a/src/battlemap/struct/bm_location.erl +++ b/src/battle/struct/btl_location.erl @@ -1,4 +1,4 @@ --module(bm_location). +-module(btl_location). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -44,7 +44,7 @@ validate ({X, Y}) -> -spec get_nowhere () -> type(). get_nowhere () -> nowhere. --spec apply_direction (bm_direction:enum(), type()) -> type(). +-spec apply_direction (btl_direction:enum(), type()) -> type(). apply_direction (left, {X, Y}) -> validate({(X - 1), Y}); apply_direction (right, {X, Y}) -> diff --git a/src/battlemap/struct/bm_player.erl b/src/battle/struct/btl_player.erl index 6e5338d..1cb1d93 100644 --- a/src/battlemap/struct/bm_player.erl +++ b/src/battle/struct/btl_player.erl @@ -1,4 +1,4 @@ --module(bm_player). +-module(btl_player). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_player_turn.erl b/src/battle/struct/btl_player_turn.erl index c72112a..e0665f4 100644 --- a/src/battlemap/struct/bm_player_turn.erl +++ b/src/battle/struct/btl_player_turn.erl @@ -1,4 +1,4 @@ --module(bm_player_turn). +-module(btl_player_turn). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -43,7 +43,7 @@ -spec next_valid_player ( non_neg_integer(), - array:array(bm_player:type()), + array:array(btl_player:type()), non_neg_integer(), non_neg_integer() ) -> non_neg_integer(). @@ -52,7 +52,7 @@ next_valid_player (StartingPoint, _Players, _PlayersCount, StartingPoint) -> next_valid_player (CandidateIX, Players, PlayersCount, StartingPoint) -> Candidate = array:get(CandidateIX, Players), - case bm_player:get_is_active(Candidate) of + case btl_player:get_is_active(Candidate) of true -> CandidateIX; _ -> next_valid_player @@ -82,7 +82,7 @@ get_number (PlayerTurn) -> PlayerTurn#player_turn.number. -spec get_player_ix (type()) -> non_neg_integer(). get_player_ix (PlayerTurn) -> PlayerTurn#player_turn.player_ix. --spec next (array:array(bm_player:type()), type()) -> type(). +-spec next (array:array(btl_player:type()), type()) -> type(). next (Players, CurrentPlayerTurn) -> CurrentPlayerIX = CurrentPlayerTurn#player_turn.player_ix, CurrentTurnNumber = CurrentPlayerTurn#player_turn.number, diff --git a/src/battlemap/struct/bm_tile.erl b/src/battle/struct/btl_tile.erl index cf00b7a..16e671b 100644 --- a/src/battlemap/struct/bm_tile.erl +++ b/src/battle/struct/btl_tile.erl @@ -1,4 +1,4 @@ --module(bm_tile). +-module(btl_tile). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_turn_result.erl b/src/battle/struct/btl_turn_result.erl index 79fd7f3..97169e3 100644 --- a/src/battlemap/struct/bm_turn_result.erl +++ b/src/battle/struct/btl_turn_result.erl @@ -1,4 +1,4 @@ --module(bm_turn_result). +-module(btl_turn_result). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -8,7 +8,7 @@ ( switched_weapon, { - character_ix :: bm_character:id() + character_ix :: btl_character:id() } ). @@ -16,9 +16,9 @@ ( moved, { - character_ix :: bm_character:id(), - path :: list(bm_direction:enum()), - new_location :: bm_location:type() + character_ix :: btl_character:id(), + path :: list(btl_direction:enum()), + new_location :: btl_location:type() } ). @@ -26,9 +26,9 @@ ( attacked, { - attacker_ix :: bm_character:id(), - defender_ix :: bm_character:id(), - sequence :: list(bm_attack:type()) + attacker_ix :: btl_character:id(), + defender_ix :: btl_character:id(), + sequence :: list(btl_attack:type()) } ). @@ -108,15 +108,15 @@ new_player_lost (PlayerIX) -> new_player_turn_started (PlayerIX) -> #player_turn_started { player_ix = PlayerIX }. --spec new_character_switched_weapons (bm_character:id()) -> type(). +-spec new_character_switched_weapons (btl_character:id()) -> type(). new_character_switched_weapons (CharacterIX) -> #switched_weapon { character_ix = CharacterIX }. -spec new_character_moved ( - bm_character:id(), - list(bm_direction:enum()), - bm_location:type() + btl_character:id(), + list(btl_direction:enum()), + btl_location:type() ) -> type(). new_character_moved (CharacterIX, Path, NewLocation) -> @@ -129,9 +129,9 @@ new_character_moved (CharacterIX, Path, NewLocation) -> -spec new_character_attacked ( - bm_character:id(), - bm_character:id(), - list(bm_attack:type()) + btl_character:id(), + btl_character:id(), + list(btl_attack:type()) ) -> type(). new_character_attacked (AttackerIX, DefenderIX, AttackSequence) -> @@ -157,8 +157,8 @@ encode (TurnResult) when is_record(TurnResult, moved) -> Path = TurnResult#moved.path, NewLocation = TurnResult#moved.new_location, - EncodedPath = lists:map(fun bm_direction:encode/1, Path), - EncodedNewLocation = bm_location:encode(NewLocation), + EncodedPath = lists:map(fun btl_direction:encode/1, Path), + EncodedNewLocation = btl_location:encode(NewLocation), { [ @@ -173,7 +173,7 @@ encode (TurnResult) when is_record(TurnResult, attacked) -> DefenderIX = TurnResult#attacked.defender_ix, Sequence = TurnResult#attacked.sequence, - EncodedSequence = lists:map(fun bm_attack:encode/1, Sequence), + EncodedSequence = lists:map(fun btl_attack:encode/1, Sequence), { [ diff --git a/src/battlemap/query/bm_character_turn.erl b/src/battlemap/query/bm_character_turn.erl deleted file mode 100644 index 7a7476c..0000000 --- a/src/battlemap/query/bm_character_turn.erl +++ /dev/null @@ -1,282 +0,0 @@ --module(bm_character_turn). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../../../include/yaws_api.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export([out/1]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%-spec send_to_database (list(database_diff:type()), character_turn_request:type()) -> 'ok'. - - -%%%% REQUEST DECODING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec decode_request (binary()) -> bm_character_turn_request:type(). -decode_request (BinaryRequest) -> - JSONMap = jiffy:decode(BinaryRequest, [return_maps]), - - bm_character_turn_request:decode(JSONMap). - -%%%% USER AUTHENTICATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec authenticate_user (bm_character_turn_request:type()) -> 'ok'. -authenticate_user (Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - SessionToken = bm_character_turn_request:get_session_token(Request), - - bm_security:assert_identity(PlayerID, SessionToken), - bm_security:lock_queries(PlayerID), - - ok. - -%%%% MAIN LOGIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec fetch_data - ( - bm_character_turn_request:type() - ) - -> bm_character_turn_data:type(). -fetch_data (Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - BattleID = bm_character_turn_request:get_battle_id(Request), - CharacterIX = bm_character_turn_request:get_character_ix(Request), - Battle = sh_timed_cache:fetch(battle_db, PlayerID, BattleID), - - bm_character_turn_data:new(Battle, CharacterIX). - -%%%% ASSERTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec assert_user_is_current_player - ( - bm_character_turn_data:type(), - bm_character_turn_request:type() - ) -> 'ok'. -assert_user_is_current_player (Data, Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - Battle = bm_character_turn_data:get_battle(Data), - CurrentPlayerTurn = bm_battle:get_current_player_turn(Battle), - CurrentPlayerIX = bm_player_turn:get_player_ix(CurrentPlayerTurn), - CurrentPlayer = bm_battle:get_player(CurrentPlayerIX, Battle), - - true = (PlayerID == bm_player:get_id(CurrentPlayer)), - - ok. - --spec assert_user_owns_played_character - ( - bm_character_turn_data:type(), - bm_character_turn_request:type() - ) -> 'ok'. -assert_user_owns_played_character (Data, Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - Battle = bm_character_turn_data:get_battle(Data), - Players = bm_battle:get_players(Battle), - Character = bm_character_turn_data:get_character(Data), - CharacterPlayerIX = bm_character:get_player_index(Character), - CharacterPlayer = array:get(CharacterPlayerIX, Players), - CharacterPlayerID = bm_player:get_id(CharacterPlayer), - - true = (PlayerID == CharacterPlayerID), - - ok. - --spec assert_character_can_be_played (bm_character_turn_data:type()) -> 'ok'. -assert_character_can_be_played (Data) -> - Character = bm_character_turn_data:get_character(Data), - - true = bm_character:get_is_active(Character), - - ok. - --spec assert_user_permissions - ( - bm_character_turn_data:type(), - bm_character_turn_request:type() - ) -> 'ok'. -assert_user_permissions (Data, Request) -> - assert_user_is_current_player(Data, Request), - assert_user_owns_played_character(Data, Request), - assert_character_can_be_played(Data), - - ok. - -%%%% QUERY LOGIC HANDLING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec finalize_character - ( - bm_character_turn_update:type() - ) - -> bm_character_turn_update:type(). -finalize_character (Update) -> - Data = bm_character_turn_update:get_data(Update), - Character = bm_character_turn_data:get_character(Data), - - DisabledCharacter = bm_character:set_is_active(false, Character), - UpdatedData = bm_character_turn_data:set_character(DisabledCharacter, Data), - FinalizedData = bm_character_turn_data:clean_battle(UpdatedData), - - DBQuery = - sh_db_query:update_indexed - ( - bm_battle:get_characters_field(), - bm_character_turn_data:get_character_ix(Data), - [ sh_db_query:set_field(bm_character:get_is_active_field(), false) ] - ), - - S0Update = bm_character_turn_update:set_data(FinalizedData, Update), - S1Update = bm_character_turn_update:add_to_db(DBQuery, S0Update), - - S1Update. - --spec handle_actions - ( - bm_character_turn_data:type(), - bm_character_turn_request:type() - ) - -> bm_character_turn_update:type(). -handle_actions (Data, Request) -> - Actions = bm_character_turn_request:get_actions(Request), - - EmptyUpdate = bm_character_turn_update:new(Data), - PostActionsUpdate = - lists:foldl(fun bm_turn_actions:handle/2, EmptyUpdate, Actions), - - finalize_character(PostActionsUpdate). - --spec update_timeline - ( - bm_character_turn_update:type() - ) - -> bm_character_turn_update:type(). -update_timeline (Update) -> - NewTimelineElements = bm_character_turn_update:get_timeline(Update), - Data = bm_character_turn_update:get_data(Update), - Battle = bm_character_turn_data:get_battle(Data), - PlayerTurn = bm_battle:get_current_player_turn(Battle), - PlayerIX = bm_player_turn:get_player_ix(PlayerTurn), - Player = bm_battle:get_player(PlayerIX, Battle), - - UpdatedPlayer = bm_player:add_to_timeline(NewTimelineElements, Player), - UpdatedBattle = bm_battle:set_player(PlayerIX, UpdatedPlayer, Battle), - UpdatedData = bm_character_turn_data:set_battle(UpdatedBattle, Data), - - DBQuery = - sh_db_query:update_indexed - ( - bm_battle:get_players_field(), - PlayerIX, - [ - sh_db_query:add_to_field - ( - bm_player:get_timeline_field(), - NewTimelineElements, - true % We add those to the start of the list - ) - ] - ), - - S0Update = bm_character_turn_update:set_data(UpdatedData, Update), - S1Update = bm_character_turn_update:add_to_db(DBQuery, S0Update), - - S1Update. - - --spec update_data - ( - bm_character_turn_data:type(), - bm_character_turn_request:type() - ) - -> bm_character_turn_update:type(). -update_data (Data, Request) -> - PostActionsUpdate = handle_actions(Data, Request), - PostCharacterTurnUpdate = update_timeline(PostActionsUpdate), - - bm_next_turn:update_if_needed(PostCharacterTurnUpdate). - -%%%% DATABASE UPDATES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec send_to_database - ( - bm_character_turn_update:type(), - bm_character_turn_request:type() - ) - -> 'ok'. -send_to_database (Update, Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - BattleID = bm_character_turn_request:get_battle_id(Request), - Ops = bm_character_turn_update:get_db(Update), - Query = sh_db_query:new(battle_db, BattleID, {user, PlayerID}, Ops), - - sh_database:commit(Query), - - ok. - --spec send_to_cache - ( - bm_character_turn_update:type(), - bm_character_turn_request:type() - ) - -> 'ok'. -send_to_cache (Update, Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - BattleID = bm_character_turn_request:get_battle_id(Request), - Data = bm_character_turn_update:get_data(Update), - Battle = bm_character_turn_data:get_battle(Data), - - sh_timed_cache:update(battle_db, PlayerID, BattleID, Battle), - - ok. - --spec commit_update - ( - bm_character_turn_update:type(), - bm_character_turn_request:type() - ) - -> 'ok'. -commit_update (Update, Request) -> - send_to_database(Update, Request), - send_to_cache(Update, Request), - - ok. - -%%%% USER DISCONNECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec disconnect_user (bm_character_turn_request:type()) -> 'ok'. -disconnect_user (Request) -> - PlayerID = bm_character_turn_request:get_player_id(Request), - - bm_security:unlock_queries(PlayerID), - - ok. - -%%%% REPLY GENERATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate_reply (bm_character_turn_update:type()) -> binary(). -generate_reply (Update) -> - NewTimelineItems = bm_character_turn_update:get_timeline(Update), - - TurnResultReply = bm_turn_results:generate(NewTimelineItems), - - jiffy:encode([TurnResultReply]). - -%%%% MAIN LOGIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec handle (binary()) -> binary(). -handle (EncodedRequest) -> - Request = decode_request(EncodedRequest), - authenticate_user(Request), - Data = fetch_data(Request), - assert_user_permissions(Data, Request), - Update = update_data(Data, Request), - commit_update(Update, Request), - disconnect_user(Request), - generate_reply(Update). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -out(A) -> - { - content, - "application/json; charset=UTF-8", - handle(A#arg.clidata) - }. diff --git a/src/query/qry_handler.erl b/src/query/qry_handler.erl new file mode 100644 index 0000000..ecf3263 --- /dev/null +++ b/src/query/qry_handler.erl @@ -0,0 +1,23 @@ +-module(qry_handler). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([start/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec start (any()) -> 'ok'. +start (_YawsParams) -> + {ok, TimedCachesManagerPid} = sh_timed_caches_manager:start(), + ok = btl_handler:start(TimedCachesManagerPid), + ok. |