Refactored Unit package...

This commit is contained in:
Ognjen Milan Robovic 2024-06-03 13:49:22 -04:00
parent ea8e8e7b90
commit eab5faa357
4 changed files with 19 additions and 71 deletions

View File

@ -241,7 +241,11 @@ begin
end; end;
end loop; end loop;
unit.configure; core.echo (core.comment, "Configuring" & unit.count'image & " unit components...");
--
for index in faction.fairy .. faction.imp loop
unit.base (index) := core.import_sprite (core.folder & "/game/unit/" & core.lowercase (faction.enumeration'image (index)) & "/base.png", 4, 6);
end loop;
core.echo (core.comment, "Configuring" & deity.count'image & " deity components..."); core.echo (core.comment, "Configuring" & deity.count'image & " deity components...");
-- --

View File

@ -1,58 +0,0 @@
-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, ui, effect, attribute, faction;
package body unit is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
view_width : constant integer := 48;
view_height : constant integer := 64;
base : array (faction.fairy .. faction.imp) of core.sprite;
--~icon : array (enumeration) of core.sprite;
--~view : array (enumeration) of core.sprite;
------------------------------------------------------------------------------------------
procedure configure is
begin
core.echo (core.comment, "Configuring unit components...");
--
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 (base (description (index).kind), x, y, state => state);
--
for slot in equipment.slot loop
core.draw (equipment.sprite (description (index).equipments (slot)), x, y, state => state);
end loop;
end draw;
------------------------------------------------------------------------------------------
--~procedure draw_icon (index : in enumeration; x, y : in integer) is
--~begin
--~ui.draw_overicon (icon (index), description (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;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end unit;

View File

@ -68,14 +68,9 @@ package unit is
equipment.steel_greaves, equipment.none, equipment.mithril_axe, equipment.steel_shield)) equipment.steel_greaves, equipment.none, equipment.mithril_axe, equipment.steel_shield))
); );
------------------------------------------------------------------------------------------ base : array (faction.fairy .. faction.imp) of core.sprite;
--~icon : array (faction.fairy .. faction.imp) of core.sprite;
procedure configure; --~view : array (faction.fairy .. faction.imp) of core.sprite;
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);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

View File

@ -383,10 +383,17 @@ package body world is
if map.views (map.units (index).x, map.units (index).y) if map.views (map.units (index).x, map.units (index).y)
and map.units (index).x > view_from.x and map.units (index).x < view_from.x + view_to.x and map.units (index).x > view_from.x and map.units (index).x < view_from.x + view_to.x
and map.units (index).y > view_from.y and map.units (index).y < view_from.y + view_to.y then and map.units (index).y > view_from.y and map.units (index).y < view_from.y + view_to.y then
unit.draw (unit.enumeration'val (map.units (index).index), core.draw (data => unit.base (unit.description (unit.enumeration'val (map.units (index).index)).kind),
core.animation'val (map.units (index).state), x => offset.x + (map.units (index).x - core.camera.x) * core.base * core.zoom,
offset.x + (map.units (index).x - core.camera.x) * core.base * core.zoom, y => offset.y + (map.units (index).y - core.camera.y) * core.base * core.zoom,
offset.y + (map.units (index).y - core.camera.y) * core.base * core.zoom); state => core.animation'val (map.units (index).state));
--
for slot in equipment.slot loop
core.draw (data => equipment.sprite (unit.description (unit.enumeration'val (map.units (index).index)).equipments (slot)),
x => offset.x + (map.units (index).x - core.camera.x) * core.base * core.zoom,
y => offset.y + (map.units (index).y - core.camera.y) * core.base * core.zoom,
state => core.animation'val (map.units (index).state));
end loop;
-- --
core.increment (drawn_units); core.increment (drawn_units);
end if; end if;