2024-04-25 00:27:13 -04:00
|
|
|
-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
|
|
|
|
--
|
|
|
|
-- GNU General Public Licence (version 3 or later)
|
|
|
|
|
2024-05-08 15:43:44 -04:00
|
|
|
with core, ui;
|
2024-02-15 21:03:09 -05:00
|
|
|
|
|
|
|
package body skill is
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2024-02-16 06:24:49 -05:00
|
|
|
procedure configure is
|
2024-06-01 11:46:17 -04:00
|
|
|
procedure define (index : in enumeration; minimum, maximum : in integer; name, text : in string) is
|
2024-05-31 07:14:00 -04:00
|
|
|
begin
|
2024-06-01 11:27:59 -04:00
|
|
|
description (index).base := (minimum, maximum);
|
|
|
|
description (index).name := core.unbound (name);
|
|
|
|
description (index).text := core.unbound (text);
|
2024-06-01 11:46:17 -04:00
|
|
|
end define;
|
2024-05-31 07:14:00 -04:00
|
|
|
--
|
2024-05-04 07:12:00 -04:00
|
|
|
structure : ui.structure;
|
2024-02-16 06:24:49 -05:00
|
|
|
begin
|
2024-06-01 15:36:15 -04:00
|
|
|
core.echo (core.comment, "Configuring skill components...");
|
|
|
|
--
|
2024-06-01 11:46:17 -04:00
|
|
|
define (alchemy, 0, 24, "Alchemy", "Alchemy skill determines effectiveness of your vials and potions.");
|
|
|
|
define (archery, 0, 24, "Archery", "Archery skill determines effectiveness and range or your archers.");
|
|
|
|
define (architecture, 0, 24, "Architecture", "Architecture decreases time spent on building constructions.");
|
|
|
|
define (athletics, 0, 24, "Athletics", "Athletics increases movement speed of all your units, since they train.");
|
|
|
|
define (diplomacy, 0, 24, "Diplomacy", "Diplomacy helps you to avoid starting a battle you can't win.");
|
|
|
|
define (estates, 0, 24, "Estates", "Estates makes you the ultimate crypto-bro, establishing a blockchain.");
|
|
|
|
define (exploration, 0, 24, "Exploration", "Exploration is quite self-explanatory by its' name, seriously.");
|
|
|
|
define (leadership, 0, 24, "Leadership", "Leadership is the default skill for any true chad, like God intended.");
|
|
|
|
define (logistics, 0, 24, "Logistics", "Logistics is a nightmare in real life, but this is only a game.");
|
|
|
|
define (medicine, 0, 24, "Medicine", "Medicine skill makes you swallow pills like a kid in a drugstore.");
|
|
|
|
define (mercantile, 0, 24, "Mercantile", "Mercantile is the skill of any true-born nosy person, otherwise useless.");
|
|
|
|
define (mysticism, 0, 24, "Mysticism", "Mysticism allows you to have 60 cats, drink wine and talk weird.");
|
|
|
|
define (necromancy, 0, 24, "Necromancy", "Necromancy lets you not to waste the bones after every battle.");
|
|
|
|
define (resistance, 0, 24, "Resistence", "Resistence skill increases defense points of all your units slightly.");
|
|
|
|
define (skirmish, 0, 24, "Skirmish", "Skirmish makes your units go berserk when they have little health left.");
|
|
|
|
define (sorcery, 0, 24, "Sorcery", "Sorcery skill is appropriately named useless skill to have in real life.");
|
|
|
|
define (tactics, 0, 24, "Tactics", "Tactics is the opposite of skirmish, master it and lose in every battle.");
|
|
|
|
define (thaumaturgy, 0, 24, "Thaumaturgy", "Thaumaturgy lets you do nothing, and hope that the best will happen.");
|
2024-05-31 07:14:00 -04:00
|
|
|
--
|
2024-05-04 07:12:00 -04:00
|
|
|
structure.title := "Skill Menu ";
|
|
|
|
structure.toggle := core.signal_s;
|
|
|
|
structure.show := false;
|
2024-05-04 09:29:48 -04:00
|
|
|
structure.center := true;
|
2024-05-04 07:12:00 -04:00
|
|
|
structure.resize := true;
|
|
|
|
structure.x := 80;
|
|
|
|
structure.y := (core.window_height - 320) / 2;
|
2024-05-07 09:06:08 -04:00
|
|
|
structure.gui_n := count + 1;
|
2024-05-04 07:12:00 -04:00
|
|
|
--
|
|
|
|
ui.add_structure (structure);
|
2024-05-01 09:15:38 -04:00
|
|
|
--
|
2024-04-27 10:01:54 -04:00
|
|
|
for index in enumeration loop
|
2024-05-19 02:59:45 -04:00
|
|
|
icon (index) := core.import_sprite (core.folder & "/icon/skill/" & core.lowercase (enumeration'image (index)) & ".png", 1, 1);
|
2024-05-03 10:13:49 -04:00
|
|
|
--
|
2024-05-07 09:06:08 -04:00
|
|
|
if enumeration'pos (index) = 9 then
|
|
|
|
ui.add_structure_orient;
|
|
|
|
end if;
|
|
|
|
--
|
2024-06-01 11:27:59 -04:00
|
|
|
ui.add_structure_button (icon (index), description (index).name, description (index).text);
|
2024-05-03 08:16:50 -04:00
|
|
|
end loop;
|
2024-02-16 06:24:49 -05:00
|
|
|
end configure;
|
|
|
|
|
2024-05-11 00:49:15 -04:00
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
2024-05-23 04:44:43 -04:00
|
|
|
procedure draw_points (data : in points := (others => (0, 0));
|
|
|
|
x : in integer := 0;
|
|
|
|
y : in integer := 0) is
|
2024-05-17 21:00:50 -04:00
|
|
|
move_x : integer := x;
|
|
|
|
move_y : integer := y;
|
2024-05-11 00:49:15 -04:00
|
|
|
begin
|
|
|
|
for index in enumeration loop
|
2024-05-17 21:00:50 -04:00
|
|
|
if (enumeration'pos (index) + 1) mod (count / 2 + 1) = 0 then
|
|
|
|
move_x := x + 2 * core.icon + 120;
|
|
|
|
move_y := y;
|
|
|
|
end if;
|
|
|
|
--
|
2024-06-01 11:27:59 -04:00
|
|
|
ui.draw_icon (icon (index), core.bound (description (index).text), move_x, move_y);
|
2024-05-17 21:00:50 -04:00
|
|
|
ui.draw_text_box (move_x + core.icon, move_y, core.icon, core.icon);
|
2024-05-23 04:44:43 -04:00
|
|
|
ui.write (data (index).value'image, move_x + core.icon + 4, move_y + 8, (255, 255, 255, 255), 15, true);
|
2024-05-11 00:49:15 -04:00
|
|
|
--
|
2024-06-01 11:27:59 -04:00
|
|
|
ui.write (core.bound (description (index).name), move_x + 2 * core.icon + 4, move_y + 8, (255, 255, 255, 255), 15, true);
|
2024-05-11 00:49:15 -04:00
|
|
|
--
|
2024-05-17 21:00:50 -04:00
|
|
|
move_y := move_y + core.icon;
|
2024-05-11 00:49:15 -04:00
|
|
|
end loop;
|
|
|
|
end draw_points;
|
|
|
|
|
2024-05-25 03:19:58 -04:00
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
2024-05-25 03:53:53 -04:00
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
2024-02-15 21:03:09 -05:00
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
end skill;
|