| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-06 16:42:42 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-06 16:42:42 +0200 | 
| commit | 82081d45fd64294f4bc417085e06284f3487b32f (patch) | |
| tree | 1da77dd39829f8bfdcbf200df6a12a0a53edf661 /src | |
| parent | ee9c2ac044cc77b80f30420c8f0788cad4281084 (diff) | |
...
Diffstat (limited to 'src')
22 files changed, 265 insertions, 299 deletions
| diff --git a/src/battlemap/game-logic/bm_next_turn.erl b/src/battlemap/game-logic/bm_next_turn.erl index 3628111..abe286e 100644 --- a/src/battlemap/game-logic/bm_next_turn.erl +++ b/src/battlemap/game-logic/bm_next_turn.erl @@ -127,7 +127,7 @@ requires_update (Update) ->     (        bm_character_turn_update:type()     ) -   -> character_turn_update:type(). +   -> bm_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/battlemap/game-logic/bm_turn_actions.erl index 9664283..bf4075f 100644 --- a/src/battlemap/game-logic/bm_turn_actions.erl +++ b/src/battlemap/game-logic/bm_turn_actions.erl @@ -32,7 +32,7 @@ handle_switch_weapon (Update) ->     UpdatedWeaponIDs = {SecondaryWeaponID, PrimaryWeaponID},     UpdatedCharacterStatistics = -      bm_statistics:new(CharacterAttributes, UpdatedWeaponIDs), +      sh_statistics:new(CharacterAttributes, UpdatedWeaponIDs),     UpdatedCharacter =        bm_character:set_statistics        ( @@ -115,7 +115,7 @@ assert_character_can_move (Data, Cost) ->     Character = bm_character_turn_data:get_character(Data),     CharacterStatistics = bm_character:get_statistics(Character),     CharacterMovementPoints = -      bm_statistics:get_movement_points(CharacterStatistics), +      sh_statistics:get_movement_points(CharacterStatistics),     true = (Cost =< CharacterMovementPoints), @@ -247,10 +247,10 @@ handle_attack_sequence        bm_character:type(),        bm_character:type()     ) -   -> list(attack:step()). +   -> list(bm_attack:step()).  get_attack_sequence (Character, TargetCharacter) ->     Range = -      location:dist +      bm_location:dist        (           bm_character:get_location(Character),           bm_character:get_location(TargetCharacter) @@ -259,8 +259,8 @@ get_attack_sequence (Character, TargetCharacter) ->     {AttackingWeaponID, _} = bm_character:get_weapon_ids(Character),     {DefendingWeaponID, _} = bm_character:get_weapon_ids(TargetCharacter), -   AttackingWeapon = bm_weapon:from_id(AttackingWeaponID), -   DefendingWeapon = bm_weapon:from_id(DefendingWeaponID), +   AttackingWeapon = sh_weapon:from_id(AttackingWeaponID), +   DefendingWeapon = sh_weapon:from_id(DefendingWeaponID),     bm_attack:get_sequence(Range, AttackingWeapon, DefendingWeapon). diff --git a/src/battlemap/query/bm_load_state.erl b/src/battlemap/query/bm_load_state.erl index b580b9f..4af2385 100644 --- a/src/battlemap/query/bm_load_state.erl +++ b/src/battlemap/query/bm_load_state.erl @@ -53,7 +53,7 @@ fetch_data (Input) ->     PlayerID = Input#input.player_id,     BattleID = Input#input.battle_id, -   Battle = timed_cache:fetch (battle_db, PlayerID, BattleID), +   Battle = sh_timed_cache:fetch(battle_db, PlayerID, BattleID),     #query_state     { diff --git a/src/battlemap/reply/add_char.erl b/src/battlemap/reply/bm_add_char.erl index 86b1e9c..d6f5965 100644 --- a/src/battlemap/reply/add_char.erl +++ b/src/battlemap/reply/bm_add_char.erl @@ -1,4 +1,4 @@ --module(add_char). +-module(bm_add_char).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -14,18 +14,18 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec attributes_as_json     ( -      attributes:type() +      sh_attributes:type()     ) ->     {list({binary(), non_neg_integer()})}.  attributes_as_json (Attributes) ->     {        [ -         {<<"con">>, attributes:get_constitution(Attributes)}, -         {<<"dex">>, attributes:get_dexterity(Attributes)}, -         {<<"int">>, attributes:get_intelligence(Attributes)}, -         {<<"min">>, attributes:get_mind(Attributes)}, -         {<<"spe">>, attributes:get_speed(Attributes)}, -         {<<"str">>, attributes:get_strength(Attributes)} +         {<<"con">>, sh_attributes:get_constitution(Attributes)}, +         {<<"dex">>, sh_attributes:get_dexterity(Attributes)}, +         {<<"int">>, sh_attributes:get_intelligence(Attributes)}, +         {<<"min">>, sh_attributes:get_mind(Attributes)}, +         {<<"spe">>, sh_attributes:get_speed(Attributes)}, +         {<<"str">>, sh_attributes:get_strength(Attributes)}        ]     }. @@ -35,38 +35,38 @@ attributes_as_json (Attributes) ->  -spec generate     (        non_neg_integer(), -      character:type(), -      player:id() +      bm_character:type(), +      bm_player:id()     )     -> {list(any())}.  generate (IX, Character, PlayerID) -> -   IsAlive = character:get_is_alive(Character), -   Attributes = character:get_attributes(Character), -   {ActiveWeapon, SecondaryWeapon} = character:get_weapon_ids(Character), -   OwnerID = character:get_owner_id(Character), +   IsAlive = bm_character:get_is_alive(Character), +   Attributes = bm_character:get_attributes(Character), +   {ActiveWeapon, SecondaryWeapon} = bm_character:get_weapon_ids(Character), +   OwnerID = bm_character:get_owner_id(Character),     Location =        case IsAlive of -         true -> character:get_location(Character); -         _ -> location:get_nowhere() +         true -> bm_character:get_location(Character); +         _ -> bm_location:get_nowhere()        end,     {        [           {<<"msg">>, <<"add_char">>},           {<<"ix">>, IX}, -         {<<"nam">>, character:get_name(Character)}, -         {<<"ico">>, character:get_icon(Character)}, -         {<<"prt">>, character:get_portrait(Character)}, +         {<<"nam">>, bm_character:get_name(Character)}, +         {<<"ico">>, bm_character:get_icon(Character)}, +         {<<"prt">>, bm_character:get_portrait(Character)},           {              <<"hea">>, -            character:get_current_health(Character) +            bm_character:get_current_health(Character)           }, -         {<<"lc">>, location:encode(Location)}, +         {<<"lc">>, bm_location:encode(Location)},           {<<"pla">>, OwnerID},           {              <<"ena">>,              ( -               character:get_is_active(Character) +               bm_character:get_is_active(Character)                 and                 (OwnerID == PlayerID)              ) diff --git a/src/battlemap/reply/set_map.erl b/src/battlemap/reply/bm_set_map.erl index 8518ac5..992581b 100644 --- a/src/battlemap/reply/set_map.erl +++ b/src/battlemap/reply/bm_set_map.erl @@ -1,4 +1,4 @@ --module(set_map). +-module(bm_set_map).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,13 +16,13 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate (battlemap:type()) -> {list(any())}. +-spec generate (bm_battlemap:type()) -> {list(any())}.  generate (Battlemap) ->     {        [           {<<"msg">>, <<"set_map">>}, -         {<<"w">>, battlemap:get_width(Battlemap)}, -         {<<"h">>, battlemap:get_height(Battlemap)}, -         {<<"t">>, array:sparse_to_list(battlemap:get_tile_ids(Battlemap))} +         {<<"w">>, bm_battlemap:get_width(Battlemap)}, +         {<<"h">>, bm_battlemap:get_height(Battlemap)}, +         {<<"t">>, array:sparse_to_list(bm_battlemap:get_tile_ids(Battlemap))}        ]     }. diff --git a/src/battlemap/reply/set_timeline.erl b/src/battlemap/reply/bm_set_timeline.erl index bfe621a..cea3790 100644 --- a/src/battlemap/reply/set_timeline.erl +++ b/src/battlemap/reply/bm_set_timeline.erl @@ -1,4 +1,4 @@ --module(set_timeline). +-module(bm_set_timeline).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/reply/turn_results.erl b/src/battlemap/reply/bm_turn_results.erl index 0f3ff25..d47a693 100644 --- a/src/battlemap/reply/turn_results.erl +++ b/src/battlemap/reply/bm_turn_results.erl @@ -1,4 +1,4 @@ --module(turn_results). +-module(bm_turn_results).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battlemap/struct/bm_attack.erl b/src/battlemap/struct/bm_attack.erl index fe7d8b8..c647dae 100644 --- a/src/battlemap/struct/bm_attack.erl +++ b/src/battlemap/struct/bm_attack.erl @@ -47,13 +47,13 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  -spec roll_precision     ( -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> precision().  roll_precision (AttackerStatistics, DefenderStatistics) -> -   DefenderDodges = bm_statistics:get_dodges(DefenderStatistics), -   AttackerAccuracy = bm_statistics:get_accuracy(AttackerStatistics), +   DefenderDodges = sh_statistics:get_dodges(DefenderStatistics), +   AttackerAccuracy = sh_statistics:get_accuracy(AttackerStatistics),     MissChance = max(0, (DefenderDodges - AttackerAccuracy)),     case sh_roll:percentage() of        X when (X =< MissChance) -> misses; @@ -63,31 +63,31 @@ roll_precision (AttackerStatistics, DefenderStatistics) ->  -spec roll_damage     ( -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> {non_neg_integer(), boolean()}.  roll_damage (AttackerStatistics, _DefenderStatistics) ->     {MinimumDamage, MaximumDamage} = -      bm_statistics:get_damages(AttackerStatistics), +      sh_statistics:get_damages(AttackerStatistics),     MaximumRoll = max(1, MaximumDamage - MinimumDamage),     BaseDamage = MinimumDamage + (rand:uniform(MaximumRoll) - 1), -   CriticalHitChance = bm_statistics:get_critical_hits(AttackerStatistics), +   CriticalHitChance = sh_statistics:get_critical_hits(AttackerStatistics),     case sh_roll:percentage() of        X when (X =< CriticalHitChance) -> {(BaseDamage * 2), true};        _ -> {BaseDamage, false}     end. --spec roll_parry (bm_statistics:type()) -> boolean(). +-spec roll_parry (sh_statistics:type()) -> boolean().  roll_parry (DefenderStatistics) -> -   DefenderParryChance = bm_statistics:get_parries(DefenderStatistics), +   DefenderParryChance = sh_statistics:get_parries(DefenderStatistics),     (sh_roll:percentage() =< DefenderParryChance).  -spec effect_of_attack     (        order(), -      bm_statistics:type(), -      bm_statistics:type(), +      sh_statistics:type(), +      sh_statistics:type(),        boolean()     )     -> type(). @@ -134,8 +134,8 @@ encode_precision (misses) -> <<"m">>.  -spec get_description_of     (        step(), -      bm_statistics:type(), -      bm_statistics:type() +      sh_statistics:type(), +      sh_statistics:type()     )     -> maybe_type().  get_description_of @@ -152,7 +152,7 @@ get_description_of     DefenderStatistics  ) ->     AttackerDoubleAttackChange = -      bm_statistics:get_double_hits(AttackerStatistics), +      sh_statistics:get_double_hits(AttackerStatistics),     case sh_roll:percentage() of        X when (X =< AttackerDoubleAttackChange) -> @@ -246,28 +246,28 @@ when  -spec get_sequence     (        non_neg_integer(), -      bm_weapon:type(), -      bm_weapon:type() +      sh_weapon:type(), +      sh_weapon:type()     )     -> list(step()).  get_sequence (AttackRange, AttackerWeapon, DefenderWeapon) ->     {AttackerDefenseRange, AttackerAttackRange} = -      bm_weapon:get_ranges(AttackerWeapon), +      sh_weapon:get_ranges(AttackerWeapon),     {DefenderDefenseRange, DefenderAttackRange} = -      bm_weapon:get_ranges(DefenderWeapon), +      sh_weapon:get_ranges(DefenderWeapon),     AttackerCanAttack = (AttackRange =< AttackerAttackRange),     AttackerCanAttack = true,     AttackerCanDefend =        (AttackerCanAttack and (AttackRange > AttackerDefenseRange)),     AttackerCanParry = -      (AttackerCanDefend and weapon:can_parry(AttackerWeapon)), +      (AttackerCanDefend and sh_weapon:can_parry(AttackerWeapon)),     DefenderCanAttack = (AttackRange =< DefenderAttackRange),     DefenderCanDefend =        (DefenderCanAttack and (AttackRange > DefenderDefenseRange)),     DefenderCanParry = -      (DefenderCanDefend and weapon:can_parry(DefenderWeapon)), +      (DefenderCanDefend and sh_weapon:can_parry(DefenderWeapon)),     First = {first, DefenderCanParry},     Second = {second, DefenderCanParry}, diff --git a/src/battlemap/struct/bm_battle_action.erl b/src/battlemap/struct/bm_battle_action.erl index abdc1c6..9f9b50f 100644 --- a/src/battlemap/struct/bm_battle_action.erl +++ b/src/battlemap/struct/bm_battle_action.erl @@ -92,7 +92,7 @@ can_follow (switch_weapon, attack) -> true;  can_follow (move, attack) -> true;  can_follow (_, _) -> false. --spec get_path (type()) -> list(direction:type()). +-spec get_path (type()) -> list(bm_direction:type()).  get_path (Action) when is_record(Action, move) ->     Action#move.path;  get_path (_) -> diff --git a/src/battlemap/struct/bm_character.erl b/src/battlemap/struct/bm_character.erl index e797b74..5552a02 100644 --- a/src/battlemap/struct/bm_character.erl +++ b/src/battlemap/struct/bm_character.erl @@ -15,8 +15,8 @@        icon :: binary(),        portrait :: binary(),        attributes :: sh_attributes:type(), -      statistics :: bm_statistics:type(), -      weapon_ids :: {bm_weapon:id(), bm_weapon:id()}, +      statistics :: sh_statistics:type(), +      weapon_ids :: {sh_weapon:id(), sh_weapon:id()},        location :: {non_neg_integer(), non_neg_integer()},        current_health :: non_neg_integer(),        active :: boolean() @@ -78,8 +78,8 @@     )     -> {non_neg_integer(), non_neg_integer()}.  find_random_location (BattlemapWidth, BattlemapHeight, ForbiddenLocations) -> -   X = roll:between(0, (BattlemapWidth - 1)), -   Y = roll:between(0, (BattlemapHeight - 1)), +   X = sh_roll:between(0, (BattlemapWidth - 1)), +   Y = sh_roll:between(0, (BattlemapHeight - 1)),     IsForbidden = lists:member({X, Y}, ForbiddenLocations), @@ -117,10 +117,10 @@ get_portrait (Char) -> Char#character.portrait.  -spec get_attributes (type()) -> sh_attributes:type().  get_attributes (Char) -> Char#character.attributes. --spec get_weapon_ids (type()) -> {bm_weapon:id(), bm_weapon:id()}. +-spec get_weapon_ids (type()) -> {sh_weapon:id(), sh_weapon:id()}.  get_weapon_ids (Char) -> Char#character.weapon_ids. --spec get_statistics (type()) -> bm_statistics:type(). +-spec get_statistics (type()) -> sh_statistics:type().  get_statistics (Char) -> Char#character.statistics.  -spec get_location (type()) -> {non_neg_integer(), non_neg_integer()}. @@ -171,7 +171,7 @@ set_is_active (Active, Char) ->  -spec set_weapon_ids     ( -      {bm_weapon:id(), bm_weapon:id()}, +      {sh_weapon:id(), sh_weapon:id()},        type()     )     -> type(). @@ -183,7 +183,7 @@ set_weapon_ids (WeaponIDs, Char) ->  -spec set_statistics     ( -      bm_statistics:type(), +      sh_statistics:type(),        type()     )     -> type(). @@ -206,9 +206,9 @@ set_statistics (Stats, Char) ->  random (ID, OwnerID, BattlemapWidth, BattlemapHeight, ForbiddenLocations) ->     Location =        find_random_location(BattlemapWidth, BattlemapHeight, ForbiddenLocations), -   WeaponIDs = {bm_weapon:random_id(), bm_weapon:random_id()}, +   WeaponIDs = {sh_weapon:random_id(), sh_weapon:random_id()},     Attributes = sh_attributes:random(), -   Statistics = bm_statistics:new(Attributes, WeaponIDs), +   Statistics = sh_statistics:new(Attributes, WeaponIDs),     IDAsListString = integer_to_list(ID),     IDAsBinaryString = list_to_binary(IDAsListString), @@ -223,7 +223,7 @@ random (ID, OwnerID, BattlemapWidth, BattlemapHeight, ForbiddenLocations) ->        weapon_ids = WeaponIDs,        statistics = Statistics,        location = Location, -      current_health = bm_statistics:get_health(Statistics), +      current_health = sh_statistics:get_health(Statistics),        active = false     }. diff --git a/src/battlemap/struct/bm_character_turn_request.erl b/src/battlemap/struct/bm_character_turn_request.erl index d141d7e..f922211 100644 --- a/src/battlemap/struct/bm_character_turn_request.erl +++ b/src/battlemap/struct/bm_character_turn_request.erl @@ -68,7 +68,7 @@ decode (Map) ->        actions = Actions     }. --spec get_player_id (type()) -> player:id(). +-spec get_player_id (type()) -> bm_player:id().  get_player_id (Request) -> Request#type.player_id.  -spec get_session_token (type()) -> binary(). diff --git a/src/db/logic/storage_access.erl b/src/db/logic/db_access.erl index 437294f..f589ba8 100644 --- a/src/db/logic/storage_access.erl +++ b/src/db/logic/db_access.erl @@ -1,4 +1,4 @@ --module(storage_access). +-module(db_access).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -19,23 +19,23 @@  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  get_value ([]) -> not_found; -get_value ([Regval]) -> {ok, db_item:get_value(Regval)}. +get_value ([Regval]) -> {ok, sh_db_item:get_value(Regval)}.  read_transaction (DB, ID) ->     get_value(mnesia:read(DB, ID)).  insert_transaction (DB, ID, Perm, Value) -> -   StoredItem = db_item:new(ID, Perm, Value), +   StoredItem = sh_db_item:new(ID, Perm, Value),     % FIXME: handle return value, mnesia:write -> (transaction abort | ok).     % FIXME: is this an atomic OP? Is the lock freed afterwards?     mnesia:write(DB, StoredItem, sticky_write),     ok.  query_transaction (Query) -> -   DB = db_query:get_database(Query), -   ID = db_query:get_entry_id(Query), +   DB = sh_db_query:get_database(Query), +   ID = sh_db_query:get_entry_id(Query),     [Item] = mnesia:read(DB, ID), -   {ok, UpdatedItem} = db_query:apply_to(Query, Item), +   {ok, UpdatedItem} = sh_db_query:apply_to(Query, Item),     % FIXME: handle return value, mnesia:write -> (transaction abort | ok).     % FIXME: is this an atomic OP? Is the lock freed afterwards?     mnesia:write(DB, UpdatedItem, sticky_write), diff --git a/src/db/struct/db_query.erl b/src/db/struct/db_query.erl deleted file mode 100644 index 9a86f98..0000000 --- a/src/db/struct/db_query.erl +++ /dev/null @@ -1,114 +0,0 @@ --module(db_query). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../../shared/include/db_query.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( -   [ -      get_database/1, -      get_entry_id/1 -   ] -). --export([apply_to/2]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_user (db_query()) -> sh_db_user:user(). -get_user (#db_query{ user = Result }) -> Result. - --spec apply_update_indexed (#update_indexed{}, any()) -> any(). -apply_update_indexed (Op, Elem) -> -   FieldNumber = Op#update_indexed.field, -   IX = Op#update_indexed.ix, -   Ops = Op#update_indexed.ops, - -   IndexedFieldValue = element(FieldNumber, Elem), -   ArrayValue = array:get(IX, IndexedFieldValue), -   UpdatedArrayValue = lists:foldl(fun apply_op_to/2, ArrayValue, Ops), -   UpdatedIndexedFieldValue = -      array:set(IX, UpdatedArrayValue, IndexedFieldValue), - -   setelement(FieldNumber, Elem, UpdatedIndexedFieldValue). - --spec apply_add_to_field (#add_to_field{}, any()) -> any(). -apply_add_to_field (Op, Elem) -> -   FieldNumber = Op#add_to_field.field, -   NewValues = Op#add_to_field.values, -   AddToHead = Op#add_to_field.head, - -   CurrentValues = element(FieldNumber, Elem), -   UpdatedValues = -      case AddToHead of -         true -> (NewValues ++ CurrentValues); -         _ -> (CurrentValues ++ NewValues) -      end, - -   setelement(FieldNumber, Elem, UpdatedValues). - --spec apply_set_field (#set_field{}, any()) -> any(). -apply_set_field (Op, Elem) -> -   FieldNumber = Op#set_field.field, -   NewValue = Op#set_field.value, - -   setelement(FieldNumber, Elem, NewValue). - --spec apply_op_to (db_query_op(), any()) -> any(). -apply_op_to (Op, Elem) when is_record(Op, set_field) -> -   apply_set_field(Op, Elem); -apply_op_to (Op, Elem) when is_record(Op, add_to_field) -> -   apply_add_to_field(Op, Elem); -apply_op_to (Op, Elem) when is_record(Op, update_indexed) -> -   apply_update_indexed(Op, Elem). - --spec apply_master_op_to -   ( -      db_query_master_op(), -      db_item:type() -   ) -   -> db_item:type(). -apply_master_op_to (MOp, Elem) when is_record(MOp, set_perm) -> -   NewPerm = MOp#set_perm.perm, - -   db_item:set_perm(NewPerm, Elem); -apply_master_op_to (MOp, Elem) when is_record(MOp, set_val) -> -   NewVal = MOp#set_val.val, - -   db_item:set_value(NewVal, Elem); -apply_master_op_to (MOp, Elem) -> -   OldValue = sh_db_item:get_value(Elem), -   NewValue = apply_op_to(MOp, OldValue), - -   db_item:set_value(NewValue, Elem). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_database (db_query()) -> atom(). -get_database (#db_query{ db = Result }) -> Result. - --spec get_entry_id (db_query()) -> any(). -get_entry_id (#db_query{ id = Result }) -> Result. - --spec apply_to -   ( -      db_query(), -      db_item:type() -   ) -   -> ({'ok', db_item:type()} | 'error'). -apply_to (DBQuery, DBItem) -> -   true = -      sh_db_user:can_access -      ( -         sh_db_item:get_permission(DBItem), -         get_user(DBQuery) -      ), -   MOps = DBQuery#db_query.ops, -   {ok, lists:foldl(fun apply_master_op_to/2, DBItem, MOps)}. - diff --git a/src/shared/include/db_item.hrl b/src/shared/include/db_item.hrl deleted file mode 100644 index 86d5863..0000000 --- a/src/shared/include/db_item.hrl +++ /dev/null @@ -1,15 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --record -( -   db_item, -   { -      id :: any(), -      perm :: db_user:permission(), -      val :: any() -   } -). - --type db_item() :: #db_item{}. - diff --git a/src/shared/include/db_query.hrl b/src/shared/include/db_query.hrl deleted file mode 100644 index 7e5a5b0..0000000 --- a/src/shared/include/db_query.hrl +++ /dev/null @@ -1,63 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --record -( -   set_field, -   { -      field :: non_neg_integer(), -      value :: any() -   } -). - --record -( -   add_to_field, -   { -      field :: non_neg_integer(), -      values :: list(any()), -      head :: boolean() -   } -). - --record -( -   update_indexed, -   { -      field :: non_neg_integer(), -      ix :: non_neg_integer(), -      ops :: list(db_query_op()) -   } -). - --record -( -   set_perm, -   { -      perm :: db_user:permission() -   } -). - --record -( -   set_val, -   { -      val :: any() -   } -). - --record -( -   db_query, -   { -      db :: atom(), -      id :: any(), -      user :: db_user:user(), -      ops :: list(db_query_master_op()) -   } -). - --type db_query_op() :: (#set_field{} | #add_to_field{} | #update_indexed{}). --type db_query_master_op() :: (db_query_op() | #set_perm{} | #set_val{}). --type db_query() :: #db_query{}. - diff --git a/src/shared/include/db_user.hrl b/src/shared/include/db_user.hrl deleted file mode 100644 index c5b033e..0000000 --- a/src/shared/include/db_user.hrl +++ /dev/null @@ -1,7 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --type db_named_user() :: {'user', any()}. --type db_user() :: (db_named_user() | 'admin' | 'any'). --type db_permission() :: (list(db_named_user()) | 'any'). - diff --git a/src/shared/io/sh_timed_cache.erl b/src/shared/io/sh_timed_cache.erl index 1839992..de2f409 100644 --- a/src/shared/io/sh_timed_cache.erl +++ b/src/shared/io/sh_timed_cache.erl @@ -83,7 +83,7 @@ format_status (_, [_, State]) ->  handle_info(timeout, State) ->     {stop, normal, State};  handle_info(_, {DB, ObjectID}) -> -   {noreply, {DB, ObjectID}, timed_caches_manager:get_timeout()}. +   {noreply, {DB, ObjectID}, sh_timed_caches_manager:get_timeout()}.  %%%% Interface Functions  -spec fetch (atom(), any(), any()) -> any(). diff --git a/src/shared/struct/sh_db_item.erl b/src/shared/struct/sh_db_item.erl index e499634..98a1cb4 100644 --- a/src/shared/struct/sh_db_item.erl +++ b/src/shared/struct/sh_db_item.erl @@ -3,7 +3,17 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../include/db_item.hrl"). +-record +( +   db_item, +   { +      id :: any(), +      perm :: sh_db_user:permission(), +      val :: any() +   } +). + +-type db_item() :: #db_item{}.  -type type() :: db_item(). diff --git a/src/shared/struct/sh_db_query.erl b/src/shared/struct/sh_db_query.erl index 998568e..4eb50ba 100644 --- a/src/shared/struct/sh_db_query.erl +++ b/src/shared/struct/sh_db_query.erl @@ -3,7 +3,65 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../include/db_query.hrl"). +-record +( +   set_field, +   { +      field :: non_neg_integer(), +      value :: any() +   } +). + +-record +( +   add_to_field, +   { +      field :: non_neg_integer(), +      values :: list(any()), +      head :: boolean() +   } +). + +-record +( +   update_indexed, +   { +      field :: non_neg_integer(), +      ix :: non_neg_integer(), +      ops :: list(db_query_op()) +   } +). + +-record +( +   set_perm, +   { +      perm :: sh_db_user:permission() +   } +). + +-record +( +   set_val, +   { +      val :: any() +   } +). + +-record +( +   db_query, +   { +      db :: atom(), +      id :: any(), +      user :: db_user:user(), +      ops :: list(db_query_master_op()) +   } +). + +-type db_query_op() :: (#set_field{} | #add_to_field{} | #update_indexed{}). +-type db_query_master_op() :: (db_query_op() | #set_perm{} | #set_val{}). +-type db_query() :: #db_query{}.  -opaque op() :: db_query_op().  -opaque type() :: db_query(). @@ -22,10 +80,84 @@        update_indexed/3     ]  ). +-export +( +   [ +      get_database/1, +      get_entry_id/1 +   ] +). +-export([apply_to/2]).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec get_user (db_query()) -> sh_db_user:user(). +get_user (#db_query{ user = Result }) -> Result. + +-spec apply_update_indexed (#update_indexed{}, any()) -> any(). +apply_update_indexed (Op, Elem) -> +   FieldNumber = Op#update_indexed.field, +   IX = Op#update_indexed.ix, +   Ops = Op#update_indexed.ops, + +   IndexedFieldValue = element(FieldNumber, Elem), +   ArrayValue = array:get(IX, IndexedFieldValue), +   UpdatedArrayValue = lists:foldl(fun apply_op_to/2, ArrayValue, Ops), +   UpdatedIndexedFieldValue = +      array:set(IX, UpdatedArrayValue, IndexedFieldValue), + +   setelement(FieldNumber, Elem, UpdatedIndexedFieldValue). + +-spec apply_add_to_field (#add_to_field{}, any()) -> any(). +apply_add_to_field (Op, Elem) -> +   FieldNumber = Op#add_to_field.field, +   NewValues = Op#add_to_field.values, +   AddToHead = Op#add_to_field.head, + +   CurrentValues = element(FieldNumber, Elem), +   UpdatedValues = +      case AddToHead of +         true -> (NewValues ++ CurrentValues); +         _ -> (CurrentValues ++ NewValues) +      end, + +   setelement(FieldNumber, Elem, UpdatedValues). + +-spec apply_set_field (#set_field{}, any()) -> any(). +apply_set_field (Op, Elem) -> +   FieldNumber = Op#set_field.field, +   NewValue = Op#set_field.value, + +   setelement(FieldNumber, Elem, NewValue). + +-spec apply_op_to (db_query_op(), any()) -> any(). +apply_op_to (Op, Elem) when is_record(Op, set_field) -> +   apply_set_field(Op, Elem); +apply_op_to (Op, Elem) when is_record(Op, add_to_field) -> +   apply_add_to_field(Op, Elem); +apply_op_to (Op, Elem) when is_record(Op, update_indexed) -> +   apply_update_indexed(Op, Elem). + +-spec apply_master_op_to +   ( +      db_query_master_op(), +      sh_db_item:type() +   ) +   -> sh_db_item:type(). +apply_master_op_to (MOp, Elem) when is_record(MOp, set_perm) -> +   NewPerm = MOp#set_perm.perm, + +   sh_db_item:set_perm(NewPerm, Elem); +apply_master_op_to (MOp, Elem) when is_record(MOp, set_val) -> +   NewVal = MOp#set_val.val, + +   sh_db_item:set_value(NewVal, Elem); +apply_master_op_to (MOp, Elem) -> +   OldValue = sh_db_item:get_value(Elem), +   NewValue = apply_op_to(MOp, OldValue), + +   sh_db_item:set_value(NewValue, Elem).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -57,3 +189,26 @@ add_to_field (Field, Values) ->     -> op().  update_indexed (Field, IX, Updates) ->     #update_indexed { field = Field, ix = IX, ops = Updates}. + +-spec get_database (db_query()) -> atom(). +get_database (#db_query{ db = Result }) -> Result. + +-spec get_entry_id (db_query()) -> any(). +get_entry_id (#db_query{ id = Result }) -> Result. + +-spec apply_to +   ( +      db_query(), +      sh_db_item:type() +   ) +   -> ({'ok', sh_db_item:type()} | 'error'). +apply_to (DBQuery, DBItem) -> +   true = +      sh_db_user:can_access +      ( +         sh_db_item:get_permission(DBItem), +         get_user(DBQuery) +      ), +   MOps = DBQuery#db_query.ops, +   {ok, lists:foldl(fun apply_master_op_to/2, DBItem, MOps)}. + diff --git a/src/shared/struct/sh_db_user.erl b/src/shared/struct/sh_db_user.erl index 40a46d3..f2d4dfe 100644 --- a/src/shared/struct/sh_db_user.erl +++ b/src/shared/struct/sh_db_user.erl @@ -3,7 +3,10 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../include/db_user.hrl"). +-type db_named_user() :: {'user', any()}. +-type db_user() :: (db_named_user() | 'admin' | 'any'). +-type db_permission() :: (list(db_named_user()) | 'any'). +  -type user() :: db_user().  -type permission() :: db_permission(). diff --git a/src/shared/struct/sh_statistics.erl b/src/shared/struct/sh_statistics.erl index 7cf2b06..92cd8d6 100644 --- a/src/shared/struct/sh_statistics.erl +++ b/src/shared/struct/sh_statistics.erl @@ -54,17 +54,14 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec ceil (float()) -> integer(). -ceil (F) -> +-spec float_to_int (float()) -> integer(). +float_to_int (F) ->     I = trunc(F),     case (F > I) of        true -> (I + 1);        _ -> I     end. --spec float_to_int (float()) -> integer(). -float_to_int (F) -> ceil(F). -  -spec min_max (number(), number(), number()) -> number().  min_max (Min, Max, V) -> min(Max, max(Min, V)). @@ -146,21 +143,21 @@ get_damages (Stats) ->  -spec new     ( -      attributes:type(), -      {weapon:id(), weapon:id()} +      sh_attributes:type(), +      {sh_weapon:id(), sh_weapon:id()}     )     -> type().  new (BaseAttributes, WeaponIDs) ->     {ActiveWeaponID, _} = WeaponIDs, -   ActiveWeapon = weapon:from_id(ActiveWeaponID), -   {MinDamage, MaxDamage} = weapon:get_damages(ActiveWeapon), -   Attributes = weapon:apply_to_attributes(BaseAttributes, ActiveWeapon), -   Constitution = attributes:get_constitution(Attributes), -   Dexterity = attributes:get_dexterity(Attributes), -   Intelligence = attributes:get_intelligence(Attributes), -   Mind = attributes:get_mind(Attributes), -   Speed = attributes:get_speed(Attributes), -   Strength = attributes:get_strength(Attributes), +   ActiveWeapon = sh_weapon:from_id(ActiveWeaponID), +   {MinDamage, MaxDamage} = sh_weapon:get_damages(ActiveWeapon), +   Attributes = sh_weapon:apply_to_attributes(BaseAttributes, ActiveWeapon), +   Constitution = sh_attributes:get_constitution(Attributes), +   Dexterity = sh_attributes:get_dexterity(Attributes), +   Intelligence = sh_attributes:get_intelligence(Attributes), +   Mind = sh_attributes:get_mind(Attributes), +   Speed = sh_attributes:get_speed(Attributes), +   Strength = sh_attributes:get_strength(Attributes),     DamageBaseModifier = damage_base_modifier(Strength),     #statistics diff --git a/src/battlemap/struct/bm_weapon.erl b/src/shared/struct/sh_weapon.erl index 6c05799..30943b9 100644 --- a/src/battlemap/struct/bm_weapon.erl +++ b/src/shared/struct/sh_weapon.erl @@ -1,4 +1,4 @@ --module(bm_weapon). +-module(sh_weapon).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -339,9 +339,9 @@ random_id () -> sh_roll:between(0, 24).  -spec apply_to_attributes     (        sh_attributes:type(), -      bm_weapon:type() +      type()     ) -   -> attributes:type(). +   -> sh_attributes:type().  apply_to_attributes (Attributes, Weapon) ->     Dexterity = sh_attributes:get_dexterity(Attributes),     Speed = sh_attributes:get_speed(Attributes), | 


