| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/shared/struct/inventory/shr_glyph_board.erl.m4')
| -rw-r--r-- | src/shared/struct/inventory/shr_glyph_board.erl.m4 | 109 | 
1 files changed, 109 insertions, 0 deletions
diff --git a/src/shared/struct/inventory/shr_glyph_board.erl.m4 b/src/shared/struct/inventory/shr_glyph_board.erl.m4 new file mode 100644 index 0000000..7fe77b1 --- /dev/null +++ b/src/shared/struct/inventory/shr_glyph_board.erl.m4 @@ -0,0 +1,109 @@ +-module(shr_glyph_board). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-type id() :: binary(). + +-record +( +   glyph_board, +   { +      id :: id(), +      name :: binary(), +      omnimods :: shr_omnimods:type(), +      slots :: list(integer()) +   } +). + +-type type() :: #glyph_board{}. + +-export_type([type/0, id/0]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( +   [ +      from_id/1 +   ] +). + +-export +( +   [ +      get_id/1, +      get_name/1, +      get_omnimods/1, +      get_slots/1 +   ] +). + +-export +( +   [ +      none/0, +      get_omnimods_with_glyphs/2 +   ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec get_omnimods_with_glyphs_internals +   ( +      shr_omnimods:type(), +      list(shr_glyph:type()), +      list(integer()) +   ) +   -> ({'ok', shr_omnimods:type()} | 'error'). +get_omnimods_with_glyphs_internals (Omnimods, [], []) -> +   {ok, Omnimods}; +get_omnimods_with_glyphs_internals (_Omnimods, [], _) -> +   error; +get_omnimods_with_glyphs_internals (_Omnimods, _, []) -> +   error; +get_omnimods_with_glyphs_internals (Omnimods, [Glyph|NextGlyphs], [M|NextMs]) -> +   Multiplier = (M / 100), +   GlyphOmnimods = shr_glyph:get_omnimods(Glyph), +   ModGlyphOmnimods = shr_omnimods:apply_coefficient(Multiplier, GlyphOmnimods), +   NextOmnimods = shr_omnimods:merge(Omnimods, ModGlyphOmnimods), + +   get_omnimods_with_glyphs_internals(NextOmnimods, NextGlyphs, NextMs). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec get_id (type()) -> id(). +get_id (GlyphBoard) -> GlyphBoard#glyph_board.id. + +-spec get_name (type()) -> binary(). +get_name (GlyphBoard) -> GlyphBoard#glyph_board.name. + +-spec get_omnimods (type()) -> shr_omnimods:type(). +get_omnimods (GlyphBoard) -> GlyphBoard#glyph_board.omnimods. + +-spec get_slots (type()) -> list(non_neg_integer()). +get_slots (GlyphBoard) -> GlyphBoard#glyph_board.slots. + +-spec from_id (id()) -> type(). +m4_include(__MAKEFILE_DATA_DIR/glyph_board/global.m4.conf)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/glyph_board/basic.m4d)m4_dnl +from_id(_) -> +   none(). + +-spec none () -> type(). +none () -> from_id(<<"0">>). + +-spec get_omnimods_with_glyphs +   ( +      list(shr_glyph:type()), +      type() +   ) +   -> ({'ok', shr_omnimods:type()} | 'error'). +get_omnimods_with_glyphs (Glyphs, GlyphBoard) -> +   BoardOmnimods = GlyphBoard#glyph_board.omnimods, +   BoardSlots = GlyphBoard#glyph_board.slots, + +   get_omnimods_with_glyphs_internals(BoardOmnimods, Glyphs, BoardSlots).  | 


