summaryrefslogtreecommitdiff |
diff options
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} ] |