xhads/source/attribute.adb

83 lines
3.4 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, ui;
package body attribute is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
procedure configure is
procedure define (index : in enumeration; minimum, maximum : in integer; name, text : in string) is
begin
description (index).base := (minimum, maximum);
description (index).name := core.unbound (name);
description (index).text := core.unbound (text);
end define;
--
structure : ui.structure;
begin
define (offense, 1, 12, "Offense", "Offense attribute determines your damage modifier when attacking.");
define (defense, 1, 12, "Defense", "D-FENS attribute determines how much damage your reflect and receive.");
define (wisdom, 1, 12, "Wisdom", "Wisdom attribute determines how much mana your chad has.");
define (stamina, 1, 12, "Stamina", "Stamina attribute determines how fast you recover from being wounded.");
define (speed, 1, 12, "Speed", "Speed attribute determines how far you can walk per turn.");
define (reach, 1, 12, "Reach", "Reach attribute determines your range modifier when shooting or casting.");
--
core.echo (core.comment, "Configuring attribute components...");
--
structure.title := "Attribute Menu ";
structure.toggle := core.signal_a;
structure.show := false;
structure.center := false;
structure.resize := true;
structure.x := 60;
structure.y := 100;
structure.gui_n := count;
--
ui.add_structure (data => structure);
--
for index in enumeration loop
icon (index) := core.import_sprite (core.folder & "/icon/attribute/" & core.lowercase (enumeration'image (index)) & ".png", 1, 1);
--
ui.add_structure_button (icon (index), description (index).name, description (index).text);
end loop;
end configure;
------------------------------------------------------------------------------------------
procedure draw_points (data : in points; x, y : in integer) is
move_x : integer := x;
begin
for index in enumeration loop
ui.draw_icon (icon (index), core.bound (description (index).text), 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 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 attribute;