| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-17 17:05:54 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-17 17:05:54 +0100 | 
| commit | 55d3257033e7ca3818425e280bdee9aa6f24fbcb (patch) | |
| tree | 840feab928232bfe20991a8c4cf50f5c0a993676 /src | |
| parent | f4bd9fdf0e9555837d5c1306fb629372c9a4c0f1 (diff) | |
Using a ets dict to simulate DBs.
Diffstat (limited to 'src')
| -rw-r--r-- | src/battlemap_shim.erl | 32 | ||||
| -rw-r--r-- | src/character_shim.erl | 56 | ||||
| -rw-r--r-- | src/database_shim.erl | 104 | ||||
| -rw-r--r-- | src/handler.erl | 1 | ||||
| -rw-r--r-- | src/timed_caches_manager.erl | 4 | 
5 files changed, 131 insertions, 66 deletions
| diff --git a/src/battlemap_shim.erl b/src/battlemap_shim.erl index 37a953b..af76554 100644 --- a/src/battlemap_shim.erl +++ b/src/battlemap_shim.erl @@ -1,18 +1,16 @@  -module(battlemap_shim). - --export( +-export +(     [        generate/2     ]  ). -generate_tile (0) -> -   {0, 1}; -generate_tile (1) -> -   {1, 2}; -generate_tile (2) -> -   {2, 99}. +-include("timed_cache_data.hrl"). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  generate(_Prev, Result, _X, 0, _BaseWidth) ->     Result;  generate(Prev, Result, 0, Y, BaseWidth) -> @@ -20,18 +18,28 @@ generate(Prev, Result, 0, Y, BaseWidth) ->  generate(Prev, Result, X, Y, BaseWidth) ->     case rand:uniform(6) of        N when (N > 3) -> -         generate(Prev, [generate_tile(Prev)|Result], (X - 1), Y, BaseWidth); +         generate(Prev, [Prev|Result], (X - 1), Y, BaseWidth);        N ->           NewTileType = (N - 1), -         generate( +         generate +         (              NewTileType, -            [generate_tile(NewTileType)|Result], +            [NewTileType|Result],              (X - 1),              Y,              BaseWidth           )     end. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  generate (Width, Height) -> -   {Width, Height, generate(0, [], Width, Height, Width)}. +   #battlemap +   { +      id = <<"0">>, +      width = Width, +      height = Height, +      content = array:from_list(generate(0, [], Width, Height, Width)) +   }. diff --git a/src/character_shim.erl b/src/character_shim.erl index 7390cc4..9476718 100644 --- a/src/character_shim.erl +++ b/src/character_shim.erl @@ -1,43 +1,35 @@  -module(character_shim). - --export( +-export +(     [ -      generate/2 +      generate/1     ]  ). -generate_char (N, X, Y, Team) -> +-include("timed_cache_data.hrl"). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +generate_char (N) ->     IDAsString = list_to_binary(integer_to_list(N)), +   #character     { -      IDAsString, % ID -      IDAsString, % Name -      IDAsString, % Icon -      IDAsString, % Portrait -      {X, Y}, -      Team, -      rand:uniform(10), % Movement Points -      (rand:uniform(5) - 1) % Attack Range +      id = IDAsString, % ID +      name = IDAsString, % Name +      icon = IDAsString, % Icon +      portrait = IDAsString, % Portrait +      mov_pts = rand:uniform(10), % Movement Points +      atk_rg = (rand:uniform(5) - 1) % Attack Range     }. -generate (0, Result, _MaxX, _MaxY) -> +generate (0, Result) ->     Result; -generate (N, Prev, MaxX, MaxY) -> -   generate -   ( -      (N - 1), -      [ -         generate_char -         ( -            N, -            (rand:uniform(MaxX) - 1), -            (rand:uniform(MaxY) - 1), -            (N rem 2) -         ) -         | Prev -      ], -      MaxX, -      MaxY -   ). +generate (N, Prev) -> +   generate((N - 1), [generate_char(N)|Prev]). -generate (MaxX, MaxY) -> -   generate(rand:uniform(14) + 2, [], MaxX, MaxY). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +generate (N) -> +   generate(N, []). diff --git a/src/database_shim.erl b/src/database_shim.erl index 3e88c34..4110918 100644 --- a/src/database_shim.erl +++ b/src/database_shim.erl @@ -1,26 +1,90 @@  -module(database_shim). --export([fetch/2]). +-export +( +   [ +      generate_db/1, +      fetch/2 +   ] +).  -include("timed_cache_data.hrl"). -fetch(battlemap_db, Object_ID) -> -   Width = (rand:uniform(54) + 10), -   Height = (rand:uniform(54) + 10), -   io:format +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +create_db (_Heir) -> +   ets:new     ( -      "~nGenerating new Battlemap ~p of size (~p, ~p)...~n", -      [Object_ID, Width, Height] +      db_shim, +      [ +         set, +         public, +         named_table, +         {keypos, 1}, +         {read_concurrency, true} +      ] +   ). + +add_to_db (ID, Val) -> +   ets:store(db_shim, {ID, Val}). + +generate_char_instances (Battlemap, Characters) -> +   lists:map +   ( +      fun (Char) -> +         { +            Char#character.id, +            #character_instance +            { +               x = rand:uniform(Battlemap#battlemap.width - 1), +               y = rand:uniform(Battlemap#battlemap.height - 1), +               team = (rand:uniform(2) - 1) +            } +         } +      end, +      Characters +   ). + +generate_map_instance (CharInts) -> +   #battlemap_instance +   { +      id = <<"0">>, +      chars = dict:from_list(CharInts), +      curr_player = <<"0">>, +      rem_chars = [], +      last_turn = [] +   }. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +generate_db (Heir) -> +   Pid = self(), +   spawn(fun () -> create_db(Heir), Pid ! ok, receive ok -> ok end end), +   receive +      ok -> ok +   end, +   Battlemap = battlemap_shim:generate(), +   Characters = character_shim:generate(rand:uniform(14) + 2), +   CharacterInsts = generate_char_instances(Battlemap, Characters), +   BattlemapInstance = generate_map_instance(CharacterInsts), +   add_to_db({battlemap_db, Battlemap#battlemap.id}, Battlemap), +   lists:map +   ( +      fun (Char) -> +         add_to_db({character_sb, Char#character.id}, Char) +      end, +      Characters     ), -   Result = -      #battlemap { -         id = Object_ID, -         width = Width, -         height = Height, -         content = battlemap_shim:generate(Width, Height) -      }, -   {ok, -      { -         character_shim:generate(Width, Height) -      } -   }; -fetch(battlemap_db, Object_ID) -> +   add_to_db +   ( +      {battlemap_instance_db, BattlemapInstance#battlemap_instance.id}, +      BattlemapInstance +   ). + +fetch (DB, Object_ID) -> +   ets:first(db_shim), %% It appears the db does not exist... +   case ets:lookup(db_shim, {DB, Object_ID}) of +      [{_Key, Value}] -> {ok, Value}; +      [] -> nothing +   end. diff --git a/src/handler.erl b/src/handler.erl index 5f6ced4..882e166 100644 --- a/src/handler.erl +++ b/src/handler.erl @@ -3,6 +3,7 @@  start(_YawsParams) ->     {ok, Pid} = gen_server:start(timed_caches_manager, [], []), +   database_shim:generate_db(Pid),     gen_server:cast(Pid, {add, battlemap_db, none}),     gen_server:cast(Pid, {add, battlemap_instance_db, none}),     gen_server:cast(Pid, {add, character_db, none}), diff --git a/src/timed_caches_manager.erl b/src/timed_caches_manager.erl index 019aed9..ad66fbb 100644 --- a/src/timed_caches_manager.erl +++ b/src/timed_caches_manager.erl @@ -40,7 +40,7 @@ add_cache (DB, none) ->           set,           public,           named_table, -         {keypos, 1}, +         {keypos, 2},           {read_concurrency, true},           {heir, none}        ] @@ -53,7 +53,7 @@ add_cache (DB, Heir) ->           set,           public,           named_table, -         {keypos, 1}, +         {keypos, 2},           {read_concurrency, true},           {heir, Heir, DB}        ] | 


