Adding points in most logical places...

This commit is contained in:
Ognjen Milan Robovic 2024-05-23 03:34:45 -04:00
parent f65c8c252f
commit 50eced984c
9 changed files with 41 additions and 31 deletions

View File

@ -39,7 +39,7 @@ package body attribute is
------------------------------------------------------------------------------------------
procedure draw_points (data : in points := (others => 0);
procedure draw_points (data : in points := (others => (0, 0));
x : in integer := 0;
y : in integer := 0) is
move_x : integer := x;
@ -47,7 +47,7 @@ package body attribute is
for index in enumeration loop
ui.draw_icon (icon (index), trait (index).text, move_x, y);
ui.draw_text_box (move_x, y + core.icon, core.icon, core.icon);
ui.write (data (index)'image, move_x + 4, y + core.icon + 8, (255, 255, 255, 255), 15, true);
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;

View File

@ -16,30 +16,33 @@ package attribute is
type information is record
name : core.short_string;
base : natural;
base : core.point;
text : core.long_string;
end record;
type points is array (enumeration) of natural;
type points is array (enumeration) of core.point;
type bonus is array (enumeration) of natural;
default : points := (others => (1, 12));
------------------------------------------------------------------------------------------
count : constant natural := enumeration'pos (enumeration'last) + 1;
trait : constant array (enumeration) of information := (
("Offense ", 0, "Offense attribute determines your damage modifier when attacking. "),
("Defense ", 0, "D-FENS attribute determines how much damage your reflect and receive. "),
("Wisdom ", 0, "Wisdom attribute determines how much mana your chad has. "),
("Stamina ", 0, "Stamina attribute determines how fast you recover from being wounded. "),
("Speed ", 0, "Speed attribute determines how far you can walk per turn. "),
("Reach ", 0, "Reach attribute determines your range modifier when shooting or casting.")
offense => ("Offense ", (1, 12), "Offense attribute determines your damage modifier when attacking. "),
defense => ("Defense ", (1, 12), "D-FENS attribute determines how much damage your reflect and receive. "),
wisdom => ("Wisdom ", (1, 12), "Wisdom attribute determines how much mana your chad has. "),
stamina => ("Stamina ", (1, 12), "Stamina attribute determines how fast you recover from being wounded. "),
speed => ("Speed ", (1, 12), "Speed attribute determines how far you can walk per turn. "),
reach => ("Reach ", (1, 12), "Reach attribute determines your range modifier when shooting or casting.")
);
------------------------------------------------------------------------------------------
procedure configure;
procedure draw_points (data : in points := (others => 0);
procedure draw_points (data : in points := (others => (0, 0));
x : in integer := 0;
y : in integer := 0);

View File

@ -17,7 +17,7 @@ package construction is
type information is record
name : core.short_string;
kind : faction.enumeration;
price : resource.prices;
price : resource.price;
frames : integer;
evoke : effect.value;
end record;

View File

@ -4,6 +4,8 @@
with core, attribute, skill, resource, deity, material, magic, equipment, unit, construction, chad, world;
use type core.point;
package body effect is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -13,9 +15,9 @@ package body effect is
case data.operation is
when player_add =>
case data.operator is
when attribute_offense => core.increment (world.map.chads (1).attributes (attribute.offense));
when attribute_wisdom => core.increment (world.map.chads (1).attributes (attribute.wisdom));
when attribute_speed => core.increment (world.map.chads (1).attributes (attribute.speed));
when attribute_offense => world.map.chads (1).attributes (attribute.offense) := world.map.chads (1).attributes (attribute.offense) + data.modifier;
when attribute_wisdom => world.map.chads (1).attributes (attribute.wisdom) := world.map.chads (1).attributes (attribute.wisdom) + data.modifier;
when attribute_speed => world.map.chads (1).attributes (attribute.speed) := world.map.chads (1).attributes (attribute.speed) + data.modifier;
when others => null;
end case;
when others => null;

View File

@ -45,7 +45,7 @@ package equipment is
type information is record
name : core.short_string;
kind : slot;
attributes : attribute.points;
attributes : attribute.bonus;
favor : faction.enumeration;
evoke : effect.value;
end record;

View File

@ -29,7 +29,7 @@ procedure main is
health => (30, 40),
mana => (20, 30),
stamina => (10, 20),
attributes => (1, 2, 3, 4, 5, 6),
attributes => attribute.default,
skills => (1, 2, 3, 4, 5, 6, 7, 8, 9, others => 0),
resources => ((101, 240), (103, 240), (107, 240), (109, 240), (113, 240), (127, 240)),
equipments => (equipment.chest => equipment.elven_armour,
@ -327,7 +327,7 @@ begin
view_show (index));
end loop;
--
resource.draw_points (world.map.chads (1).resources, (preview_width - 4 * icon * resource.count) / 2, (if view_list (map_preview_panel) then icon else 0));
resource.draw_points (world.map.chads (1).resources, (preview_width - 5 * icon * resource.count) / 2, (if view_list (map_preview_panel) then icon else 0));
--
signal_list (signal_mode).all;
--
@ -347,7 +347,7 @@ begin
ui.synchronize;
end loop gameplay_loop;
world.mapshot (folder & "/test.png");
--~world.mapshot (folder & "/mapshot.png");
------------------------------------------------------------------------------------------

View File

@ -38,11 +38,16 @@ package body resource is
------------------------------------------------------------------------------------------
procedure draw_points (data : in points; x, y : in integer) is
frame_width : constant integer := 4 * core.icon;
begin
for index in enumeration loop
ui.draw_icon (icon (index), trait (index).text, x + 4 * core.icon * enumeration'pos (index), y);
ui.draw_frame (trait (index).text, x + 4 * core.icon * enumeration'pos (index) + core.icon, y, 3 * core.icon, core.icon);
ui.write (data (index).value'image, x + 4 * core.icon * enumeration'pos (index) + core.icon - 1, y + 6, size => 18);
ui.draw_icon (icon (index), trait (index).text, x + (core.icon + frame_width) * enumeration'pos (index), y);
ui.draw_frame (trait (index).text, x + (core.icon + frame_width) * enumeration'pos (index) + core.icon, y, frame_width, core.icon);
--
ui.write (text => data (index).value'image & " /" & data (index).limit'image,
x => x + (core.icon + frame_width) * enumeration'pos (index) + core.icon - 1,
y => y + 7,
size => 18);
end loop;
end draw_points;

View File

@ -16,24 +16,24 @@ package resource is
type information is record
name : core.short_string;
base : natural;
base : core.point;
text : core.long_string;
end record;
type points is array (enumeration) of core.point;
type prices is array (enumeration) of natural;
type price is array (enumeration) of natural;
------------------------------------------------------------------------------------------
count : constant natural := enumeration'pos (enumeration'last) + 1;
trait : constant array (enumeration) of information := (
("Gold ", 0, "Gold is precious yellowish shiny metal, valued since ancient times. "),
("Wood ", 0, "Wood is just bundle of lignin and cellulose, nothing more. "),
("Stone ", 0, "Stone is essential building block for most constructions in this world. "),
("Metal ", 0, "Metal as a resource is mixture of commonly found metalic elements. "),
("Leather ", 0, "Leather is general purpose resource, used for armours and decorations. "),
("Gem ", 0, "Gem as a resource is same as metal, just mixture of various gems. ")
gold => ("Gold ", (24, 480), "Gold is precious yellowish shiny metal, valued since ancient times. "),
wood => ("Wood ", (12, 240), "Wood is just bundle of lignin and cellulose, nothing more. "),
stone => ("Stone ", (12, 240), "Stone is essential building block for most constructions in this world. "),
metal => ("Metal ", (12, 240), "Metal as a resource is mixture of commonly found metalic elements. "),
leather => ("Leather ", (12, 240), "Leather is general purpose resource, used for armours and decorations. "),
gem => ("Gem ", (12, 240), "Gem as a resource is same as metal, just mixture of various gems. ")
);
------------------------------------------------------------------------------------------

View File

@ -17,7 +17,7 @@ package unit is
type information is record
name : core.short_string := "-- ";
kind : faction.enumeration := faction.neutral;
attributes : attribute.points := (others => 0);
attributes : attribute.bonus := (others => 0);
daily_fee : natural := 0;
equipments : equipment.equip_array := (others => equipment.none);
end record;