| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-06-06 22:27:15 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-06-06 22:27:15 +0200 | 
| commit | d99f1e8b0efedf1286ab15c656a0ea874823865f (patch) | |
| tree | cb59e56498b59d369eed6b53cf58edc72521068b /src/battlemap | |
| parent | daa6c9b3fa9a62d3f6a1a696f67976e904d641b9 (diff) | |
... it actually seems to work rather well.reorganizing
Quite a lot of missing db_query:op() though.
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/bm_handler.erl | 12 | ||||
| -rw-r--r-- | src/battlemap/bm_shim.erl | 106 | 
2 files changed, 117 insertions, 1 deletions
diff --git a/src/battlemap/bm_handler.erl b/src/battlemap/bm_handler.erl index 09659e9..d355ea1 100644 --- a/src/battlemap/bm_handler.erl +++ b/src/battlemap/bm_handler.erl @@ -18,6 +18,16 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  start (_YawsParams) ->     {ok, Pid} = sh_timed_caches_manager:start(), -   bm_database_shim:generate_db(), +   case sh_database:fetch(battle_db, <<"0">>) of +      {ok, _} -> ok; +      not_found -> +         sh_database:insert +         ( +            battle_db, +            <<"0">>, +            any, +            bm_shim:generate_random_battle() +         ) +   end,     sh_timed_caches_manager:new_cache(Pid, battle_db, none),     ok. diff --git a/src/battlemap/bm_shim.erl b/src/battlemap/bm_shim.erl new file mode 100644 index 0000000..3789ed0 --- /dev/null +++ b/src/battlemap/bm_shim.erl @@ -0,0 +1,106 @@ +-module(bm_shim). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export([generate_random_battle/0 ]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +-spec generate_random_characters +   ( +      non_neg_integer(), +      non_neg_integer(), +      non_neg_integer(), +      non_neg_integer(), +      bm_battlemap:type(), +      list(bm_location:type()), +      list(bm_character:type()) +   ) +   -> list(bm_character:type()). +generate_random_characters +( +   0, +   0, +   _CharactersPerPlayer, +   _TotalCharacterCount, +   _Battlemap, +   _ForbiddenLocations, +   Result +) -> +   Result; +generate_random_characters +( +   MaxPlayerID, +   0, +   CharactersPerPlayer, +   TotalCharacterCount, +   Battlemap, +   ForbiddenLocations, +   Result +) -> +   generate_random_characters +   ( +      (MaxPlayerID - 1), +      CharactersPerPlayer, +      CharactersPerPlayer, +      TotalCharacterCount, +      Battlemap, +      ForbiddenLocations, +      Result +   ); +generate_random_characters +( +   MaxPlayerID, +   PlayerCharacterCount, +   CharactersPerPlayer, +   TotalCharacterCount, +   Battlemap, +   ForbiddenLocations, +   Result +) -> +   NewCharacter = +      bm_character:random +      ( +         TotalCharacterCount, +         list_to_binary(integer_to_list(MaxPlayerID)), +         bm_battlemap:get_width(Battlemap), +         bm_battlemap:get_height(Battlemap), +         ForbiddenLocations +      ), +   Character = +      case MaxPlayerID of +         0 -> bm_character:set_is_active(true, NewCharacter); +         _ -> NewCharacter +      end, + +   generate_random_characters +   ( +      MaxPlayerID, +      (PlayerCharacterCount - 1), +      CharactersPerPlayer, +      (TotalCharacterCount + 1), +      Battlemap, +      [bm_character:get_location(Character)|ForbiddenLocations], +      [Character|Result] +   ). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec generate_random_battle () -> bm_battle:type(). +generate_random_battle () -> +   BattlemapWidth = sh_roll:between(16, 64), +   BattlemapHeight = sh_roll:between(16, 64), +   Battlemap = bm_battlemap:random(0, BattlemapWidth, BattlemapHeight), +   Characters = generate_random_characters(1, 8, 8, 0, Battlemap, [], []), +   PlayersAsList = [bm_player:new(<<"0">>), bm_player:new(<<"1">>)], +   Battle = bm_battle:new(<<"0">>, PlayersAsList, Battlemap, Characters), + +   Battle.  | 


