| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-01 18:16:43 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-01 18:16:43 +0200 | 
| commit | 2a50c908383d5d5d14cb501f8ad707dcba1da212 (patch) | |
| tree | 2e24e274e92bcc2a12834473f9326de7a3c622c9 /src/battlemap | |
| parent | 5aaa03c62f784c75991b72b6745919eabb68445d (diff) | |
Preparing to add actual DBs...
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/src/game-logic/next_turn.erl | 12 | ||||
| -rw-r--r-- | src/battlemap/src/game-logic/turn_actions.erl | 55 | ||||
| -rw-r--r-- | src/battlemap/src/query/character_turn.erl | 5 | ||||
| -rw-r--r-- | src/battlemap/src/struct/character_turn_update.erl | 4 | ||||
| -rw-r--r-- | src/battlemap/src/struct/db_query.erl | 68 | ||||
| -rw-r--r-- | src/battlemap/src/struct/direction.erl | 3 | 
6 files changed, 129 insertions, 18 deletions
| diff --git a/src/battlemap/src/game-logic/next_turn.erl b/src/battlemap/src/game-logic/next_turn.erl index af54d3b..3de69fd 100644 --- a/src/battlemap/src/game-logic/next_turn.erl +++ b/src/battlemap/src/game-logic/next_turn.erl @@ -76,11 +76,19 @@ activate_next_players_characters (Battle, NextPlayer) ->  add_activation_updates ([], Update) ->     Update;  add_activation_updates ([IX|NextIXs], Update) -> -   % TODO: use DB update elements.     add_activation_updates     (        NextIXs, -      character_turn_update:add_to_db(IX, Update) +      character_turn_update:add_to_db +      ( +         db_query:update_indexed +         ( +            character, +            IX, +            [db_query:set_field(active, true)] +         ), +         Update +      )     ).  -spec update (character_turn_update:type()) -> character_turn_update:type(). diff --git a/src/battlemap/src/game-logic/turn_actions.erl b/src/battlemap/src/game-logic/turn_actions.erl index b9108f7..c789908 100644 --- a/src/battlemap/src/game-logic/turn_actions.erl +++ b/src/battlemap/src/game-logic/turn_actions.erl @@ -40,17 +40,28 @@ handle_switch_weapon (Update) ->           character:set_weapon_ids(UpdatedWeaponIDs, Character)        ), -   % TODO: db update entries... -   % {character, CharacterIX, wp0, SecondaryWeaponID}, -   % {character, CharacterIX, wp1, PrimaryWeaponID} +   DBQuery = +      db_query:update_indexed +      ( +         character, +         CharacterIX, +         [ +            db_query:set_field(wp0, SecondaryWeaponID), +            db_query:set_field(wp1, PrimaryWeaponID) +         ] +      ),     UpdatedData = character_turn_data:set_character(UpdatedCharacter, Data), -   character_turn_update:add_to_timeline -   ( -      turn_result:new_character_switched_weapons(CharacterIX), -      character_turn_update:set_data(UpdatedData, Update) -   ). +   S0Update = character_turn_update:set_data(UpdatedData, Update), +   S1Update = +      character_turn_update:add_to_timeline +      ( +         turn_result:new_character_switched_weapons(CharacterIX), +         S0Update +      ), + +   character_turn_update:add_to_db(DBQuery, S1Update).  %%%% MOVING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec get_path_cost_and_destination @@ -130,9 +141,19 @@ commit_move (Update, Path, NewLocation) ->           Update        ), -   %[{character, CharacterIX, loc, NewLocation}], +   S1Update = +      character_turn_update:add_to_db +      ( +         db_query:update_indexed +         ( +            character, +            CharacterIX, +            [db_query:set_field(loc, NewLocation)] +         ), +         S0Update +      ), -   character_turn_update:set_data(UpdatedData, S0Update). +   character_turn_update:set_data(UpdatedData, S1Update).  -spec handle_move     ( @@ -278,6 +299,7 @@ handle_attack (BattleAction, Update) ->           Battle        ), +     S0Data = character_turn_data:set_battle(UpdatedBattle, Data),     S1Data =        character_turn_data:set_character @@ -286,6 +308,7 @@ handle_attack (BattleAction, Update) ->           S0Data        ), +     S0Update =        character_turn_update:add_to_timeline        ( @@ -297,7 +320,17 @@ handle_attack (BattleAction, Update) ->           ),           Update        ), -   character_turn_update:set_data(S1Data, S0Update). +   S1Update = character_turn_update:set_data(S1Data, S0Update), + +   DBQuery = +      db_query:update_indexed +      ( +         character, +         TargetIX, +         [ db_query:set_field(health, RemainingDefenderHealth) ] +      ), + +   character_turn_update:add_to_db(DBQuery, S1Update).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/src/query/character_turn.erl b/src/battlemap/src/query/character_turn.erl index a96f984..a4b69a2 100644 --- a/src/battlemap/src/query/character_turn.erl +++ b/src/battlemap/src/query/character_turn.erl @@ -180,7 +180,8 @@ send_to_database (Update, Request) ->     Data = character_turn_update:get_data(Update),     Battle = character_turn_data:get_battle(Data), -   %% TODO: differential commit +   % TODO: send queries to an actual DB... +     database_shim:commit     (        battle_db, @@ -229,7 +230,7 @@ disconnect_user (Request) ->     ok.  %%%% REPLY GENERATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate_reply (character_turn_update:data()) -> binary(). +-spec generate_reply (character_turn_update:type()) -> binary().  generate_reply (Update) ->     NewTimelineItems = character_turn_update:get_timeline(Update), diff --git a/src/battlemap/src/struct/character_turn_update.erl b/src/battlemap/src/struct/character_turn_update.erl index 9e0041f..a3aa819 100644 --- a/src/battlemap/src/struct/character_turn_update.erl +++ b/src/battlemap/src/struct/character_turn_update.erl @@ -9,7 +9,7 @@     {        data :: character_turn_data:type(),        timeline :: list(any()), -      db :: list(any()) +      db :: list(db_query:type())     }  ). @@ -68,6 +68,6 @@ set_data (Data, Update) ->  add_to_timeline (Item, Update) ->     Update#type{ timeline = [turn_result:encode(Item)|Update#type.timeline] }. --spec add_to_db (any(), type()) -> type(). +-spec add_to_db (db_query:type(), type()) -> type().  add_to_db (Item, Update) ->     Update#type{ db = [Item|Update#type.db] }. diff --git a/src/battlemap/src/struct/db_query.erl b/src/battlemap/src/struct/db_query.erl new file mode 100644 index 0000000..c6a4fa5 --- /dev/null +++ b/src/battlemap/src/struct/db_query.erl @@ -0,0 +1,68 @@ +-module(db_query). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +-record +( +   set_field, +   { +      name :: atom(), +      value :: any() +   } +). + +-record +( +   add_to_field, +   { +      name :: atom(), +      values :: list(any()) +   } +). + +-record +( +   update_indexed, +   { +      name :: atom(), +      ix :: non_neg_integer(), +      update :: list(type()) +   } +). + +-opaque type() :: (#update_indexed{} | #set_field{} | #add_to_field{}). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export_type([type/0]). + +-export +( +   [ +      set_field/2, +      add_to_field/2, +      update_indexed/3 +   ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec set_field (atom(), any()) -> type(). +set_field (Name, Value) -> +   #set_field { name = Name, value = Value }. + +-spec add_to_field (atom(), list(any())) -> type(). +add_to_field (Name, Values) -> +   #add_to_field { name = Name, values = Values }. + +-spec update_indexed (atom(), non_neg_integer(), list(type())) -> type(). +update_indexed (Name, IX, Updates) -> +   #update_indexed { name = Name, ix = IX, update = Updates}. diff --git a/src/battlemap/src/struct/direction.erl b/src/battlemap/src/struct/direction.erl index 84ae272..be43a13 100644 --- a/src/battlemap/src/struct/direction.erl +++ b/src/battlemap/src/struct/direction.erl @@ -4,8 +4,9 @@  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -type enum() :: ('up' | 'down' | 'left' | 'right'). +-type type() :: enum(). --export_type([enum/0]). +-export_type([enum/0, type/0]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 


