From 388b039671eb678ab5c54b4af23870450d4c276e Mon Sep 17 00:00:00 2001 From: xolatile Date: Tue, 21 May 2024 11:14:17 -0400 Subject: [PATCH] Refactored Unit package a lot... --- game/unit/dwarf/{dwarf_base.png => base.png} | Bin game/unit/fairy/{fairy_base.png => base.png} | Bin game/unit/gnoll/{gnoll_base.png => base.png} | Bin game/unit/goblin/{goblin_base.png => base.png} | Bin game/unit/imp/{imp_base.png => base.png} | Bin game/unit/kobold/{kobold_base.png => base.png} | Bin source/unit.adb | 55 ++++++++--------- source/unit.ads | 79 ++++++++++++++----------- source/world.adb | 3 +- 9 files changed, 73 insertions(+), 64 deletions(-) rename game/unit/dwarf/{dwarf_base.png => base.png} (100%) rename game/unit/fairy/{fairy_base.png => base.png} (100%) rename game/unit/gnoll/{gnoll_base.png => base.png} (100%) rename game/unit/goblin/{goblin_base.png => base.png} (100%) rename game/unit/imp/{imp_base.png => base.png} (100%) rename game/unit/kobold/{kobold_base.png => base.png} (100%) diff --git a/game/unit/dwarf/dwarf_base.png b/game/unit/dwarf/base.png similarity index 100% rename from game/unit/dwarf/dwarf_base.png rename to game/unit/dwarf/base.png diff --git a/game/unit/fairy/fairy_base.png b/game/unit/fairy/base.png similarity index 100% rename from game/unit/fairy/fairy_base.png rename to game/unit/fairy/base.png diff --git a/game/unit/gnoll/gnoll_base.png b/game/unit/gnoll/base.png similarity index 100% rename from game/unit/gnoll/gnoll_base.png rename to game/unit/gnoll/base.png diff --git a/game/unit/goblin/goblin_base.png b/game/unit/goblin/base.png similarity index 100% rename from game/unit/goblin/goblin_base.png rename to game/unit/goblin/base.png diff --git a/game/unit/imp/imp_base.png b/game/unit/imp/base.png similarity index 100% rename from game/unit/imp/imp_base.png rename to game/unit/imp/base.png diff --git a/game/unit/kobold/kobold_base.png b/game/unit/kobold/base.png similarity index 100% rename from game/unit/kobold/kobold_base.png rename to game/unit/kobold/base.png diff --git a/source/unit.adb b/source/unit.adb index 7612b4e..4e42b11 100644 --- a/source/unit.adb +++ b/source/unit.adb @@ -11,9 +11,11 @@ package body unit is view_width : constant integer := 48; view_height : constant integer := 64; - sprite : array (enumeration) of core.sprite; - icon : array (enumeration) of core.sprite; - view : array (enumeration) of core.sprite; + base : array (faction.fairy .. faction.imp) of core.sprite; + + --~sprite : array (enumeration) of core.sprite; + --~icon : array (enumeration) of core.sprite; + --~view : array (enumeration) of core.sprite; ------------------------------------------------------------------------------------------ @@ -21,49 +23,42 @@ package body unit is begin core.echo (core.comment, "Configuring unit components..."); -- - for index in enumeration loop - declare folder : constant string := core.lowercase (faction.enumeration'image (trait (index).kind)); - file : constant string := core.lowercase (enumeration'image (index)); - begin - sprite (index) := core.import_sprite (core.folder & "/game/unit/" & folder & "/" & file & ".png", 4, 6); - --~icon (index) := core.import_sprite (core.folder & "/icon/unit/" & folder & "/" & file & ".png", 1, 1); - --~view (index) := core.import_sprite (core.folder & "/view/unit/" & folder & "/" & file & ".png", 1, 1); - end; + for index in faction.fairy .. faction.imp loop + base (index) := core.import_sprite (core.folder & "/game/unit/" & core.lowercase (faction.enumeration'image (index)) & "/base.png", 4, 6); end loop; end configure; ------------------------------------------------------------------------------------------ - procedure draw (index : in enumeration; state : in core.animation; x, y : in integer) is - begin - core.draw (sprite (index), x, y, state => state); - end draw; + --~procedure draw (index : in enumeration; state : in core.animation; x, y : in integer) is + --~begin + --~core.draw (sprite (index), x, y, state => state); + --~end draw; ------------------------------------------------------------------------------------------ - procedure draw_icon (index : in enumeration; x, y : in integer) is - begin - ui.draw_overicon (icon (index), trait (index).text, x, y); - end draw_icon; + --~procedure draw_icon (index : in enumeration; x, y : in integer) is + --~begin + --~ui.draw_overicon (icon (index), trait (index).text, x, y); + --~end draw_icon; ------------------------------------------------------------------------------------------ - procedure draw_view (index : in enumeration; x, y : in integer) is - offset : constant integer := 4; - begin - core.draw (view (index), x + offset, y + offset); - ui.draw_icon_menu (x, y, view_width + 2 * offset, view_height + 2 * offset); - end draw_view; + --~procedure draw_view (index : in enumeration; x, y : in integer) is + --~offset : constant integer := 4; + --~begin + --~core.draw (view (index), x + offset, y + offset); + --~ui.draw_icon_menu (x, y, view_width + 2 * offset, view_height + 2 * offset); + --~end draw_view; ------------------------------------------------------------------------------------------ - procedure draw_full (index : in natural; x, y : in integer) is - limit : constant value_limit := value_limit (index); + procedure draw_full (index : in enumeration; state : in core.animation; x, y : in integer) is begin - draw (values (limit).kind, values (limit).state, x, y); + core.draw (base (trait (index).kind), x, y, state => state); -- - for equipment_index in equipment.slot loop - equipment.draw (values (limit).equipments (equipment_index), values (limit).state, x, y); + for slot in equipment.slot loop + equipment.draw (trait (index).equipments (slot), state, x, y); end loop; end draw_full; diff --git a/source/unit.ads b/source/unit.ads index 254a9f2..3d671a2 100644 --- a/source/unit.ads +++ b/source/unit.ads @@ -9,61 +9,74 @@ package unit is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type enumeration is ( - dwarf_base, fairy_base, gnoll_base, goblin_base, imp_base, kobold_base + dwarf_berserker, dwarf_elite_berserker, dwarf_guard, dwarf_elite_guard ); ------------------------------------------------------------------------------------------ type information is record - name : core.short_string; - kind : faction.enumeration; - attributes : attribute.points; - evoke : effect.value; - text : core.long_string; - end record; - - type value is record name : core.short_string := "-- "; - kind : enumeration := imp_base; - state : core.animation := core.idle; + kind : faction.enumeration := faction.neutral; attributes : attribute.points := (others => 0); + daily_fee : natural := 0; equipments : equipment.equip_array := (others => equipment.none); end record; - type value_limit is range 0 .. 90; - type value_array is array (value_limit) of value; + --~bone_chestplate, bronze_chestplate, chainmail_chestplate, crystal_chestplate, golden_chestplate, iron_chestplate, + --~leather_chestplate, mithril_chestplate, steel_chestplate, bone_greaves, bronze_greaves, chainmail_greaves, + --~crystal_greaves, golden_greaves, iron_greaves, leather_greaves, mithril_greaves, steel_greaves, + --~black_tunic, blue_tunic, cyan_tunic, green_tunic, grey_tunic, lime_tunic, + --~orange_tunic, pink_tunic, purple_tunic, red_tunic, white_tunic, yellow_tunic, + --~bone_gauntlets, bronze_gauntlets, chainmail_gauntlets, crystal_gauntlets, golden_gauntlets, iron_gauntlets, + --~leather_gauntlets, mithril_gauntlets, steel_gauntlets, bone_helmet, bronze_helmet, chainmail_helmet, + --~crystal_helmet, golden_helmet, iron_helmet, leather_helmet, mithril_helmet, steel_helmet, + --~bone_axe, bone_battleaxe, bone_bow, bone_mace, bone_spear, bone_sword, + --~bronze_axe, bronze_greatsword, bronze_mace, bronze_spear, bronze_sword, club, + --~crystal_bow, crystal_greatsword, crystal_mace, crystal_spear, crystal_sword, golden_axe, + --~golden_battleaxe, golden_bow, golden_greatsword, golden_sword, iron_axe, iron_bow, + --~iron_mace, iron_spear, iron_sword, jade_axe, jade_battleaxe, jade_greatsword, + --~jade_mace, jade_spear, jade_sword, maul, mithril_axe, mithril_battleaxe, + --~mithril_bow, mithril_mace, mithril_spear, sledge_hammer, spiked_club, spiked_staff, + --~staff, steel_battleaxe, steel_bow, steel_greatsword, steel_mace, steel_sword, + --~wooden_bow, wooden_greatsword, wooden_sword, golden_necklace, bronze_shield, crystal_shield, + --~golden_shield, iron_shield, mithril_shield, steel_shield, wooden_shield, wooden_armour, + --~fur_armour, fur_greaves, fur_gauntlets, red_hood, white_hood, wooden_helmet, + --~human_helmet, human_armour, elven_helmet, elven_armour, orcish_helmet, orcish_armour, + --~black_robe, cyan_robe, lime_dress, magenta_dress, orange_robe, pink_dress, + --~red_robe, sexy_dress, white_robe, lime_robe, orange_hood, fur_helmet, + --~black_hood, cyan_hood, lime_hood + + --~full_body, head, chest, hands, feet, neck, + --~main_hand, off_hand ------------------------------------------------------------------------------------------ count : constant natural := enumeration'pos (enumeration'last) + 1; trait : constant array (enumeration) of information := ( - ("Dwarf ", faction.dwarf, (others => 1), effect.none, " "), - ("Fairy ", faction.fairy, (others => 1), effect.none, " "), - ("Gnoll ", faction.gnoll, (others => 1), effect.none, " "), - ("Goblin ", faction.goblin, (others => 1), effect.none, " "), - ("Imp ", faction.imp, (others => 1), effect.none, " "), - ("Kobold ", faction.kobold, (others => 1), effect.none, " ") - ); - - default_value : value; - - values : value_array := ( - ("Dwarf Berserker ", dwarf_base, core.idle, (3, 2, 1, 3, 2, 2), (equipment.main_hand => equipment.mithril_axe, others => equipment.none)), - ("Dwarf Berserker ", dwarf_base, core.idle, (3, 2, 1, 3, 2, 2), (equipment.main_hand => equipment.mithril_battleaxe, others => equipment.none)), - ("Dwarf Berserker ", dwarf_base, core.idle, (3, 2, 1, 3, 2, 2), (equipment.main_hand => equipment.mithril_mace, others => equipment.none)), - -- - others => default_value + ("Dwarf Berserker ", faction.dwarf, (3, 2, 1, 3, 2, 2), 1, ( + equipment.blue_tunic, equipment.leather_helmet, equipment.leather_chestplate, equipment.none, + equipment.leather_greaves, equipment.none, equipment.iron_axe, equipment.none)), + ("Dwarf Elite Berserker ", faction.dwarf, (3, 2, 1, 3, 2, 2), 3, ( + equipment.cyan_tunic, equipment.mithril_helmet, equipment.mithril_chestplate, equipment.leather_gauntlets, + equipment.leather_greaves, equipment.none, equipment.mithril_axe, equipment.none)), + ("Dwarf Guard ", faction.dwarf, (3, 2, 1, 3, 2, 2), 4, ( + equipment.cyan_tunic, equipment.steel_helmet, equipment.steel_chestplate, equipment.leather_gauntlets, + equipment.leather_greaves, equipment.none, equipment.steel_battleaxe, equipment.steel_shield)), + ("Dwarf Elite Guard ", faction.dwarf, (3, 2, 1, 3, 2, 2), 6, ( + equipment.cyan_tunic, equipment.steel_helmet, equipment.mithril_chestplate, equipment.steel_gauntlets, + equipment.steel_greaves, equipment.none, equipment.mithril_axe, equipment.steel_shield)) ); ------------------------------------------------------------------------------------------ procedure configure; - procedure draw (index : in enumeration; state : in core.animation; x, y : in integer); - procedure draw_icon (index : in enumeration; x, y : in integer); - procedure draw_view (index : in enumeration; x, y : in integer); - procedure draw_full (index : in natural; x, y : in integer); + --~procedure draw (index : in enumeration; state : in core.animation; x, y : in integer); + --~procedure draw_icon (index : in enumeration; x, y : in integer); + --~procedure draw_view (index : in enumeration; x, y : in integer); + + procedure draw_full (index : in enumeration; state : in core.animation; x, y : in integer); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/source/world.adb b/source/world.adb index e4f57c7..5a964fc 100644 --- a/source/world.adb +++ b/source/world.adb @@ -309,7 +309,8 @@ package body world is -- for index in 1 .. unit_limit loop if map.views (map.units (index).x, map.units (index).y) then - unit.draw_full (map.units (index).index, + unit.draw_full (unit.enumeration'val (map.units (index).index), + core.animation'val (map.units (index).state), offset.x + (map.units (index).x - core.camera.x) * core.base * core.zoom, offset.y + (map.units (index).y - core.camera.y) * core.base * core.zoom); end if;