summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-06-06 22:27:15 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-06-06 22:27:15 +0200
commitd99f1e8b0efedf1286ab15c656a0ea874823865f (patch)
treecb59e56498b59d369eed6b53cf58edc72521068b /src/shared/io/sh_database.erl
parentdaa6c9b3fa9a62d3f6a1a696f67976e904d641b9 (diff)
... it actually seems to work rather well.reorganizing
Quite a lot of missing db_query:op() though.
Diffstat (limited to 'src/shared/io/sh_database.erl')
-rw-r--r--src/shared/io/sh_database.erl118
1 files changed, 16 insertions, 102 deletions
diff --git a/src/shared/io/sh_database.erl b/src/shared/io/sh_database.erl
index 5fa791f..8b52f9e 100644
--- a/src/shared/io/sh_database.erl
+++ b/src/shared/io/sh_database.erl
@@ -10,7 +10,7 @@
-export
(
[
- generate_db/0,
+ insert/4,
fetch/2,
commit/1
]
@@ -19,119 +19,33 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-get_db_node () ->
- list_to_atom("db_node@" ++ net_adm:localhost()).
+get_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()).
--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]
- ).
+do_remote_operation (Op, Params) ->
+ rpc:call(get_db_node(), db_access, Op, Params).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec generate_db () -> 'ok'.
-generate_db () ->
- 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),
-
- {atomic, ok} =
- rpc:call
- (
- get_db_node(),
- storage_access,
- insert,
- [battle_db, <<"0">>, any, Battle]
- ),
+-spec insert (atom(), any(), sh_db_user:permission(), any()) -> 'ok'.
+insert (DB, ObjectID, Permission, Value) ->
+ {atomic, _} = do_remote_operation(insert, [DB, ObjectID, Permission, Value]),
+ io:format
+ (
+ "~nsh_database:insert(~p) -> ok.~n",
+ [{DB, ObjectID, Permission, Value}]
+ ),
ok.
-spec fetch (atom(), any()) -> ({'ok', any()} | 'not_found').
fetch (DB, ObjectID) ->
- {atomic, Reply} =
- rpc:call(get_db_node(), storage_access, read, [DB, ObjectID]),
- io:format("~ndb_shim:fetch(~p) -> ~p.~n", [{DB, ObjectID}, Reply]),
+ {atomic, Reply} = do_remote_operation(read, [DB, ObjectID]),
+ io:format("~nsh_database:fetch(~p) -> ~p.~n", [{DB, ObjectID}, Reply]),
Reply.
-spec commit (sh_db_query:type()) -> 'ok'.
commit (Query) ->
- {atomic, ok} = rpc:call(get_db_node(), storage_access, query, [Query]),
- io:format("~ndb_shim:commit(~p) -> ok.~n", [Query]),
+ {atomic, ok} = do_remote_operation(query, [Query]),
+ io:format("~nsh_database:commit(~p) -> ok.~n", [Query]),
ok.