xhads/source/material.adb

102 lines
3.9 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, ui;
package body material is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
procedure configure is
procedure define (index : in enumeration; name : in string; cost : in natural) is
begin
description (index).name := core.unbound (name);
description (index).cost := cost;
end define;
--
time : float := 0.0;
begin
time := core.time;
--
core.echo (core.comment, "Configuring" & count'image & " material components...");
--
description := new description_array (enumeration'range);
icon := new icon_array (enumeration'range);
--
define (sulphur, "Sulphur", 11);
define (mercury, "Mercury", 13);
define (mint, "Mint", 3);
define (cinnamon, "Cinnamon", 5);
define (apple, "Apple", 2);
define (peach, "Peach", 2);
define (pear, "Pear", 2);
define (banana, "Banana", 3);
define (orange, "Orange", 3);
define (plum, "Plum", 3);
define (cherry, "Cherry", 3);
define (lemon, "Lemon", 2);
define (potato, "Potato", 1);
define (wheat, "Wheat", 1);
define (carrot, "Carrot", 2);
define (cucumber, "Cucumber", 3);
define (onion, "Onion", 2);
define (garlic, "Garlic", 2);
define (eggplant, "Eggplant", 3);
define (tomato, "Tomato", 2);
define (meat, "Meat", 3);
define (fish_meat, "Fish Meat", 2);
define (skull, "Skull", 1);
define (animal_skull, "Animal Skull", 1);
define (bone, "Bone", 1);
define (rib_cage, "Rib Cage", 1);
define (animal_skin, "Animal Skin", 5);
define (animal_fur, "Animal Fur", 7);
--
for index in enumeration loop
icon (index) := core.import_sprite (core.folder & "/icon/material/" & core.lowercase (enumeration'image (index)) & ".png", 1, 1);
end loop;
--
core.echo (core.success, "Successfully configured resource information in" & natural'image (natural (1_000_000.0 * (core.time - time))) & " microseconds.");
end configure;
------------------------------------------------------------------------------------------
procedure draw_points (data : in points := (others => (0, 0));
x : in integer := 0;
y : in integer := 0) is
move_x : integer := x;
begin
for index in enumeration loop
if data (index).value > 0 then
ui.draw_icon (icon (index), core.bound (description (index).name), move_x, y);
ui.draw_text_box (move_x, y + core.icon, core.icon, core.icon);
ui.write (data (index).value'image, move_x + 4, y + core.icon + 8, (255, 255, 255, 255), 15, true);
--
move_x := move_x + core.icon;
end if;
end loop;
end draw_points;
------------------------------------------------------------------------------------------
procedure save_points (here : in core.io.file_type; data : in points) is
begin
for index in enumeration loop
core.save_point (here, data (index));
end loop;
end save_points;
------------------------------------------------------------------------------------------
procedure load_points (here : in core.io.file_type; data : out points) is
begin
for index in enumeration loop
core.load_point (here, data (index));
end loop;
end load_points;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end material;