| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-03-12 13:00:59 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-03-12 13:00:59 +0100 | 
| commit | 11a7a03a0088b2c4b8edc394469396d54190dc53 (patch) | |
| tree | 7856475136a11a60bcf4c2980adfb5624a116b33 /src/struct | |
| parent | 98203d4d0034dab5db72737bcfb92017a11f3245 (diff) | |
Starting to work on the timeline feature.
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 = [] +   }. + | 


