summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-10-20 22:02:46 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-10-20 22:02:46 +0200
commitc2bff6b098480af6a21bde453494f8ff64219ea7 (patch)
tree9003b093e3ba47134e94294629960b52e9e1bb9f /src/shared
parent08fab636c981574a703baffad9ebb52ff4308f17 (diff)
...
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/struct/inventory/shr_skill.erl.m4116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/shared/struct/inventory/shr_skill.erl.m4 b/src/shared/struct/inventory/shr_skill.erl.m4
new file mode 100644
index 0000000..e1f1a29
--- /dev/null
+++ b/src/shared/struct/inventory/shr_skill.erl.m4
@@ -0,0 +1,116 @@
+-module(shr_skill).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-type id() :: binary().
+
+-record
+(
+ skill,
+ {
+ id :: id(),
+ module :: atom(),
+ name :: binary(),
+ cost :: non_neg_integer(),
+ reserve :: non_neg_integer(),
+ targets :: (non_neg_integer() | -1),
+ locations :: (non_neg_integer() | -1),
+ duration :: (non_neg_integer() | -1),
+ uses :: (non_neg_integer() | -1),
+ chance :: (0..100 | -1),
+ power :: (non_neg_integer() | -1),
+ range :: (non_neg_integer() | -1)
+ }
+).
+
+-opaque type() :: #skill{}.
+
+-export_type([type/0, id/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Accessors
+-export
+(
+ [
+ get_id/1,
+ get_module/1,
+ get_name/1,
+ get_cost/1,
+ get_reserve/1,
+ get_targets/1,
+ get_locations/1,
+ get_duration/1,
+ get_uses/1,
+ get_chance/1,
+ get_power/1,
+ get_range/1
+ ]
+).
+
+-export
+(
+ [
+ default/0,
+ default_id/0,
+ from_id/1
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Accessors
+-spec get_id (type()) -> id().
+get_id (Skill) -> Skill#skill.id.
+
+-spec get_module (type()) -> atom().
+get_module (Skill) -> Skill#skill.module.
+
+-spec get_name (type()) -> binary().
+get_name (Skill) -> Skill#skill.name.
+
+-spec get_cost (type()) -> non_neg_integer().
+get_cost (Skill) -> Skill#skill.cost.
+
+-spec get_reserve (type()) -> non_neg_integer().
+get_reserve (Skill) -> Skill#skill.reserve.
+
+-spec get_targets (type()) -> (non_neg_integer() | -1).
+get_targets (Skill) -> Skill#skill.targets.
+
+-spec get_locations (type()) -> (non_neg_integer() | -1).
+get_locations (Skill) -> Skill#skill.locations.
+
+-spec get_duration (type()) -> (non_neg_integer() | -1).
+get_duration (Skill) -> Skill#skill.duration.
+
+-spec get_uses (type()) -> (non_neg_integer() | -1).
+get_uses (Skill) -> Skill#skill.uses.
+
+-spec get_power (type()) -> (non_neg_integer() | -1).
+get_power (Skill) -> Skill#skill.power.
+
+-spec get_chance (type()) -> (0..100 | -1).
+get_chance (Skill) -> Skill#skill.chance.
+
+-spec get_range (type()) -> (non_neg_integer() | -1).
+get_range (Skill) -> Skill#skill.range.
+
+-spec from_id (id()) -> type().
+m4_include(__MAKEFILE_DATA_DIR/skill/global.m4.conf)m4_dnl
+m4_include(__MAKEFILE_DATA_DIR/skill/basic.m4d)m4_dnl
+from_id (_) ->
+ default().
+
+-spec default () -> type().
+default () -> from_id(<<"0">>).
+
+-spec default_id () -> id().
+default_id () -> <<"0">>.