| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2019-04-23 18:26:09 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2019-04-23 18:26:09 +0200 | 
| commit | e39c44eabaea7bafa58aa85593b80a6c55f907a3 (patch) | |
| tree | a358e52c72285351fd099e512176048818df1f4f | |
| parent | 459a954c58e1bf9cb7359b617713f2057ceb024f (diff) | |
...
| -rw-r--r-- | src/battle/struct/btl_battle.erl | 300 | ||||
| -rw-r--r-- | src/battle/struct/btl_player.erl | 63 | ||||
| -rw-r--r-- | src/battle/struct/btl_player_turn.erl | 17 | ||||
| -rw-r--r-- | src/shared/struct/inventory/shr_equipment.erl | 47 | ||||
| -rw-r--r-- | src/shared/struct/shr_character.erl | 14 | 
5 files changed, 435 insertions, 6 deletions
| diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl index 46f8c10..61152cb 100644 --- a/src/battle/struct/btl_battle.erl +++ b/src/battle/struct/btl_battle.erl @@ -41,12 +41,32 @@        get_encoded_last_turns_effects/1,        set_map/2, +      ataxia_set_map/2, +      ataxia_set_map/3, +        set_related_inventory/2, +      ataxia_set_related_inventory/2, +      ataxia_set_related_inventory/3, +        set_characters/2, +      ataxia_set_characters/2, +      ataxia_set_characters/3, +        set_character/3, +      ataxia_set_character/3, +      ataxia_set_character/4, +        set_players/2, +      ataxia_set_players/2, +      ataxia_set_players/3, +        set_player/3, +      ataxia_set_player/3, +      ataxia_set_player/4, +        set_current_player_turn/2, +      ataxia_set_current_player_turn/2, +      ataxia_set_current_player_turn/3,        get_characters_field/0,        get_players_field/0, @@ -138,6 +158,59 @@ set_map (Map, Battle) ->        related_tile_ids = shr_map:get_related_tile_ids(Map)     }. +-spec ataxia_set_map (shr_map:type(), type()) -> {type(), ataxic:basic()}. +ataxia_set_map (Map, Battle) -> +   OldRelatedTileIds = Battle#battle.related_tile_ids, +   NewRelatedTileIds = shr_map:get_related_tile_ids(Map), + +   OrdsetUpdate = +      ataxic_sugar:update_ordset(OldRelatedTileIds, NewRelatedTileIds), + +   { +      Battle#battle +      { +         map = Map, +         related_tile_ids = NewRelatedTileIds +      }, +      ataxic:sequence +      ( +         [ +            ataxic:update_field(get_map_field(), ataxic:constant(Map)), +            ataxic:update_field(get_related_tile_ids_field(), OrdsetUpdate) +         ] +      ) +   }. + +-spec ataxia_set_map +   ( +      shr_map:type(), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_map (Map, MapUpdate, Battle) -> +   OldRelatedTileIds = Battle#battle.related_tile_ids, +   NewRelatedTileIds = shr_map:get_related_tile_ids(Map), + +   OrdsetUpdate = +      ataxic_sugar:update_ordset(OldRelatedTileIds, NewRelatedTileIds), + +   { +      Battle#battle +      { +         map = Map, +         related_tile_ids = NewRelatedTileIds +      }, +      ataxic:sequence +      ( +         [ +            ataxic:update_field(get_map_field(), MapUpdate), +            ataxic:update_field(get_related_tile_ids_field(), OrdsetUpdate) +         ] +      ) +   }. + +  -spec set_characters     (        orddict:orddict(non_neg_integer(), btl_character:unresolved()), @@ -150,6 +223,39 @@ set_characters (Characters, Battle) ->        characters = Characters     }. +-spec ataxia_set_characters +   ( +      orddict:orddict(non_neg_integer(), btl_character:unresolved()), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_characters (Characters, Battle) -> +   { +      Battle#battle { characters = Characters }, +      ataxic:update_field +      ( +         get_characters_field(), +         ataxic:constant(Characters) +      ) +   }. + +-spec ataxia_set_characters +   ( +      orddict:orddict(non_neg_integer(), btl_character:unresolved()), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_characters (Characters, CharactersUpdate, Battle) -> +   { +      Battle#battle { characters = Characters }, +      ataxic:update_field +      ( +         get_characters_field(), +         CharactersUpdate +      ) +   }. +  -spec set_character     (        non_neg_integer(), @@ -163,6 +269,47 @@ set_character (IX, Character, Battle) ->        characters = orddict:store(IX, Character, Battle#battle.characters)     }. +-spec ataxia_set_character +   ( +      non_neg_integer(), +      btl_character:unresolved(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_character (IX, Character, Battle) -> +   { +      Battle#battle +      { +         characters = orddict:store(IX, Character, Battle#battle.characters) +      }, +      ataxic:update_field +      ( +         get_characters_field(), +         ataxic_sugar:update_orddict_element(IX, ataxic:constant(Character)) +      ) +   }. + +-spec ataxia_set_character +   ( +      non_neg_integer(), +      btl_character:unresolved(), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_character (IX, Character, CharacterUpdate, Battle) -> +   { +      Battle#battle +      { +         characters = orddict:store(IX, Character, Battle#battle.characters) +      }, +      ataxic:update_field +      ( +         get_characters_field(), +         ataxic_sugar:update_orddict_element(IX, CharacterUpdate) +      ) +   }. +  -spec set_players     (        orddict:orddict(non_neg_integer(), btl_player:type()), @@ -175,13 +322,81 @@ set_players (Players, Battle) ->        players = Players     }. --spec set_related_inventory ( shr_inventory:type(), type()) -> type(). +-spec ataxia_set_players +   ( +      orddict:orddict(non_neg_integer(), btl_player:type()), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_players (Players, Battle) -> +   { +      Battle#battle +      { +         players = Players +      }, +      ataxic:update_field +      ( +         get_players_field(), +         ataxic:constant(Players) +      ) +   }. + +-spec ataxia_set_players +   ( +      orddict:orddict(non_neg_integer(), btl_player:type()), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_players (Players, PlayersUpdate, Battle) -> +   { +      Battle#battle +      { +         players = Players +      }, +      ataxic:update_field +      ( +         get_players_field(), +         PlayersUpdate +      ) +   }. + +-spec set_related_inventory (shr_inventory:type(), type()) -> type().  set_related_inventory (Inv, Battle) ->     Battle#battle     {        related_inventory = Inv     }. +-spec ataxia_set_related_inventory +   ( +      shr_inventory:type(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_related_inventory (Inv, Battle) -> +   { +      Battle#battle{ related_inventory = Inv }, +      ataxic:update_field +      ( +         get_related_inventory_field(), +         ataxic:constant(Inv) +      ) +   }. + +-spec ataxia_set_related_inventory +   ( +      shr_inventory:type(), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_related_inventory (Inv, InvUpdate, Battle) -> +   { +      Battle#battle{ related_inventory = Inv }, +      ataxic:update_field(get_related_inventory_field(), InvUpdate) +   }. +  -spec set_player (non_neg_integer(), btl_player:type(), type()) -> type().  set_player (IX, Player, Battle) ->     Battle#battle @@ -189,6 +404,47 @@ set_player (IX, Player, Battle) ->        players = orddict:store(IX, Player, Battle#battle.players)     }. +-spec ataxia_set_player +   ( +      non_neg_integer(), +      btl_player:type(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_player (IX, Player, Battle) -> +   { +      Battle#battle +      { +         players = orddict:store(IX, Player, Battle#battle.players) +      }, +      ataxic:update_field +      ( +         get_players_field(), +         ataxic_sugar:update_orddict_element(IX, ataxic:constant(Player)) +      ) +   }. + +-spec ataxia_set_player +   ( +      non_neg_integer(), +      btl_player:type(), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_player (IX, Player, PlayerUpdate, Battle) -> +   { +      Battle#battle +      { +         players = orddict:store(IX, Player, Battle#battle.players) +      }, +      ataxic:update_field +      ( +         get_players_field(), +         ataxic_sugar:update_orddict_element(IX, PlayerUpdate) +      ) +   }. +  -spec set_current_player_turn (btl_player_turn:type(), type()) -> type().  set_current_player_turn (PlayerTurn, Battle) ->     Battle#battle @@ -196,6 +452,45 @@ set_current_player_turn (PlayerTurn, Battle) ->        current_player_turn = PlayerTurn     }. +-spec ataxia_set_current_player_turn +   ( +      btl_player_turn:type(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_current_player_turn (PlayerTurn, Battle) -> +   { +      Battle#battle +      { +         current_player_turn = PlayerTurn +      }, +      ataxic:update_field +      ( +         get_current_player_turn_field(), +         ataxic:constant(PlayerTurn) +      ) +   }. + +-spec ataxia_set_current_player_turn +   ( +      btl_player_turn:type(), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_set_current_player_turn (PlayerTurn, PlayerTurnUpdate, Battle) -> +   { +      Battle#battle +      { +         current_player_turn = PlayerTurn +      }, +      ataxic:update_field +      ( +         get_current_player_turn_field(), +         PlayerTurnUpdate +      ) +   }. +  -spec new (shr_map:type()) -> type().  new (Map) ->     EmptyDict = orddict:new(), @@ -213,6 +508,9 @@ new (Map) ->  -spec get_characters_field () -> non_neg_integer().  get_characters_field () -> #battle.characters. +-spec get_map_field () -> non_neg_integer(). +get_map_field () -> #battle.map. +  -spec get_related_inventory_field () -> non_neg_integer().  get_related_inventory_field () -> #battle.related_inventory. diff --git a/src/battle/struct/btl_player.erl b/src/battle/struct/btl_player.erl index 054666d..3669e00 100644 --- a/src/battle/struct/btl_player.erl +++ b/src/battle/struct/btl_player.erl @@ -37,12 +37,18 @@        get_timeline/1,        get_is_active/1, +        set_is_active/2, +      ataxia_set_is_active/2,        set_luck/2, +      ataxia_set_luck/2,        add_to_timeline/2, +      ataxia_add_to_timeline/2, +        reset_timeline/1, +      ataxia_reset_timeline/1,        get_timeline_field/0,        get_luck_field/0, @@ -88,24 +94,75 @@ get_timeline (Player) -> Player#player.timeline.  -spec get_is_active (type()) -> boolean().  get_is_active (Player) -> Player#player.is_active. +  -spec set_is_active (boolean(), type()) -> type().  set_is_active (Val, Player) -> Player#player{ is_active = Val }. +-spec ataxia_set_is_active (boolean(), type()) -> {type(), ataxia:basic()}. +ataxia_set_is_active (Val, Player) -> +   { +      Player#player{ is_active = Val }, +      ataxic:update_field +      ( +         get_is_active_field(), +         ataxic:constant(Val) +      ) +   }. +  -spec set_luck (integer(), type()) -> type().  set_luck (Val, Player) -> Player#player{ luck = Val }. +-spec ataxia_set_luck (integer(), type()) -> {type(), ataxic:basic()}. +ataxia_set_luck (Val, Player) -> +   { +      Player#player{ luck = Val }, +      ataxic:update_field +      ( +         get_luck_field(), +         ataxic:constant(Val) +      ) +   }. +  -spec add_to_timeline (list(any()), type()) -> type().  add_to_timeline (NewEvents, Player) -> -   OldTimeline = Player#player.timeline, -     Player#player     { -      timeline = (NewEvents ++ OldTimeline) +      timeline = (NewEvents ++ Player#player.timeline) +   }. + +-spec ataxia_add_to_timeline (list(any()), type()) -> {type(), ataxic:basic()}. +ataxia_add_to_timeline (NewEvents, Player) -> +   { +      Player#player{ timeline = (NewEvents ++ Player#player.timeline) }, +      ataxic:update_field +      ( +         get_timeline_field(), +         ataxic:apply_function +         ( +            lists, +            append, +            [ +               ataxic:constant(NewEvents), +               ataxic:current_value() +            ] +         ) +      )     }.  -spec reset_timeline (type()) -> type().  reset_timeline (Player) -> Player#player{ timeline = [] }. +-spec ataxia_reset_timeline (type()) -> {type(), ataxic:basic()}. +ataxia_reset_timeline (Player) -> +   { +      Player#player{ timeline = [] }, +      ataxic:update_field +      ( +         get_timeline_field(), +         ataxic:constant([]) +      ) +   }. +  -spec new     (        non_neg_integer(), diff --git a/src/battle/struct/btl_player_turn.erl b/src/battle/struct/btl_player_turn.erl index 6bd823f..fb0c2b7 100644 --- a/src/battle/struct/btl_player_turn.erl +++ b/src/battle/struct/btl_player_turn.erl @@ -23,7 +23,8 @@  (     [        new/2, -      next/2 +      next/2, +      ataxia_next/2     ]  ). @@ -109,3 +110,17 @@ next (Players, CurrentPlayerTurn) ->        end,     new(NextTurnNumber, NextPlayerIX). + +-spec ataxia_next +   ( +      orddict:orddict(non_neg_integer(), btl_player:type()), +      type() +   ) +   -> {type(), ataxic:basic()}. +ataxia_next (Players, CurrentPlayerTurn) -> +   Next = next(Players, CurrentPlayerTurn), + +   { +      Next, +      ataxic:constant(Next) +   }. diff --git a/src/shared/struct/inventory/shr_equipment.erl b/src/shared/struct/inventory/shr_equipment.erl index 4de05fd..cbd4381 100644 --- a/src/shared/struct/inventory/shr_equipment.erl +++ b/src/shared/struct/inventory/shr_equipment.erl @@ -69,6 +69,7 @@        ataxia_set_portrait/2,        ataxia_set_glyph_board/2,        ataxia_set_glyphs/2, +      ataxia_set_glyphs/3,        get_primary_weapon_id/1,        get_secondary_weapon_id/1, @@ -83,13 +84,15 @@        set_portrait_id/2,        set_glyph_board_id/2,        set_glyph_ids/2, +      set_glyph_ids/2,        ataxia_set_primary_weapon_id/2,        ataxia_set_secondary_weapon_id/2,        ataxia_set_armor_id/2,        ataxia_set_portrait_id/2,        ataxia_set_glyph_board_id/2, -      ataxia_set_glyph_ids/2 +      ataxia_set_glyph_ids/2, +      ataxia_set_glyph_ids/3     ]  ). @@ -305,6 +308,29 @@ ataxia_set_glyphs (V, Eq) ->        )     }. +-spec ataxia_set_glyphs +   ( +      list(shr_glyph:type()), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}; +   ( +      list(shr_glyph:type()), +      ataxic:basic(), +      unresolved() +   ) +   -> {unresolved(), ataxic:basic()}. +ataxia_set_glyphs (V, VUpdate, Eq) -> +   { +      set_glyphs(V, Eq), +      ataxic:update_field +      ( +         get_glyphs_field(), +         VUpdate +      ) +   }. +  -spec set_primary_weapon_id     (shr_weapon:id(), type()) -> type();     (shr_weapon:id(), unresolved()) -> unresolved(). @@ -431,6 +457,25 @@ ataxia_set_glyph_ids (V, Eq) ->        )     }. +-spec ataxia_set_glyph_ids +   ( +      list(shr_glyph:id()), +      ataxic:basic(), +      type() +   ) +   -> {type(), ataxic:basic()}; +   ( +      list(shr_glyph:id()), +      ataxic:basic(), +      unresolved() +   ) +   -> {unresolved(), ataxic:basic()}. +ataxia_set_glyph_ids (V, VUpdate, Eq) -> +   { +      set_glyph_ids(V, Eq), +      ataxic:update_field(get_glyphs_field(), VUpdate) +   }. +  -spec default () -> type().  default () ->     #shr_eq diff --git a/src/shared/struct/shr_character.erl b/src/shared/struct/shr_character.erl index 133a6c2..09ad10b 100644 --- a/src/shared/struct/shr_character.erl +++ b/src/shared/struct/shr_character.erl @@ -56,6 +56,7 @@        ataxia_set_name/2,        set_equipment/2, +      ataxia_set_equipment/2,        ataxia_set_equipment/3,        set_extra_omnimods/2, @@ -139,6 +140,19 @@ set_equipment (EqRef, CharRef) when is_record(CharRef, shr_char_ref) ->     CharRef#shr_char_ref{ equipment = EqRef }.  -spec ataxia_set_equipment +   (shr_equipment:type(), type()) -> {type(), ataxic:basic()}; +   ( +      shr_equipment:unresolved(), +      unresolved() +   ) +   -> {unresolved(), ataxic:basic()}. +ataxia_set_equipment (Eq, Char) -> +   { +      set_equipment(Eq, Char), +      ataxic:update_field(get_equipment_field(), ataxic:constant(Eq)) +   }. + +-spec ataxia_set_equipment     (shr_equipment:type(), ataxic:basic(), type()) -> {type(), ataxic:basic()};     (        shr_equipment:unresolved(), | 


