aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-03-06 17:08:00 +0100
committernsensfel <SpamShield0@noot-noot.org>2018-03-06 17:08:00 +0100
commit98203d4d0034dab5db72737bcfb92017a11f3245 (patch)
tree9c4fd2a8904468d7ee69d86e39ce27051cc8ca2d
parente5bc1b2d1bfcf5f36bd4f0d567e4ec8e0fb22e85 (diff)
downloadtacticians-server-refactoring.zip
tacticians-server-refactoring.tar.bz2
I might have been using JSON the wrong way.refactoring
-rw-r--r--src/query/character_turn.erl11
-rw-r--r--src/reply/add_char.erl76
-rw-r--r--src/reply/set_map.erl23
-rw-r--r--src/struct/attack.erl23
-rw-r--r--src/struct/location.erl20
-rw-r--r--src/struct/turn_result.erl55
6 files changed, 96 insertions, 112 deletions
diff --git a/src/query/character_turn.erl b/src/query/character_turn.erl
index c4f9883..a692be1 100644
--- a/src/query/character_turn.erl
+++ b/src/query/character_turn.erl
@@ -151,14 +151,15 @@ update_cache (Battle, Input) ->
)
-> binary().
generate_reply (ClientUpdate) ->
- %% TODO
jiffy:encode
(
[
- [
- <<"raw">>,
- lists:map(fun turn_result:encode/1, ClientUpdate)
- ]
+ {
+ [
+ {<<"msg">>, <<"turn_results">>},
+ {<<"cnt">>, lists:map(fun turn_result:encode/1, ClientUpdate)}
+ ]
+ }
]
).
diff --git a/src/reply/add_char.erl b/src/reply/add_char.erl
index a920a2a..b3ef128 100644
--- a/src/reply/add_char.erl
+++ b/src/reply/add_char.erl
@@ -29,58 +29,46 @@ attributes_as_json (Attributes) ->
]
}.
--spec encode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec generate
(
non_neg_integer(),
character_instance:struct(),
player:id()
)
- -> binary().
-encode (IX, CharacterInstance, PlayerID) ->
+ -> {list(any())}.
+generate (IX, CharacterInstance, PlayerID) ->
Character = character_instance:get_character(CharacterInstance),
Location = character_instance:get_location(CharacterInstance),
Attributes = character:get_attributes(Character),
{ActiveWeapon, SecondaryWeapon} = character:get_weapon_ids(Character),
OwnerID = character:get_owner_id(Character),
- jiffy:encode
- (
- {
- [
- {<<"ix">>, IX},
- {<<"nam">>, character:get_name(Character)},
- {<<"ico">>, character:get_icon(Character)},
- {<<"prt">>, character:get_portrait(Character)},
- {
- <<"hea">>,
- character_instance:get_current_health(CharacterInstance)
- },
- {<<"lc">>, location:encode(Location)},
- {<<"pla">>, OwnerID},
- {
- <<"ena">>,
- (
- character_instance:get_is_active(CharacterInstance)
- and
- (OwnerID == PlayerID)
- )
- },
- {<<"att">>, attributes_as_json(Attributes)},
- {<<"awp">>, ActiveWeapon},
- {<<"swp">>, SecondaryWeapon}
- ]
- }
- ).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec generate
- (
- non_neg_integer(),
- character_instance:struct(),
- player:id()
- )
- -> list(binary()).
-generate (IX, CharacterInstance, PlayerID) ->
- [<<"add_char">>, encode(IX, CharacterInstance, PlayerID)].
+ {
+ [
+ {<<"msg">>, <<"add_char">>},
+ {<<"ix">>, IX},
+ {<<"nam">>, character:get_name(Character)},
+ {<<"ico">>, character:get_icon(Character)},
+ {<<"prt">>, character:get_portrait(Character)},
+ {
+ <<"hea">>,
+ character_instance:get_current_health(CharacterInstance)
+ },
+ {<<"lc">>, location:encode(Location)},
+ {<<"pla">>, OwnerID},
+ {
+ <<"ena">>,
+ (
+ character_instance:get_is_active(CharacterInstance)
+ and
+ (OwnerID == PlayerID)
+ )
+ },
+ {<<"att">>, attributes_as_json(Attributes)},
+ {<<"awp">>, ActiveWeapon},
+ {<<"swp">>, SecondaryWeapon}
+ ]
+ }.
diff --git a/src/reply/set_map.erl b/src/reply/set_map.erl
index 0941239..6a7cd39 100644
--- a/src/reply/set_map.erl
+++ b/src/reply/set_map.erl
@@ -12,22 +12,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec encode (battlemap:struct()) -> binary().
-encode (Battlemap) ->
- jiffy:encode
- (
- {
- [
- {<<"w">>, battlemap:get_width(Battlemap)},
- {<<"h">>, battlemap:get_height(Battlemap)},
- {<<"t">>, array:sparse_to_list(battlemap:get_tile_ids(Battlemap))}
- ]
- }
- ).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec generate (battlemap:struct()) -> list(binary()).
+-spec generate (battlemap:struct()) -> {list(any())}.
generate (Battlemap) ->
- [<<"set_map">>, encode(Battlemap)].
+ {
+ [
+ {<<"msg">>, <<"set_map">>},
+ {<<"w">>, battlemap:get_width(Battlemap)},
+ {<<"h">>, battlemap:get_height(Battlemap)},
+ {<<"t">>, array:sparse_to_list(battlemap:get_tile_ids(Battlemap))}
+ ]
+ }.
diff --git a/src/struct/attack.erl b/src/struct/attack.erl
index 7b81adc..7f6b302 100644
--- a/src/struct/attack.erl
+++ b/src/struct/attack.erl
@@ -281,7 +281,7 @@ get_sequence (AttackRange, AttackerWeapon, DefenderWeapon) ->
[First, Counter, Second]
end.
--spec encode (struct()) -> binary().
+-spec encode (struct()) -> {list(any())}.
% This shouldn't be a possibility. Types in this module are a mess...
encode (Attack) ->
Order = Attack#attack.order,
@@ -290,15 +290,12 @@ encode (Attack) ->
IsParry = Attack#attack.is_parry,
Damage = Attack#attack.damage,
- jiffy:encode
- (
- {
- [
- {<<"ord">>, encode_order(Order)},
- {<<"pre">>, encode_precision(Precision)},
- {<<"cri">>, IsCritical},
- {<<"par">>, IsParry},
- {<<"dmg">>, Damage}
- ]
- }
- ).
+ {
+ [
+ {<<"ord">>, encode_order(Order)},
+ {<<"pre">>, encode_precision(Precision)},
+ {<<"cri">>, IsCritical},
+ {<<"par">>, IsParry},
+ {<<"dmg">>, Damage}
+ ]
+ }.
diff --git a/src/struct/location.erl b/src/struct/location.erl
index 0d5367d..b8e2bf3 100644
--- a/src/struct/location.erl
+++ b/src/struct/location.erl
@@ -52,8 +52,20 @@ apply_direction (down, {X, Y}) ->
dist ({OX, OY}, {DX, DY}) ->
(abs(DY - OY) + abs(DX - OX)).
--spec encode (type()) -> list(non_neg_integer()).
-encode ({X, Y}) -> [X, Y].
+-spec encode (type()) -> {list(any())}.
+encode ({X, Y}) ->
+ {
+ [
+ {<<"x">>, X},
+ {<<"y">>, Y}
+ ]
+ }.
--spec decode (list(non_neg_integer())) -> type().
-decode ([X, Y]) when (is_integer(X) and is_integer(Y)) -> validate({X, Y}).
+-spec decode (map()) -> type().
+decode (Map) ->
+ X = maps:get(<<"x">>, Map),
+ Y = maps:get(<<"y">>, Map),
+
+ true = (is_integer(X) and is_integer(Y)),
+
+ validate({X, Y}).
diff --git a/src/struct/turn_result.erl b/src/struct/turn_result.erl
index c5cafcd..5f796ca 100644
--- a/src/struct/turn_result.erl
+++ b/src/struct/turn_result.erl
@@ -96,19 +96,16 @@ new_character_attacked (AttackerIX, DefenderIX, AttackSequence) ->
sequence = AttackSequence
}.
--spec encode (struct()) -> binary().
+-spec encode (struct()) -> {list(any())}.
encode (TurnResult) when is_record(TurnResult, switched_weapon) ->
CharacterInstanceIX = TurnResult#switched_weapon.character_instance_ix,
- jiffy:encode
- (
- {
- [
- {<<"t">>, <<"swp">>},
- {<<"ix">>, CharacterInstanceIX}
- ]
- }
- );
+ {
+ [
+ {<<"t">>, <<"swp">>},
+ {<<"ix">>, CharacterInstanceIX}
+ ]
+ };
encode (TurnResult) when is_record(TurnResult, moved) ->
CharacterInstanceIX = TurnResult#moved.character_instance_ix,
Path = TurnResult#moved.path,
@@ -117,17 +114,14 @@ encode (TurnResult) when is_record(TurnResult, moved) ->
EncodedPath = lists:map(fun direction:encode/1, Path),
EncodedNewLocation = location:encode(NewLocation),
- jiffy:encode
- (
- {
- [
- {<<"t">>, <<"mv">>},
- {<<"ix">>, CharacterInstanceIX},
- {<<"p">>, EncodedPath},
- {<<"nlc">>, EncodedNewLocation}
- ]
- }
- );
+ {
+ [
+ {<<"t">>, <<"mv">>},
+ {<<"ix">>, CharacterInstanceIX},
+ {<<"p">>, EncodedPath},
+ {<<"nlc">>, EncodedNewLocation}
+ ]
+ };
encode (TurnResult) when is_record(TurnResult, attacked) ->
AttackerIX = TurnResult#attacked.attacker_ix,
DefenderIX = TurnResult#attacked.defender_ix,
@@ -135,17 +129,14 @@ encode (TurnResult) when is_record(TurnResult, attacked) ->
EncodedSequence = lists:map(fun attack:encode/1, Sequence),
- jiffy:encode
- (
- {
- [
- {<<"t">>, <<"atk">>},
- {<<"aix">>, AttackerIX},
- {<<"dix">>, DefenderIX},
- {<<"seq">>, EncodedSequence}
- ]
- }
- );
+ {
+ [
+ {<<"t">>, <<"atk">>},
+ {<<"aix">>, AttackerIX},
+ {<<"dix">>, DefenderIX},
+ {<<"seq">>, EncodedSequence}
+ ]
+ };
encode (Other) ->
io:format("~n invalid encode param\"~p\"~n", [Other]),
true = Other.