summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battlemap_shim.erl32
-rw-r--r--src/character_shim.erl56
-rw-r--r--src/database_shim.erl104
-rw-r--r--src/handler.erl1
-rw-r--r--src/timed_caches_manager.erl4
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}
]