From 93a8898b564fa4599dc525913f58451d95a5d01b Mon Sep 17 00:00:00 2001 From: xolatile Date: Fri, 26 Apr 2024 15:49:49 -0400 Subject: [PATCH] Experimental work on code structure in Items... --- source/item.ads | 36 ++++++++++++++++++++++-------------- source/ray.ads | 2 +- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/source/item.ads b/source/item.ads index bdce790..935eb9a 100644 --- a/source/item.ads +++ b/source/item.ads @@ -2,31 +2,30 @@ -- -- GNU General Public Licence (version 3 or later) -with core, effect; +with core, effect, attribute, skill; package item is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type slot is ( - main_hand, off_hand, head, chest, neck, full_body, - finger, feet, hands, bag + with_body, full_body, head, chest, hands, feet, + neck, main_hand, off_hand, bag, cloak, additional ); type codex is ( - a, b + iron_chestplate, iron_greaves, grey_tunic, iron_gauntlets, iron_helmet, iron_sword, + golden_necklace, iron_round_shield, ginger_long_beard, ginger_short_hair, head_runic_tattoo ); ------------------------------------------------------------------------------------------ - subtype level_limit is natural range 0 .. 3; - - type information is - record - name : core.short_string; - kind : slot; - level : level_limit; - evoke : effect.codex; + type information is record + name : core.short_string; + kind : slot; + attributes : attribute.points; + bonus_skill : skill.codex; + evoke : effect.codex; end record; ------------------------------------------------------------------------------------------ @@ -34,8 +33,17 @@ package item is count : constant natural := codex'pos (codex'last) + 1; trait : constant array (codex) of information := ( - ("A ", head, 0, effect.none), - ("B ", full_body, 0, effect.none) + ("Iron Chestplate ", chest, (0, 3, 0, 0, 0, 0), skill.leadership, effect.none), + ("Iron Greaves ", feet, (0, 1, 0, 0, 0, 0), skill.logistics, effect.none), + ("Grey Tunic ", full_body, (0, 1, 0, 1, 0, 0), skill.exploration, effect.none), + ("Iron Gauntlets ", hands, (0, 1, 0, 0, 0, 0), skill.logistics, effect.none), + ("Iron Helmet ", head, (0, 1, 0, 0, 0, 0), skill.leadership, effect.none), + ("Iron Sword ", main_hand, (1, 0, 0, 0, 1, 2), skill.tactics, effect.none), + ("Golden Necklace ", neck, (0, 0, 0, 0, 0, 0), skill.estates, effect.none), + ("Iron Round Shield ", off_hand, (0, 2, 0, 0, 0, 1), skill.tactics, effect.none), + ("Ginger Long Beard ", with_body, (0, 0, 0, 0, 0, 0), skill.mercantile, effect.none), + ("Ginger Short Hair ", with_body, (0, 0, 0, 0, 0, 0), skill.mercantile, effect.none), + ("Head Runic Tattoo ", with_body, (0, 0, 1, 0, 0, 0), skill.mysticism, effect.none) ); ------------------------------------------------------------------------------------------ diff --git a/source/ray.ads b/source/ray.ads index 5f85073..d6d4386 100644 --- a/source/ray.ads +++ b/source/ray.ads @@ -11,7 +11,7 @@ package ray is type pointer is access all system.address; - type colour_range is range 0 .. 2 ** 8 - 1; + type colour_range is range 0 .. 2 ** 8 - 1; type logical is new boolean; for logical'size use 32;