summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battlemap/struct/bm_character_turn_update.erl')
-rw-r--r--src/battlemap/struct/bm_character_turn_update.erl73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/battlemap/struct/bm_character_turn_update.erl b/src/battlemap/struct/bm_character_turn_update.erl
new file mode 100644
index 0000000..078075c
--- /dev/null
+++ b/src/battlemap/struct/bm_character_turn_update.erl
@@ -0,0 +1,73 @@
+-module(bm_character_turn_update).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-record
+(
+ type,
+ {
+ data :: bm_character_turn_data:type(),
+ timeline :: list(any()),
+ db :: list(sh_db_query:op())
+ }
+).
+
+-opaque type() :: #type{}.
+
+-export_type([type/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ new/1,
+
+ get_data/1,
+ get_timeline/1,
+ get_db/1,
+
+ set_data/2,
+ add_to_timeline/2,
+ add_to_db/2
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec new (bm_character_turn_data:type()) -> type().
+new (Data) ->
+ #type
+ {
+ data = Data,
+ timeline = [],
+ db = []
+ }.
+
+-spec get_data (type()) -> bm_character_turn_data:type().
+get_data (Update) -> Update#type.data.
+
+-spec get_timeline (type()) -> list(any()).
+get_timeline (Update) -> Update#type.timeline.
+
+-spec get_db (type()) -> list(sh_db_query:op()).
+get_db (Update) -> Update#type.db.
+
+-spec set_data (bm_character_turn_data:type(), type()) -> type().
+set_data (Data, Update) ->
+ Update#type{ data = Data}.
+
+-spec add_to_timeline (bm_turn_result:type(), type()) -> type().
+add_to_timeline (Item, Update) ->
+ Update#type{ timeline = [bm_turn_result:encode(Item)|Update#type.timeline] }.
+
+-spec add_to_db (sh_db_query:op(), type()) -> type().
+add_to_db (Item, Update) ->
+ Update#type{ db = [Item|Update#type.db] }.