Various general refactoring...
This commit is contained in:
parent
5b0c6f2e0f
commit
600ca67069
@ -2,7 +2,7 @@
|
||||
--
|
||||
-- GNU General Public Licence (version 3 or later)
|
||||
|
||||
with core, ui, attribute, skill, resource, faction;
|
||||
with core, ui, attribute, skill, resource, faction, equipment;
|
||||
|
||||
package body chad is
|
||||
|
||||
@ -35,16 +35,22 @@ package body chad is
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw (index : in enumeration; x, y : in integer) is
|
||||
procedure draw (player : in data; x, y : in integer) is
|
||||
begin
|
||||
core.draw (sprite (index), x, y);
|
||||
core.draw (sprite (player.index), x, y, state => player.state);
|
||||
--
|
||||
for index in equipment.slot loop
|
||||
if player.equipments (index).show then
|
||||
equipment.draw (player.equipments (index).data, player.state, x, y);
|
||||
end if;
|
||||
end loop;
|
||||
end draw;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure view (index : in enumeration; x, y : in integer) is
|
||||
procedure view (player : in data; x, y : in integer) is
|
||||
begin
|
||||
ui.draw_sprite (view_sprite (index), trait (index).name, x, y, 0);
|
||||
ui.draw_sprite (view_sprite (player.index), trait (player.index).name, x, y, 0);
|
||||
end view;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
@ -54,7 +60,7 @@ package body chad is
|
||||
begin
|
||||
ui.draw_frame ("--", x, y, 360 + 2 * offset, 96 + 2 * offset);
|
||||
--
|
||||
view (player.index, x + offset, y + offset);
|
||||
view (player, x + offset, y + offset);
|
||||
--
|
||||
ui.draw_tiny_fill_bar (x + view_width + 2 * offset, y + 1 * core.icon + offset, 4 * core.icon, float (player.health.value) / float (player.health.limit));
|
||||
ui.draw_tiny_fill_bar (x + view_width + 2 * offset, y + 2 * core.icon + offset, 4 * core.icon, float (player.mana.value) / float (player.mana.limit));
|
||||
@ -85,6 +91,13 @@ package body chad is
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw_menu (player : in data; x, y : in integer) is
|
||||
begin
|
||||
null;
|
||||
end draw_menu;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw_pepe is
|
||||
begin
|
||||
core.draw (pepe_the_frog, (core.window_width - core.base) / 2, (core.window_height - core.base) / 2);
|
||||
|
@ -2,7 +2,7 @@
|
||||
--
|
||||
-- GNU General Public Licence (version 3 or later)
|
||||
|
||||
with core, attribute, skill, resource, faction;
|
||||
with core, attribute, skill, resource, faction, equipment;
|
||||
|
||||
package chad is
|
||||
|
||||
@ -24,12 +24,14 @@ package chad is
|
||||
|
||||
type data is record
|
||||
index : enumeration;
|
||||
state : core.animation;
|
||||
health : core.point;
|
||||
mana : core.point;
|
||||
stamina : core.point;
|
||||
attributes : attribute.points;
|
||||
skills : skill.points;
|
||||
resources : resource.points;
|
||||
equipments : equipment.equip_array := (others => equipment.empty);
|
||||
end record;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
@ -49,9 +51,10 @@ package chad is
|
||||
|
||||
procedure configure;
|
||||
|
||||
procedure draw (index : in enumeration; x, y : in integer);
|
||||
procedure view (index : in enumeration; x, y : in integer);
|
||||
procedure draw_data (player : in data; x, y : in integer);
|
||||
procedure draw (player : in data; x, y : in integer);
|
||||
procedure view (player : in data; x, y : in integer);
|
||||
procedure draw_data (player : in data; x, y : in integer);
|
||||
procedure draw_menu (player : in data; x, y : in integer);
|
||||
|
||||
procedure draw_pepe;
|
||||
procedure draw_alice;
|
||||
|
@ -276,16 +276,16 @@ package body core is
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw (data : in sprite := (others => 0);
|
||||
x : in integer := 0;
|
||||
y : in integer := 0;
|
||||
u : in integer := 0;
|
||||
v : in integer := 0;
|
||||
width : in integer := 0;
|
||||
height : in integer := 0;
|
||||
state : in integer := 0;
|
||||
factor : in integer := zoom;
|
||||
tint : in colour := (others => 255)) is
|
||||
procedure draw (data : in sprite := (others => 0);
|
||||
x : in integer := 0;
|
||||
y : in integer := 0;
|
||||
u : in integer := 0;
|
||||
v : in integer := 0;
|
||||
width : in integer := 0;
|
||||
height : in integer := 0;
|
||||
state : in animation := idle;
|
||||
factor : in integer := zoom;
|
||||
tint : in colour := (others => 255)) is
|
||||
new_width : constant float := float ((if width = 0 then data.width else width));
|
||||
new_height : constant float := float ((if height = 0 then data.height else height));
|
||||
--
|
||||
@ -293,7 +293,7 @@ package body core is
|
||||
begin
|
||||
ray.draw_texture (data => texture_array (data.index),
|
||||
uv => (x => float (if u > 0 then u else (animation_time mod data.frames) * data.width),
|
||||
y => float (if state = 0 then v else (state mod data.states) * data.height),
|
||||
y => float (animation'pos (state) * data.height),
|
||||
width => new_width,
|
||||
height => new_height),
|
||||
view => (x => float (x),
|
||||
@ -398,6 +398,13 @@ package body core is
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure toggle_fullscreen is
|
||||
begin
|
||||
ray.toggle_fullscreen;
|
||||
end toggle_fullscreen;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure initialize is
|
||||
begin
|
||||
echo (comment, "Initializing core components...");
|
||||
|
@ -146,16 +146,16 @@ package core is
|
||||
procedure render_image (data : in sprite; x, y, u, v, width, height : in integer);
|
||||
procedure export_image (file_path : in string);
|
||||
|
||||
procedure draw (data : in sprite := (others => 0);
|
||||
x : in integer := 0;
|
||||
y : in integer := 0;
|
||||
u : in integer := 0;
|
||||
v : in integer := 0;
|
||||
width : in integer := 0;
|
||||
height : in integer := 0;
|
||||
state : in integer := 0;
|
||||
factor : in integer := zoom;
|
||||
tint : in colour := (others => 255));
|
||||
procedure draw (data : in sprite := (others => 0);
|
||||
x : in integer := 0;
|
||||
y : in integer := 0;
|
||||
u : in integer := 0;
|
||||
v : in integer := 0;
|
||||
width : in integer := 0;
|
||||
height : in integer := 0;
|
||||
state : in animation := idle;
|
||||
factor : in integer := zoom;
|
||||
tint : in colour := (others => 255));
|
||||
|
||||
procedure draw_horizontally (data : in sprite; x, y, width, factor : in integer);
|
||||
procedure draw_vertically (data : in sprite; x, y, height, factor : in integer);
|
||||
@ -189,6 +189,8 @@ package core is
|
||||
procedure move_camera_left;
|
||||
procedure move_camera_right;
|
||||
|
||||
procedure toggle_fullscreen;
|
||||
|
||||
procedure initialize;
|
||||
procedure deinitialize;
|
||||
procedure synchronize;
|
||||
|
@ -25,7 +25,7 @@ package body equipment is
|
||||
|
||||
procedure draw (index : in enumeration; state : in core.animation; x, y : in integer) is
|
||||
begin
|
||||
core.draw (sprite (index), x, y, state => core.animation'pos (state));
|
||||
core.draw (sprite (index), x, y, state => state);
|
||||
end draw;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
@ -23,12 +23,19 @@ procedure main is
|
||||
|
||||
player : chad.data := (
|
||||
index => chad.ada,
|
||||
state => core.idle,
|
||||
health => (30, 40),
|
||||
mana => (20, 30),
|
||||
stamina => (10, 20),
|
||||
attributes => (1, 2, 3, 4, 5, 6),
|
||||
skills => (1, 2, 3, 4, 5, 6, 7, 8, 9, others => 0),
|
||||
resources => (101, 103, 107, 109, 113, 127)
|
||||
resources => (101, 103, 107, 109, 113, 127),
|
||||
equipments => (equipment.chest => (equipment.elven_armour, true),
|
||||
--~equipment.head => (equipment.elven_helmet, true),
|
||||
equipment.hands => (equipment.leather_gauntlets, true),
|
||||
equipment.feet => (equipment.leather_greaves, true),
|
||||
equipment.main_hand => (equipment.jade_sword, true),
|
||||
others => (equipment.empty))
|
||||
);
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
@ -116,6 +123,7 @@ procedure main is
|
||||
signal_kp_add => zoom_in'access,
|
||||
signal_kp_subtract => zoom_out'access,
|
||||
signal_m => world.reveal_map'access,
|
||||
signal_f => toggle_fullscreen'access,
|
||||
others => idle_skip'access
|
||||
);
|
||||
|
||||
@ -240,7 +248,7 @@ begin
|
||||
draw (game_preview (choose), center_x (game_preview (choose).width * 2), center_y (game_preview (choose).height * 2), factor => 2);
|
||||
draw (game_title, center_x (game_title.width * 2), center_y (game_title.height * 2), factor => 2);
|
||||
--
|
||||
ui.write ("[-- Please press Spacebar to continue]", 0, center_y (24), (102, 102, 102, 255));
|
||||
ui.write ("[-- Press Spacebar or RMB to continue]", 0, center_y (24), (102, 102, 102, 255));
|
||||
end loop introduction_loop;
|
||||
|
||||
cursor_mode := 0;
|
||||
@ -272,7 +280,7 @@ begin
|
||||
if not view_list (status_preview_panel) then
|
||||
side_panel := 0;
|
||||
else
|
||||
side_panel := window_width / 4;
|
||||
side_panel := 376 + 2 * 32;
|
||||
end if;
|
||||
--
|
||||
preview_width := window_width - side_panel;
|
||||
@ -308,10 +316,13 @@ begin
|
||||
--
|
||||
signal_list (signal_mode).all;
|
||||
--
|
||||
magic.menu (0, 0, true);
|
||||
--~magic.menu (0, 0, true);
|
||||
--~might.menu (0, 0, true);
|
||||
--
|
||||
chad.draw_alice;
|
||||
chad.draw (player, (window_width - base) / 2, (window_height - base) / 2);
|
||||
--
|
||||
--~chad.draw_alice;
|
||||
--
|
||||
--~deity.draw (deity.AEZORA, 300, 300);
|
||||
--~deity.draw (deity.ULDRAE, 500, 300);
|
||||
--
|
||||
|
@ -271,13 +271,10 @@ package body ui is
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw_icon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access) is
|
||||
save_zoom : natural := core.zoom;
|
||||
begin
|
||||
draw (icon, x, y);
|
||||
--
|
||||
core.zoom := 1;
|
||||
core.draw (data, x, y);
|
||||
core.zoom := save_zoom;
|
||||
core.draw (data, x, y, factor => 1);
|
||||
--
|
||||
if core.cursor_inside (x, y, core.icon / core.zoom, core.icon / core.zoom) then
|
||||
prioritize := true;
|
||||
@ -296,11 +293,8 @@ package body ui is
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
procedure draw_overicon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access) is
|
||||
save_zoom : natural := core.zoom;
|
||||
begin
|
||||
core.zoom := 1;
|
||||
core.draw (data, x, y);
|
||||
core.zoom := save_zoom;
|
||||
core.draw (data, x, y, factor => 1);
|
||||
--
|
||||
draw (overicon, x, y);
|
||||
end draw_overicon;
|
||||
@ -313,7 +307,7 @@ package body ui is
|
||||
--
|
||||
draw_icon_menu (x, y, data.width + 2 * offset, data.height + 2 * offset);
|
||||
--
|
||||
if core.cursor_inside (x, y, data.width + 2 * offset, data.height + 2 * offset) then
|
||||
if core.cursor_inside (x, y, (data.width + 2 * offset) / core.zoom, (data.height + 2 * offset) / core.zoom) then
|
||||
prioritize := true;
|
||||
--
|
||||
core.write_help_box (text);
|
||||
|
@ -36,7 +36,7 @@ package body unit is
|
||||
|
||||
procedure draw (index : in enumeration; state : in core.animation; x, y : in integer) is
|
||||
begin
|
||||
core.draw (sprite (index), x, y, state => core.animation'pos (state));
|
||||
core.draw (sprite (index), x, y, state => state);
|
||||
end draw;
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
|
@ -146,27 +146,28 @@ package body world is
|
||||
for horizontal in 0 .. map.width - 1 loop
|
||||
exit when offset.x + (horizontal - core.camera.x) * core.base * core.zoom > core.window_width;
|
||||
--
|
||||
if not ((horizontal - core.camera.x) ** 2 + (vertical - core.camera.y) ** 2 > view_reach * 2) then
|
||||
if not ((horizontal - core.camera.x) ** 2 + (vertical - core.camera.y) ** 2 > view_reach * 2) then
|
||||
map.views (horizontal, vertical) := true;
|
||||
end if;
|
||||
end loop;
|
||||
end loop;
|
||||
--
|
||||
declare x : integer := core.base * core.zoom * (-1- core.camera.x) + offset.x;
|
||||
y : integer := core.base * core.zoom * (-1- core.camera.y) + offset.y;
|
||||
width : integer := core.base * core.zoom * (map.width + 2);
|
||||
height : integer := core.base * core.zoom * (map.height + 2);
|
||||
begin
|
||||
core.draw_horizontally (border_upper, x + core.base, y, width - 2 * core.base, core.zoom);
|
||||
core.draw_horizontally (border_lower, x + core.base, y + height - core.base, width - 2 * core.base, core.zoom);
|
||||
core.draw_vertically (border_left, x, y + core.base, height - 2 * core.base, core.zoom);
|
||||
core.draw_vertically (border_right, x + width - core.base, y + core.base, height - 2 * core.base, core.zoom);
|
||||
--
|
||||
core.draw (corner_upper_left, x, y, core.zoom);
|
||||
core.draw (corner_upper_right, x + width - core.base, y, core.zoom);
|
||||
core.draw (corner_lower_left, x, y + height - core.base, core.zoom);
|
||||
core.draw (corner_lower_right, x + width - core.base, y + height - core.base, core.zoom);
|
||||
end;
|
||||
--~declare factor : constant integer := core.base * core.zoom;
|
||||
--~x : constant integer := factor * (-1- core.camera.x) + offset.x;
|
||||
--~y : constant integer := factor * (-1- core.camera.y) + offset.y;
|
||||
--~width : constant integer := core.base * (map.width + 2);
|
||||
--~height : constant integer := core.base * (map.height + 2);
|
||||
--~begin
|
||||
--~core.draw_horizontally (border_upper, x + factor, y, width - 2 * factor, core.zoom);
|
||||
--~core.draw_horizontally (border_lower, x + factor, y + height - factor, width - 2 * factor, core.zoom);
|
||||
--~core.draw_vertically (border_left, x, y + factor, height - 2 * factor, core.zoom);
|
||||
--~core.draw_vertically (border_right, x + width - factor, y + factor, height - 2 * factor, core.zoom);
|
||||
--~--
|
||||
--~core.draw (corner_upper_left, x, y, core.zoom);
|
||||
--~core.draw (corner_upper_right, x + width - core.base, y, core.zoom);
|
||||
--~core.draw (corner_lower_left, x, y + height - core.base, core.zoom);
|
||||
--~core.draw (corner_lower_right, x + width - core.base, y + height - core.base, core.zoom);
|
||||
--~end;
|
||||
--
|
||||
for vertical in 0 .. map.height - 1 loop
|
||||
exit when offset.y + (vertical - core.camera.y) * core.base * core.zoom > core.window_height;
|
||||
|
Loading…
Reference in New Issue
Block a user