summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-07-11 17:54:14 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-07-11 17:54:14 +0200
commitfde827cba1ff3d889135c74ee1978098465fd200 (patch)
treed6022f800aa8226bf79a26a19189965c8cbfb2fe /src/battle/struct/btl_player.erl
parentdf59024199c387903e3d4a901171939a358489d3 (diff)
"Battlemap" -> "Battle".
Diffstat (limited to 'src/battle/struct/btl_player.erl')
-rw-r--r--src/battle/struct/btl_player.erl104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/battle/struct/btl_player.erl b/src/battle/struct/btl_player.erl
new file mode 100644
index 0000000..1cb1d93
--- /dev/null
+++ b/src/battle/struct/btl_player.erl
@@ -0,0 +1,104 @@
+-module(btl_player).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-type id() :: binary().
+
+-record
+(
+ player,
+ {
+ ix :: non_neg_integer(),
+ id :: id(),
+ character_ix :: non_neg_integer(),
+ timeline :: list(any()),
+ is_active :: boolean()
+ }
+).
+
+-opaque type() :: #player{}.
+
+-export_type([type/0, id/0]).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ get_id/1,
+ get_index/1,
+ get_character_index/1,
+ get_timeline/1,
+
+ get_is_active/1,
+ set_is_active/2,
+
+ add_to_timeline/2,
+ reset_timeline/1,
+
+ get_timeline_field/0,
+ get_is_active_field/0
+ ]
+).
+
+-export
+(
+ [
+ new/3
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec get_id (type()) -> id().
+get_id (Player) -> Player#player.id.
+
+-spec get_index (type()) -> non_neg_integer().
+get_index (Player) -> Player#player.ix.
+
+-spec get_character_index (type()) -> non_neg_integer().
+get_character_index (Player) -> Player#player.character_ix.
+
+-spec get_timeline (type()) -> list(any()).
+get_timeline (Player) -> Player#player.timeline.
+
+-spec get_is_active (type()) -> boolean().
+get_is_active (Player) -> Player#player.is_active.
+
+-spec set_is_active (boolean(), type()) -> type().
+set_is_active (Val, Player) -> Player#player{ is_active = Val }.
+
+-spec add_to_timeline (list(any()), type()) -> type().
+add_to_timeline (NewEvents, Player) ->
+ OldTimeline = Player#player.timeline,
+
+ Player#player
+ {
+ timeline = (NewEvents ++ OldTimeline)
+ }.
+
+-spec reset_timeline (type()) -> type().
+reset_timeline (Player) -> Player#player{ timeline = [] }.
+
+-spec new (non_neg_integer(), non_neg_integer(), id()) -> type().
+new (IX, CharacterIX, ID) ->
+ #player
+ {
+ ix = IX,
+ character_ix = CharacterIX,
+ id = ID,
+ is_active = true,
+ timeline = []
+ }.
+
+-spec get_timeline_field () -> non_neg_integer().
+get_timeline_field () -> #player.timeline.
+
+-spec get_is_active_field () -> non_neg_integer().
+get_is_active_field () -> #player.is_active.