summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-02-15 18:18:54 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-02-15 18:18:54 +0100 |
commit | 85b1e04a22e7564b702aa27c5f6467ad4d5f4416 (patch) | |
tree | d0a408eb97412feccdbcfe20b951669b6f6e6588 /src/shared/struct/inventory/shr_glyph_board.erl.m4 | |
parent | 9b91ff37a1e39f48631b5bee338c31318d1e2336 (diff) |
Re-organizing shr_ structs.
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). |