summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/struct')
-rw-r--r-- | src/struct/battle.erl | 74 | ||||
-rw-r--r-- | src/struct/player.erl | 72 |
2 files changed, 112 insertions, 34 deletions
diff --git a/src/struct/battle.erl b/src/struct/battle.erl index 4ee3b51..d668bbb 100644 --- a/src/struct/battle.erl +++ b/src/struct/battle.erl @@ -12,9 +12,8 @@ id :: id(), battlemap :: battlemap:struct(), character_instances :: array:array(character_instance:struct()), - player_ids :: array:array(player:id()), - current_player_turn :: player_turn:struct(), - last_turns_effects :: list(any()) + players :: array:array(player:struct()), + current_player_turn :: player_turn:struct() } ). @@ -33,17 +32,17 @@ get_battlemap/1, get_character_instances/1, get_character_instance/2, - get_player_ids/1, - get_player_id/2, + get_players/1, + get_player/2, get_current_player_turn/1, - get_last_turns_effects/1, + get_encoded_last_turns_effects/1, set_battlemap/2, set_character_instances/2, set_character_instance/3, - set_player_ids/2, - set_current_player_turn/2, - set_last_turns_effects/2 + set_players/2, + set_player/3, + set_current_player_turn/2 ] ). @@ -79,21 +78,22 @@ get_character_instances (Battle) -> get_character_instance (IX, Battle) -> array:get(IX, Battle#battle.character_instances). --spec get_player_ids (struct()) -> array:array(player:id()). -get_player_ids (Battle) -> - Battle#battle.player_ids. +-spec get_players (struct()) -> array:array(player:struct()). +get_players (Battle) -> + Battle#battle.players. --spec get_player_id (non_neg_integer(), struct()) -> player:id(). -get_player_id (IX, Battle) -> - array:get(IX, Battle#battle.player_ids). +-spec get_player (non_neg_integer(), struct()) -> player:struct(). +get_player (IX, Battle) -> + array:get(IX, Battle#battle.players). -spec get_current_player_turn (struct()) -> player_turn:struct(). get_current_player_turn (Battle) -> Battle#battle.current_player_turn. --spec get_last_turns_effects (struct()) -> list(any()). -get_last_turns_effects (Battle) -> - Battle#battle.last_turns_effects. +-spec get_encoded_last_turns_effects (struct()) -> list(any()). +get_encoded_last_turns_effects (_Battle) -> + % TODO + []. -spec set_battlemap (battlemap:struct(), struct()) -> struct(). set_battlemap (Battlemap, Battle) -> @@ -133,46 +133,53 @@ set_character_instance (IX, CharacterInstance, Battle) -> ) }. --spec set_player_ids +-spec set_players ( - array:array(player:id()), + array:array(player:struct()), struct() ) -> struct(). -set_player_ids (Players, Battle) -> +set_players (Players, Battle) -> Battle#battle { - player_ids = Players + players = Players }. --spec set_current_player_turn +-spec set_player ( - player_turn:struct(), + non_neg_integer(), + player:struct(), struct() ) -> struct(). -set_current_player_turn (PlayerTurn, Battle) -> +set_player (IX, Player, Battle) -> Battle#battle { - current_player_turn = PlayerTurn + players = + array:set + ( + IX, + Player, + Battle#battle.players + ) }. --spec set_last_turns_effects +-spec set_current_player_turn ( - list(any()), + player_turn:struct(), struct() ) -> struct(). -set_last_turns_effects (Effects, Battle) -> +set_current_player_turn (PlayerTurn, Battle) -> Battle#battle { - last_turns_effects = Effects + current_player_turn = PlayerTurn }. -spec random ( id(), - list(player:id()), + list(player:struct()), battlemap:struct(), list(character:struct()) ) @@ -221,7 +228,6 @@ random (ID, PlayersAsList, Battlemap, Characters) -> id = ID, battlemap = Battlemap, character_instances = array:from_list(CharacterInstancesAsList), - player_ids = array:from_list(PlayersAsList), - current_player_turn = player_turn:new(0, 0), - last_turns_effects = [] + players = array:from_list(PlayersAsList), + current_player_turn = player_turn:new(0, 0) }. diff --git a/src/struct/player.erl b/src/struct/player.erl new file mode 100644 index 0000000..824e474 --- /dev/null +++ b/src/struct/player.erl @@ -0,0 +1,72 @@ +-module(player). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-type id() :: string(). + +-record +( + player, + { + id :: id(), + timeline :: list(any()) + } +). + +-opaque struct() :: #player{}. + +-export_type([struct/0, id/0]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( + [ + get_id/1, + get_timeline/1, + add_to_timeline/2, + reset_timeline/1 + ] +). + +-export +( + [ + new/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec get_id (struct()) -> id(). +get_id (Player) -> Player#player.id. + +-spec get_timeline (struct()) -> list(any()). +get_timeline (Player) -> Player#player.timeline. + +-spec add_to_timeline (list(any()), struct()) -> struct(). +add_to_timeline (NewEvents, Player) -> + OldTimeline = Player#player.timeline, + + Player#player + { + timeline = (OldTimeline ++ NewEvents) + }. + +-spec reset_timeline (struct()) -> struct(). +reset_timeline (Player) -> Player#player{ timeline = [] }. + +-spec new (id()) -> struct(). +new (ID) -> + #player + { + id = ID, + timeline = [] + }. + |