| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/query/character_turn.erl')
| -rw-r--r-- | src/query/character_turn.erl | 53 | 
1 files changed, 38 insertions, 15 deletions
| diff --git a/src/query/character_turn.erl b/src/query/character_turn.erl index c71791c..0519a80 100644 --- a/src/query/character_turn.erl +++ b/src/query/character_turn.erl @@ -113,26 +113,28 @@ handle_character_instance_moving (QueryState, Input) ->        character_instance:get_character(ControlledCharacterInstance),     Path = Input#input.path,     Battlemap = battlemap_instance:get_battlemap(BattlemapInstance), +   ControlledCharacterStatistics = +      character:get_statistics(ControlledCharacter), +   ControlledCharacterMovementPoints = +      statistics:get_movement_points(ControlledCharacterStatistics), +     ForbiddenLocations =        array:map        ( -         fun (CharacterInstance) -> -            character_instance:get_location(CharacterInstance) -         end, +         fun character_instance:get_location/1,           battlemap_instance:get_character_instances(BattlemapInstance)        ), -   {ok, NewLocation, _} = +   {NewLocation, Cost} =        movement:cross        (           Battlemap, -         character_instance:get_location(ControlledCharacterInstance), -         statistics:get_movement_points -         ( -            character:get_statistics(ControlledCharacter) -         ), +         ForbiddenLocations,           Path, -         ForbiddenLocations +         character_instance:get_location(ControlledCharacterInstance)        ), + +   true = (Cost =< ControlledCharacterMovementPoints), +     QueryState#query_state     {        character_instance = @@ -346,11 +348,32 @@ play (QueryState, [attack|Next], Input) ->        Input     ). -send_to_database (_QueryResult, _TurnType, _Input) -> -   unimplemented. +send_to_database (QueryResult, _TurnType, Input) -> +   PlayerID = Input#input.player_id, +   BattlemapInstanceID = Input#input.battlemap_instance_id, +   BattlemapInstance = QueryResult#query_result.updated_battlemap_instance, -update_cache (_QueryResult, _TurnType, _Input) -> -   unimplemented. +   %% TODO: differential commit +   database_shim:commit +   ( +      battlemap_instance_db, +      PlayerID, +      BattlemapInstanceID, +      BattlemapInstance +   ). + +update_cache (QueryResult, Input) -> +   PlayerID = Input#input.player_id, +   BattlemapInstanceID = Input#input.battlemap_instance_id, +   BattlemapInstance = QueryResult#query_result.updated_battlemap_instance, + +   timed_cache:update +   ( +      battlemap_instance_db, +      PlayerID, +      BattlemapInstanceID, +      BattlemapInstance +   ).  generate_reply (_QueryResult, _TurnType, _Input) ->     unimplemented. @@ -372,7 +395,7 @@ handle (Req) ->           )        ),     send_to_database(QueryResult, TurnType, Input), -   update_cache(QueryResult, TurnType, Input), +   update_cache(QueryResult, Input),     security:unlock_queries(Input#input.player_id),     generate_reply(QueryResult, TurnType, Input). | 


