summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/struct/map/shr_inventory.erl')
-rw-r--r--src/shared/struct/map/shr_inventory.erl153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/shared/struct/map/shr_inventory.erl b/src/shared/struct/map/shr_inventory.erl
new file mode 100644
index 0000000..1f04533
--- /dev/null
+++ b/src/shared/struct/map/shr_inventory.erl
@@ -0,0 +1,153 @@
+-module(shr_inventory).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-type id() :: ataxia_id:type().
+-record
+(
+ inventory,
+ {
+ owner_id :: shr_player:id(),
+ portrait_ids :: ordsets:ordset(binary()),
+ glyph_ids :: ordsets:ordset(binary()),
+ glyph_board_ids :: ordsets:ordset(binary()),
+ weapon_ids :: ordsets:ordset(binary()),
+ armor_ids :: ordsets:ordset(binary())
+ }
+).
+
+-opaque type() :: #inventory{}.
+
+-export_type([type/0, id/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Accessors
+-export
+(
+ [
+ get_owner_id/1,
+
+ get_portrait_ids/1,
+ get_glyph_ids/1,
+ get_glyph_board_ids/1,
+ get_weapon_ids/1,
+ get_armor_ids/1,
+
+ set_portrait_ids/2,
+ set_glyph_ids/2,
+ set_glyph_board_ids/2,
+ set_weapon_ids/2,
+ set_armor_ids/2
+ ]
+).
+
+-export
+(
+ [
+ get_portrait_ids_field/0,
+ get_glyph_ids_field/0,
+ get_glyph_board_ids_field/0,
+ get_weapon_ids_field/0,
+ get_armor_ids_field/0
+ ]
+).
+
+-export
+(
+ [
+ new/1
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Accessors
+-spec get_owner_id (type()) -> shr_player:id().
+get_owner_id (Inv) -> Inv#inventory.owner_id.
+
+-spec get_portrait_ids (type()) -> ordsets:ordset(binary()).
+get_portrait_ids (Inv) -> Inv#inventory.portrait_ids.
+
+-spec get_glyph_ids (type()) -> ordsets:ordset(binary()).
+get_glyph_ids (Inv) -> Inv#inventory.glyph_ids.
+
+-spec get_glyph_board_ids (type()) -> ordsets:ordset(binary()).
+get_glyph_board_ids (Inv) -> Inv#inventory.glyph_board_ids.
+
+-spec get_weapon_ids (type()) -> ordsets:ordset(binary()).
+get_weapon_ids (Inv) -> Inv#inventory.weapon_ids.
+
+-spec get_armor_ids (type()) -> ordsets:ordset(binary()).
+get_armor_ids (Inv) -> Inv#inventory.armor_ids.
+
+-spec set_portrait_ids (ordsets:ordset(binary()), type()) -> type().
+set_portrait_ids (Value, Inv) ->
+ Inv#inventory
+ {
+ portrait_ids = Value
+ }.
+
+-spec set_glyph_ids (ordsets:ordset(binary()), type()) -> type().
+set_glyph_ids (Value, Inv) ->
+ Inv#inventory
+ {
+ glyph_ids = Value
+ }.
+
+-spec set_glyph_board_ids (ordsets:ordset(binary()), type()) -> type().
+set_glyph_board_ids (Value, Inv) ->
+ Inv#inventory
+ {
+ glyph_board_ids = Value
+ }.
+
+-spec set_weapon_ids (ordsets:ordset(binary()), type()) -> type().
+set_weapon_ids (Value, Inv) ->
+ Inv#inventory
+ {
+ weapon_ids = Value
+ }.
+
+-spec set_armor_ids (ordsets:ordset(binary()), type()) -> type().
+set_armor_ids (Value, Inv) ->
+ Inv#inventory
+ {
+ armor_ids = Value
+ }.
+
+-spec get_portrait_ids_field () -> non_neg_integer().
+get_portrait_ids_field () -> #inventory.portrait_ids.
+
+-spec get_glyph_ids_field () -> non_neg_integer().
+get_glyph_ids_field () -> #inventory.glyph_ids.
+
+-spec get_glyph_board_ids_field () -> non_neg_integer().
+get_glyph_board_ids_field () -> #inventory.glyph_board_ids.
+
+-spec get_weapon_ids_field () -> non_neg_integer().
+get_weapon_ids_field () -> #inventory.weapon_ids.
+
+-spec get_armor_ids_field () -> non_neg_integer().
+get_armor_ids_field () -> #inventory.armor_ids.
+
+-spec new (shr_player:id()) -> type().
+new (OwnerID) ->
+ EmptySet = ordsets:new(),
+
+ #inventory
+ {
+ owner_id = OwnerID,
+ portrait_ids = EmptySet,
+ glyph_ids = EmptySet,
+ glyph_board_ids = EmptySet,
+ weapon_ids = EmptySet,
+ armor_ids = EmptySet
+ }.