summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-11-28 17:14:02 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-11-28 17:14:02 +0100
commitf539b7072c357339328d9bfd54f1f1ed51828586 (patch)
treeb6205dd79c78090831e812aceac177d2a9f35d28 /www/handler/battlemap/character_turn.yaws
parent80358376b9300a0d73cb8b62dfa9fdd65240ca66 (diff)
Trying to tidy up this mess.
Diffstat (limited to 'www/handler/battlemap/character_turn.yaws')
-rw-r--r--www/handler/battlemap/character_turn.yaws182
1 files changed, 0 insertions, 182 deletions
diff --git a/www/handler/battlemap/character_turn.yaws b/www/handler/battlemap/character_turn.yaws
deleted file mode 100644
index 2b3f818..0000000
--- a/www/handler/battlemap/character_turn.yaws
+++ /dev/null
@@ -1,182 +0,0 @@
-<erl>
--record
-(
- input,
- {
- session_token,
- player_id,
- battlemap_id,
- instance_id,
- char_id,
- path,
- target_id
- }
-).
--record
-(
- query_state,
- {
- input,
- battlemap,
- battlemap_inst,
- main_char,
- main_char_inst,
- main_char_new_loc,
- target_char,
- target_char_inst
- }
-).
-
-
--include("/my/src/tacticians-server/src/timed_cache_data.hrl").
-
-parse_input (Req) ->
- JSONReqMap = jiffy:decode(Req, [return_maps]),
- #input
- {
- session_token = maps:get(<<"session_token">>, JSONReqMap),
- player_id = maps:get(<<"player_id">>, JSONReqMap),
- battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap),
- instance_id = maps:get(<<"instance_id">>, JSONReqMap),
- char_id = maps:get(<<"char_id">>, JSONReqMap),
- path = maps:get(<<"path">>, JSONReqMap),
- target_id = maps:get(<<"target_id">>, JSONReqMap)
- }.
-
-fetch_data (Input) ->
- Battlemap = timed_cache:fetch(battlemap_db, Input#input.battlemap_id),
- BattlemapInst =
- timed_cache:fetch
- (
- battlemap_instance_db,
- <<"0">>
- ),
- MainChar = timed_cache:fetch(character_db, Input#input.char_id),
- MainCharInst =
- battlemap_instance:get_char_instance
- (
- BattlemapInst,
- Input#input.char_id
- ),
- case Input#input.target_id of
- <<"">> ->
- TargetChar = nothing,
- TargetCharInst = nothing;
-
- TargetID ->
- TargetChar = timed_cache:fetch(character_db, TargetID),
- TargetCharInst =
- battlemap_instance:get_char_instance
- (
- BattlemapInst,
- TargetID
- )
- end,
- #query_state
- {
- input = Input,
- battlemap = Battlemap,
- battlemap_inst = BattlemapInst,
- main_char = MainChar,
- main_char_inst = MainCharInst,
- main_char_new_loc = nothing,
- target_char = TargetChar,
- target_char_inst = TargetCharInst
- }.
-
-assert_main_char_can_be_used (QueryState) ->
- false = character_instance:is_dead(QueryState#query_state.main_char_inst),
- true =
- battlemap_instance:can_play_char_instance
- (
- QueryState#query_state.battlemap_inst,
- QueryState#query_state.input#input.player_id,
- QueryState#query_state.input#input.char_id
- ).
-
-handle_main_char_movement (QueryState) ->
- {X, Y} =
- battlemap:cross
- (
- QueryState#query_state.battlemap,
- character_instance:get_location(QueryState#query_state.main_char_inst),
- character:get_movement_points(QueryState#query_state.main_char),
- QueryState#query_state.input#input.path,
- battlemap_instance:get_char_instances
- (
- QueryState#query_state.battlemap_inst
- )
- ),
- QueryState#query_state
- {
- battlemap_inst =
- battlemap_instance:set_char_instance
- (
- battlemap_instance:post_play_char_instance
- (
- QueryState#query_state.battlemap_inst,
- QueryState#query_state.input#input.char_id
- ),
- QueryState#query_state.input#input.char_id,
- character_instance:set_location
- (
- QueryState#query_state.main_char_inst,
- X,
- Y
- )
- ),
- main_char_new_loc = {X, Y}
- }.
-
-handle_target (QueryState)
- when (QueryState#query_state.target_char_inst == nothing) ->
- QueryState;
-handle_target (QueryState) ->
- TargetLoc =
- character_instance:get_location(QueryState#query_state.main_char_inst),
- Dist =
- battlemap:dist(QueryState#query_state.main_char_new_loc, TargetLoc),
- true =
- (Dist =< character:get_attack_range(QueryState#query_state.main_char)),
- %% TODO: test for (and handle) riposte.
- QueryState#query_state
- {
- battlemap_inst =
- battlemap_instance:set_char_instance
- (
- QueryState#query_state.battlemap_inst,
- QueryState#query_state.input#input.target_id,
- character_instance:mod_health
- (
- QueryState#query_state.target_char_inst,
- -1,
- character:get_max_health(QueryState#query_state.main_char)
- )
- )
- }.
-
-handle (Req) ->
- %%%% Parse
- Input = parse_input(Req),
- %%%% Fetch
- QueryState = fetch_data(Input),
- %%%% Calc
- assert_main_char_can_be_used(QueryState),
- NQueryState = handle_target(handle_main_char_movement(QueryState)),
- %%%% Commit
- database_shim:commit
- (
- battlemap_instance_db,
- <<"0">>,
- NQueryState#query_state.battlemap_inst
- ),
- %%%% Reply
- jiffy:encode([[<<"okay">>]]).
-
-out(A) ->
- {
- content,
- "application/json; charset=UTF-8",
- handle(A#arg.clidata)
- }.
-</erl>