summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-06 16:42:42 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-06 16:42:42 +0200
commit82081d45fd64294f4bc417085e06284f3487b32f (patch)
tree1da77dd39829f8bfdcbf200df6a12a0a53edf661 /src
parentee9c2ac044cc77b80f30420c8f0788cad4281084 (diff)
...
Diffstat (limited to 'src')
-rw-r--r--src/battlemap/game-logic/bm_next_turn.erl2
-rw-r--r--src/battlemap/game-logic/bm_turn_actions.erl12
-rw-r--r--src/battlemap/query/bm_load_state.erl2
-rw-r--r--src/battlemap/reply/bm_add_char.erl (renamed from src/battlemap/reply/add_char.erl)44
-rw-r--r--src/battlemap/reply/bm_set_map.erl (renamed from src/battlemap/reply/set_map.erl)10
-rw-r--r--src/battlemap/reply/bm_set_timeline.erl (renamed from src/battlemap/reply/set_timeline.erl)2
-rw-r--r--src/battlemap/reply/bm_turn_results.erl (renamed from src/battlemap/reply/turn_results.erl)2
-rw-r--r--src/battlemap/struct/bm_attack.erl42
-rw-r--r--src/battlemap/struct/bm_battle_action.erl2
-rw-r--r--src/battlemap/struct/bm_character.erl22
-rw-r--r--src/battlemap/struct/bm_character_turn_request.erl2
-rw-r--r--src/db/logic/db_access.erl (renamed from src/db/logic/storage_access.erl)12
-rw-r--r--src/db/struct/db_query.erl114
-rw-r--r--src/shared/include/db_item.hrl15
-rw-r--r--src/shared/include/db_query.hrl63
-rw-r--r--src/shared/include/db_user.hrl7
-rw-r--r--src/shared/io/sh_timed_cache.erl2
-rw-r--r--src/shared/struct/sh_db_item.erl12
-rw-r--r--src/shared/struct/sh_db_query.erl157
-rw-r--r--src/shared/struct/sh_db_user.erl5
-rw-r--r--src/shared/struct/sh_statistics.erl29
-rw-r--r--src/shared/struct/sh_weapon.erl (renamed from src/battlemap/struct/bm_weapon.erl)6
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),