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_character_turn_data.erl
parentdf59024199c387903e3d4a901171939a358489d3 (diff)
"Battlemap" -> "Battle".
Diffstat (limited to 'src/battle/struct/btl_character_turn_data.erl')
-rw-r--r--src/battle/struct/btl_character_turn_data.erl115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/battle/struct/btl_character_turn_data.erl b/src/battle/struct/btl_character_turn_data.erl
new file mode 100644
index 0000000..31a4b7d
--- /dev/null
+++ b/src/battle/struct/btl_character_turn_data.erl
@@ -0,0 +1,115 @@
+-module(btl_character_turn_data).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-record
+(
+ type,
+ {
+ dirty :: boolean(),
+ battle :: btl_battle:type(),
+ character :: btl_character:type(),
+ character_ix :: non_neg_integer()
+ }
+).
+
+-opaque type() :: #type{}.
+
+-export_type([type/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ new/2,
+
+ get_battle_is_dirty/1,
+ get_battle/1,
+ get_character/1,
+ get_character_ix/1,
+
+ set_battle/2,
+ set_character/2
+ ]
+).
+
+-export
+(
+ [
+ clean_battle/1,
+ refresh_character/1
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec new (btl_battle:type(), non_neg_integer()) -> type().
+new (Battle, CharacterIX) ->
+ Character = btl_battle:get_character(CharacterIX, Battle),
+
+ #type
+ {
+ dirty = false,
+ battle = Battle,
+ character = Character,
+ character_ix = CharacterIX
+ }.
+
+-spec get_battle_is_dirty (type()) -> boolean().
+get_battle_is_dirty (Data) -> Data#type.dirty.
+
+-spec get_battle (type()) -> btl_battle:type().
+get_battle (Data) -> Data#type.battle.
+
+-spec get_character (type()) -> btl_character:type().
+get_character (Data) -> Data#type.character.
+
+-spec get_character_ix (type()) -> non_neg_integer().
+get_character_ix (Data) -> Data#type.character_ix.
+
+-spec set_battle (btl_battle:type(), type()) -> type().
+set_battle (Battle, Data) ->
+ Data#type{ battle = Battle }.
+
+-spec set_character (btl_character:type(), type()) -> type().
+set_character (Character, Data) ->
+ Data#type
+ {
+ dirty = true,
+ character = Character
+ }.
+
+-spec clean_battle (type()) -> type().
+clean_battle (Data) ->
+ Data#type
+ {
+ dirty = false,
+ battle =
+ btl_battle:set_character
+ (
+ Data#type.character_ix,
+ Data#type.character,
+ Data#type.battle
+ )
+ }.
+
+-spec refresh_character (type()) -> type().
+refresh_character (Data) ->
+ Data#type
+ {
+ dirty = false,
+ character =
+ btl_battle:get_character
+ (
+ Data#type.character_ix,
+ Data#type.battle
+ )
+ }.