summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/struct')
-rw-r--r--src/battle/struct/btl_battle.erl18
-rw-r--r--src/battle/struct/btl_pending_battle.erl84
2 files changed, 93 insertions, 9 deletions
diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl
index dec7fd7..5cc7bc3 100644
--- a/src/battle/struct/btl_battle.erl
+++ b/src/battle/struct/btl_battle.erl
@@ -10,9 +10,9 @@
battle,
{
id :: id(),
- used_armor_ids :: list(shr_armor:id()),
- used_weapon_ids :: list(shr_weapon:id()),
- used_tile_ids :: list(shr_tile:class_id()),
+ used_armor_ids :: ordsets:ordset(shr_armor:id()),
+ used_weapon_ids :: ordsets:ordset(shr_weapon:id()),
+ used_tile_ids :: ordsets:ordset(shr_tile:class_id()),
map :: btl_map:type(),
characters :: array:array(btl_character:type()),
players :: array:array(btl_player:type()),
@@ -86,13 +86,13 @@ get_all_timelines (Result, CurrentIndex, EndPoint, ArraySize, Players) ->
-spec get_id (type()) -> id().
get_id (Battle) -> Battle#battle.id.
--spec get_used_weapon_ids (type()) -> list(shr_weapon:id()).
+-spec get_used_weapon_ids (type()) -> ordsets:ordset(shr_weapon:id()).
get_used_weapon_ids (Battle) -> Battle#battle.used_weapon_ids.
--spec get_used_armor_ids (type()) -> list(shr_armor:id()).
+-spec get_used_armor_ids (type()) -> ordsets:ordset(shr_armor:id()).
get_used_armor_ids (Battle) -> Battle#battle.used_armor_ids.
--spec get_used_tile_ids (type()) -> list(shr_tile:class_id()).
+-spec get_used_tile_ids (type()) -> ordsets:ordset(shr_tile:class_id()).
get_used_tile_ids (Battle) -> Battle#battle.used_tile_ids.
-spec get_map (type()) -> btl_map:type().
@@ -187,9 +187,9 @@ set_current_player_turn (PlayerTurn, Battle) ->
list(btl_player:type()),
btl_map:type(),
list(btl_character:type()),
- list(shr_weapon:id()),
- list(shr_armor:id()),
- list(shr_tile:class_id())
+ ordsets:ordset(shr_weapon:id()),
+ ordsets:ordset(shr_armor:id()),
+ ordsets:ordset(shr_tile:class_id())
)
-> type().
new (ID, PlayersAsList, Map, CharactersAsList, UWIDs, UAIDs, UTIDs) ->
diff --git a/src/battle/struct/btl_pending_battle.erl b/src/battle/struct/btl_pending_battle.erl
new file mode 100644
index 0000000..6e21f79
--- /dev/null
+++ b/src/battle/struct/btl_pending_battle.erl
@@ -0,0 +1,84 @@
+-module(btl_pending_battle).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-type id() :: binary().
+
+-record
+(
+ pending_battle,
+ {
+ id :: id(),
+ free_slots :: non_neg_integer(),
+ battle :: btl_battle:type()
+ }
+).
+
+-opaque type() :: #pending_battle{}.
+
+-export_type([type/0, id/0]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Accessors
+-export
+(
+ [
+ get_id/1,
+ get_battle/1,
+ get_free_slots/1,
+
+ set_battle/2,
+ set_free_slots/2,
+
+ get_battle_field/0,
+ get_free_slots_field/0
+ ]
+).
+
+-export
+(
+ [
+ new/3
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec new (id(), non_neg_integer(), btl_battle:type()) -> type().
+new (ID, FreeSlots, Battle) ->
+ #pending_battle
+ {
+ id = ID,
+ free_slots = FreeSlots,
+ battle = Battle
+ }.
+
+%%%% Accessors
+-spec get_id (type()) -> id().
+get_id (PBattle) -> PBattle#pending_battle.id.
+
+-spec get_battle (type()) -> btl_battle:type().
+get_battle (PBattle) -> PBattle#pending_battle.battle.
+
+-spec get_free_slots (type()) -> non_neg_integer().
+get_free_slots (PBattle) -> PBattle#pending_battle.free_slots.
+
+-spec set_battle (btl_battle:type(), type()) -> type().
+set_battle (Battle, PBattle) -> PBattle#pending_battle{ battle = Battle }.
+
+-spec set_free_slots (non_neg_integer(), type()) -> type().
+set_free_slots (Val, PBattle) -> PBattle#pending_battle{ free_slots = Val }.
+
+-spec get_battle_field () -> non_neg_integer().
+get_battle_field () -> #pending_battle.battle.
+
+-spec get_free_slots_field () -> non_neg_integer().
+get_free_slots_field () -> #pending_battle.free_slots.