summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-05-11 21:32:23 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-05-11 21:32:23 +0200
commit92756a57bcad59c8b7a617b608bb6b7a18f128c8 (patch)
tree706e4038ee4a3445f255c315721ce6485bc43117 /src/battlemap
parente2813997860edc136142f5d8aeb8f5513f9a57db (diff)
Updates how the random battle is generated.
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/src/shim/database_shim.erl36
-rw-r--r--src/battlemap/src/struct/battle.erl44
2 files changed, 28 insertions, 52 deletions
diff --git a/src/battlemap/src/shim/database_shim.erl b/src/battlemap/src/shim/database_shim.erl
index 1b1992b..cc653ad 100644
--- a/src/battlemap/src/shim/database_shim.erl
+++ b/src/battlemap/src/shim/database_shim.erl
@@ -47,6 +47,8 @@ add_to_db (ID, Val) ->
non_neg_integer(),
non_neg_integer(),
non_neg_integer(),
+ battlemap:type(),
+ list(location:type()),
list(character:type())
)
-> list(character:type()).
@@ -56,6 +58,8 @@ generate_random_characters
0,
_CharactersPerPlayer,
_TotalCharacterCount,
+ _Battlemap,
+ _ForbiddenLocations,
Result
) ->
Result;
@@ -65,6 +69,8 @@ generate_random_characters
0,
CharactersPerPlayer,
TotalCharacterCount,
+ Battlemap,
+ ForbiddenLocations,
Result
) ->
generate_random_characters
@@ -73,6 +79,8 @@ generate_random_characters
CharactersPerPlayer,
CharactersPerPlayer,
TotalCharacterCount,
+ Battlemap,
+ ForbiddenLocations,
Result
);
generate_random_characters
@@ -81,21 +89,34 @@ generate_random_characters
PlayerCharacterCount,
CharactersPerPlayer,
TotalCharacterCount,
+ Battlemap,
+ ForbiddenLocations,
Result
) ->
NewCharacter =
character:random
(
TotalCharacterCount,
- list_to_binary(integer_to_list(MaxPlayerID))
+ list_to_binary(integer_to_list(MaxPlayerID)),
+ battlemap:get_width(Battlemap),
+ battlemap:get_height(Battlemap),
+ ForbiddenLocations
),
+ Character =
+ case MaxPlayerID of
+ 0 -> character:set_is_active(true, NewCharacter);
+ _ -> NewCharacter
+ end,
+
generate_random_characters
(
MaxPlayerID,
(PlayerCharacterCount - 1),
CharactersPerPlayer,
(TotalCharacterCount + 1),
- [NewCharacter|Result]
+ Battlemap,
+ [character:get_location(Character)|ForbiddenLocations],
+ [Character|Result]
).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -111,16 +132,9 @@ generate_db (Heir) ->
BattlemapWidth = roll:between(16, 64),
BattlemapHeight = roll:between(16, 64),
Battlemap = battlemap:random(0, BattlemapWidth, BattlemapHeight),
- Characters = generate_random_characters(1, 8, 8, 0, []),
+ Characters = generate_random_characters(1, 8, 8, 0, Battlemap, [], []),
PlayersAsList = [player:new(<<"0">>), player:new(<<"1">>)],
- Battle =
- battle:random
- (
- <<"0">>,
- PlayersAsList,
- Battlemap,
- Characters
- ),
+ Battle = battle:new(<<"0">>, PlayersAsList, Battlemap, Characters),
add_to_db({battle_db, <<"0">>}, Battle).
diff --git a/src/battlemap/src/struct/battle.erl b/src/battlemap/src/struct/battle.erl
index 59cc581..37e0d1b 100644
--- a/src/battlemap/src/struct/battle.erl
+++ b/src/battlemap/src/struct/battle.erl
@@ -49,7 +49,7 @@
-export
(
[
- random/4
+ new/4
]
).
@@ -164,7 +164,7 @@ set_current_player_turn (PlayerTurn, Battle) ->
current_player_turn = PlayerTurn
}.
--spec random
+-spec new
(
id(),
list(player:type()),
@@ -172,45 +172,7 @@ set_current_player_turn (PlayerTurn, Battle) ->
list(character:type())
)
-> type().
-random (ID, PlayersAsList, Battlemap, Characters) ->
- BattlemapWidth = battlemap:get_width(Battlemap),
- BattlemapHeight = battlemap:get_height(Battlemap),
- {CharactersAsList, _ForbiddenLocations} =
- lists:mapfoldl
- (
- fun (Character, ForbiddenLocations) ->
- CharacterOwner = character:get_owner_id(Character),
- NewCharacter =
- character:random
- (
- Character,
- BattlemapWidth,
- BattlemapHeight,
- ForbiddenLocations
- ),
- NewCharacterActive =
- case CharacterOwner of
- <<"0">> ->
- character:set_is_active
- (
- true,
- NewCharacter
- );
-
- _ ->
- NewCharacter
- end,
- NewCharacterLocation =
- character:get_location(NewCharacterActive),
- {
- NewCharacterActive,
- [NewCharacterLocation|ForbiddenLocations]
- }
- end,
- [],
- Characters
- ),
-
+new (ID, PlayersAsList, Battlemap, CharactersAsList) ->
#battle
{
id = ID,