summaryrefslogtreecommitdiff
blob: 3473265ec6bdb3974a0225d2584cc1d56392cee8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
-module(bm_add_weapon).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-export([generate/1]).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec encode_range_type (sh_weapon:range_type()) -> binary().
encode_range_type (melee) -> <<"m">>;
encode_range_type (ranged) -> <<"r">>.

-spec encode_range_modifier (sh_weapon:range_modifier()) -> binary().
encode_range_modifier (long) -> <<"l">>;
encode_range_modifier (short) -> <<"s">>.

-spec encode_damage_type (sh_weapon:damage_type()) -> binary().
encode_damage_type (slash) -> <<"s">>;
encode_damage_type (pierce) -> <<"p">>;
encode_damage_type (blunt) -> <<"b">>.

-spec encode_damage_modifier (sh_weapon:damage_modifier()) -> binary().
encode_damage_modifier (heavy) -> <<"h">>;
encode_damage_modifier (light) -> <<"l">>.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec generate (sh_weapon:type()) -> {list(any())}.
generate (Weapon) ->
   {
      [
         {<<"msg">>, <<"add_weapon">>},
         {<<"id">>, sh_weapon:get_id(Weapon)},
         {<<"nam">>, sh_weapon:get_name(Weapon)},
         {<<"rt">>, encode_range_type(sh_weapon:get_range_type(Weapon))},
         {
            <<"rm">>,
            encode_range_modifier(sh_weapon:get_range_modifier(Weapon))
         },
         {<<"dt">>, encode_damage_type(sh_weapon:get_damage_type(Weapon))},
         {
            <<"dm">>,
            encode_damage_modifier(sh_weapon:get_damage_modifier(Weapon))
         },
         {<<"cf">>, sh_weapon:get_coefficient(Weapon)}
      ]
   }.