summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
commitee9c2ac044cc77b80f30420c8f0788cad4281084 (patch)
tree6ce9c45b6c0f0c556839b6f462f84eab06e26594 /src/battlemap/reply/add_char.erl
parent97f7511e61cebae3676a83aa9c0dc2efb15d8d8c (diff)
Figuring out how to organize the src folder(s)...
Diffstat (limited to 'src/battlemap/reply/add_char.erl')
-rw-r--r--src/battlemap/reply/add_char.erl78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/battlemap/reply/add_char.erl b/src/battlemap/reply/add_char.erl
new file mode 100644
index 0000000..86b1e9c
--- /dev/null
+++ b/src/battlemap/reply/add_char.erl
@@ -0,0 +1,78 @@
+-module(add_char).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export([generate/3]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec attributes_as_json
+ (
+ attributes:type()
+ ) ->
+ {list({binary(), non_neg_integer()})}.
+attributes_as_json (Attributes) ->
+ {
+ [
+ {<<"con">>, attributes:get_constitution(Attributes)},
+ {<<"dex">>, attributes:get_dexterity(Attributes)},
+ {<<"int">>, attributes:get_intelligence(Attributes)},
+ {<<"min">>, attributes:get_mind(Attributes)},
+ {<<"spe">>, attributes:get_speed(Attributes)},
+ {<<"str">>, attributes:get_strength(Attributes)}
+ ]
+ }.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec generate
+ (
+ non_neg_integer(),
+ character:type(),
+ player:id()
+ )
+ -> {list(any())}.
+generate (IX, Character, PlayerID) ->
+ IsAlive = character:get_is_alive(Character),
+ Attributes = character:get_attributes(Character),
+ {ActiveWeapon, SecondaryWeapon} = character:get_weapon_ids(Character),
+ OwnerID = character:get_owner_id(Character),
+ Location =
+ case IsAlive of
+ true -> character:get_location(Character);
+ _ -> location:get_nowhere()
+ end,
+
+ {
+ [
+ {<<"msg">>, <<"add_char">>},
+ {<<"ix">>, IX},
+ {<<"nam">>, character:get_name(Character)},
+ {<<"ico">>, character:get_icon(Character)},
+ {<<"prt">>, character:get_portrait(Character)},
+ {
+ <<"hea">>,
+ character:get_current_health(Character)
+ },
+ {<<"lc">>, location:encode(Location)},
+ {<<"pla">>, OwnerID},
+ {
+ <<"ena">>,
+ (
+ character:get_is_active(Character)
+ and
+ (OwnerID == PlayerID)
+ )
+ },
+ {<<"att">>, attributes_as_json(Attributes)},
+ {<<"awp">>, ActiveWeapon},
+ {<<"swp">>, SecondaryWeapon}
+ ]
+ }.