| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle/struct/btl_character_turn_data.erl')
| -rw-r--r-- | src/battle/struct/btl_character_turn_data.erl | 115 | 
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 +         ) +   }. | 


