A lot of minor UI fixes...
This commit is contained in:
parent
67c8197ba7
commit
e19220d15a
@ -2,7 +2,7 @@
|
|||||||
--
|
--
|
||||||
-- GNU General Public Licence (version 3 or later)
|
-- GNU General Public Licence (version 3 or later)
|
||||||
|
|
||||||
with core, effect, resource, faction;
|
with core, ui, effect, resource, faction;
|
||||||
|
|
||||||
package body construction is
|
package body construction is
|
||||||
|
|
||||||
@ -28,6 +28,17 @@ package body construction is
|
|||||||
core.draw (sprite (index), x, y);
|
core.draw (sprite (index), x, y);
|
||||||
end draw;
|
end draw;
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
procedure draw_plus (index : in enumeration; x, y : in integer) is
|
||||||
|
begin
|
||||||
|
draw (index, x, y);
|
||||||
|
--
|
||||||
|
if core.cursor_inside (x, y, sprite (index).width, sprite (index).height) and core.cursor_mode = 2 and not ui.prioritize then
|
||||||
|
core.write_text_box (trait (index).name);
|
||||||
|
end if;
|
||||||
|
end draw_plus;
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
end construction;
|
end construction;
|
||||||
|
@ -42,6 +42,7 @@ package construction is
|
|||||||
procedure configure;
|
procedure configure;
|
||||||
|
|
||||||
procedure draw (index : in enumeration; x, y : in integer);
|
procedure draw (index : in enumeration; x, y : in integer);
|
||||||
|
procedure draw_plus (index : in enumeration; x, y : in integer);
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ package body core is
|
|||||||
|
|
||||||
function cursor_inside (x, y, width, height : in integer) return boolean is
|
function cursor_inside (x, y, width, height : in integer) return boolean is
|
||||||
begin
|
begin
|
||||||
return cursor.x > x and cursor.x < x + width and cursor.y > y and cursor.y < y + height;
|
return cursor.x > x and cursor.x < x + width * zoom and cursor.y > y and cursor.y < y + height * zoom;
|
||||||
end cursor_inside;
|
end cursor_inside;
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
@ -325,17 +325,13 @@ package body core is
|
|||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
function read_text_box return string is
|
function read_help_box return string is begin return to_string (help_box.text); end read_help_box;
|
||||||
begin
|
function read_text_box return string is begin return to_string (text_box.text); end read_text_box;
|
||||||
return to_string (text_box.text);
|
|
||||||
end read_text_box;
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
procedure write_text_box (text : in string) is
|
procedure write_help_box (text : in string) is begin help_box.text := to_unbounded_string (text); end write_help_box;
|
||||||
begin
|
procedure write_text_box (text : in string) is begin text_box.text := to_unbounded_string (text); end write_text_box;
|
||||||
text_box.text := to_unbounded_string (text);
|
|
||||||
end write_text_box;
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ package core is
|
|||||||
action : access procedure := null;
|
action : access procedure := null;
|
||||||
end record;
|
end record;
|
||||||
|
|
||||||
type text_box_data is record
|
type string_box_data is record
|
||||||
data : access string := null;
|
data : access string := null;
|
||||||
text : unbounded_string := null_unbounded_string;
|
text : unbounded_string := null_unbounded_string;
|
||||||
size : vector := (0, 0);
|
size : vector := (0, 0);
|
||||||
@ -98,7 +98,8 @@ package core is
|
|||||||
|
|
||||||
block_array : array (0 .. block_limit - 1) of block := (others => (0, 0, 0, 0, 0, null));
|
block_array : array (0 .. block_limit - 1) of block := (others => (0, 0, 0, 0, 0, null));
|
||||||
|
|
||||||
text_box : text_box_data;
|
help_box : string_box_data;
|
||||||
|
text_box : string_box_data;
|
||||||
|
|
||||||
global_mapshot : ray.image;
|
global_mapshot : ray.image;
|
||||||
|
|
||||||
@ -160,8 +161,10 @@ package core is
|
|||||||
|
|
||||||
procedure block_queue (data : in block);
|
procedure block_queue (data : in block);
|
||||||
|
|
||||||
|
function read_help_box return string;
|
||||||
function read_text_box return string;
|
function read_text_box return string;
|
||||||
|
|
||||||
|
procedure write_help_box (text : in string);
|
||||||
procedure write_text_box (text : in string);
|
procedure write_text_box (text : in string);
|
||||||
|
|
||||||
procedure increment (value : in out integer);
|
procedure increment (value : in out integer);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
--
|
--
|
||||||
-- GNU General Public Licence (version 3 or later)
|
-- GNU General Public Licence (version 3 or later)
|
||||||
|
|
||||||
with core;
|
with core, ui;
|
||||||
|
|
||||||
package body equipment is
|
package body equipment is
|
||||||
|
|
||||||
@ -28,6 +28,17 @@ package body equipment is
|
|||||||
core.draw (sprite (index), x, y, state => core.animation'pos (state));
|
core.draw (sprite (index), x, y, state => core.animation'pos (state));
|
||||||
end draw;
|
end draw;
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
procedure draw_plus (index : in enumeration; state : in core.animation; x, y : in integer) is
|
||||||
|
begin
|
||||||
|
draw (index, state, x, y);
|
||||||
|
--
|
||||||
|
if core.cursor_inside (x, y, sprite (index).width, sprite (index).height) and core.cursor_mode = 2 and not ui.prioritize then
|
||||||
|
core.write_text_box (trait (index).name);
|
||||||
|
end if;
|
||||||
|
end draw_plus;
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
end equipment;
|
end equipment;
|
||||||
|
@ -177,6 +177,7 @@ package equipment is
|
|||||||
procedure configure;
|
procedure configure;
|
||||||
|
|
||||||
procedure draw (index : in enumeration; state : in core.animation; x, y : in integer);
|
procedure draw (index : in enumeration; state : in core.animation; x, y : in integer);
|
||||||
|
procedure draw_plus (index : in enumeration; state : in core.animation; x, y : in integer);
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ package body ui is
|
|||||||
core.draw_horizontally (sprite (active, index), x, y, width);
|
core.draw_horizontally (sprite (active, index), x, y, width);
|
||||||
core.zoom := save_zoom;
|
core.zoom := save_zoom;
|
||||||
--
|
--
|
||||||
--~if core.cursor_mode = 1 and cursor_inside (x, y, width, sprite (active, index).height) then
|
--~if core.cursor_mode = 1 and cursor_inside (x, y, width / core.zoom, sprite (active, index).height / core.zoom) then
|
||||||
--~action.all;
|
--~action.all;
|
||||||
--~core.cursor_mode := 0;
|
--~core.cursor_mode := 0;
|
||||||
--~end if;
|
--~end if;
|
||||||
@ -108,7 +108,7 @@ package body ui is
|
|||||||
core.draw_vertically (sprite (active, index), x, y, height);
|
core.draw_vertically (sprite (active, index), x, y, height);
|
||||||
core.zoom := save_zoom;
|
core.zoom := save_zoom;
|
||||||
--
|
--
|
||||||
--~if core.cursor_mode = 1 and cursor_inside (x, y, sprite (active, index).width, height) then
|
--~if core.cursor_mode = 1 and cursor_inside (x, y, sprite (active, index).width / core.zoom, height / core.zoom) then
|
||||||
--~action.all;
|
--~action.all;
|
||||||
--~core.cursor_mode := 0;
|
--~core.cursor_mode := 0;
|
||||||
--~end if;
|
--~end if;
|
||||||
@ -145,6 +145,29 @@ package body ui is
|
|||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
procedure draw_text_box is
|
||||||
|
width : constant integer := 320;
|
||||||
|
height : constant integer := core.icon;
|
||||||
|
middle : constant integer := sprite (active, text_middle).width;
|
||||||
|
offset : constant integer := 16;
|
||||||
|
begin
|
||||||
|
draw_background (text_middle, core.cursor.x + middle + offset, core.cursor.y + middle + offset, width - 2 * middle, height - 2 * middle);
|
||||||
|
--
|
||||||
|
draw_horizontally (text_upper, core.cursor.x + middle + offset, core.cursor.y + offset, width - 2 * middle);
|
||||||
|
draw_horizontally (text_lower, core.cursor.x + middle + offset, core.cursor.y + height - middle + offset, width - 2 * middle);
|
||||||
|
draw_vertically (text_left, core.cursor.x + offset, core.cursor.y + middle + offset, height - 2 * middle);
|
||||||
|
draw_vertically (text_right, core.cursor.x + width - middle + offset, core.cursor.y + middle + offset, height - 2 * middle);
|
||||||
|
--
|
||||||
|
draw (text_upper_left, core.cursor.x + offset, core.cursor.y + offset);
|
||||||
|
draw (text_upper_right, core.cursor.x + width - middle + offset, core.cursor.y + offset);
|
||||||
|
draw (text_lower_left, core.cursor.x + offset, core.cursor.y + height - middle + offset);
|
||||||
|
draw (text_lower_right, core.cursor.x + width - middle + offset, core.cursor.y + height - middle + offset);
|
||||||
|
--
|
||||||
|
write (core.read_text_box, core.cursor.x + 4 + offset, core.cursor.y + 6 + offset);
|
||||||
|
end draw_text_box;
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
procedure draw_structure (data : in structure) is
|
procedure draw_structure (data : in structure) is
|
||||||
offset : constant integer := core.icon / 4;
|
offset : constant integer := core.icon / 4;
|
||||||
orients : natural := 0;
|
orients : natural := 0;
|
||||||
@ -231,6 +254,12 @@ package body ui is
|
|||||||
prioritize := true;
|
prioritize := true;
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
|
--
|
||||||
|
if read_text_box /= "--" then
|
||||||
|
draw_text_box;
|
||||||
|
end if;
|
||||||
|
--
|
||||||
|
core.write_text_box ("--");
|
||||||
end synchronize;
|
end synchronize;
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
@ -251,10 +280,10 @@ package body ui is
|
|||||||
core.draw (data, x, y);
|
core.draw (data, x, y);
|
||||||
core.zoom := save_zoom;
|
core.zoom := save_zoom;
|
||||||
--
|
--
|
||||||
if core.cursor_inside (x, y, core.icon, core.icon) then
|
if core.cursor_inside (x, y, core.icon / core.zoom, core.icon / core.zoom) then
|
||||||
draw (icon_selected, x, y);
|
draw (icon_selected, x, y);
|
||||||
--
|
--
|
||||||
core.write_text_box (text);
|
core.write_help_box (text);
|
||||||
--
|
--
|
||||||
if core.cursor_mode = 1 then
|
if core.cursor_mode = 1 then
|
||||||
action.all;
|
action.all;
|
||||||
@ -277,30 +306,6 @@ package body ui is
|
|||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
procedure draw_text_box (text : in string) is
|
|
||||||
width : constant integer := 144;
|
|
||||||
height : constant integer := 72;
|
|
||||||
x : constant integer := (core.window_width - width) / 2;
|
|
||||||
y : constant integer := (core.window_height - height) / 2;
|
|
||||||
offset : constant integer := sprite (active, text_middle).width;
|
|
||||||
begin
|
|
||||||
draw_background (text_middle, x + offset, y + offset, width - 2 * offset, height - 2 * offset);
|
|
||||||
--
|
|
||||||
draw_horizontally (text_upper, x + offset, y, width - 2 * offset);
|
|
||||||
draw_horizontally (text_lower, x + offset, y + height - offset, width - 2 * offset);
|
|
||||||
draw_vertically (text_left, x, y + offset, height - 2 * offset);
|
|
||||||
draw_vertically (text_right, x + width - offset, y + offset, height - 2 * offset);
|
|
||||||
--
|
|
||||||
draw (text_upper_left, x, y);
|
|
||||||
draw (text_upper_right, x + width - offset, y);
|
|
||||||
draw (text_lower_left, x, y + height - offset);
|
|
||||||
draw (text_lower_right, x + width - offset, y + height - offset);
|
|
||||||
--
|
|
||||||
write (text, x, y);
|
|
||||||
end draw_text_box;
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
procedure draw_help_box (x, y, width, height : in integer; action : core.pointer := core.idle_skip'access) is
|
procedure draw_help_box (x, y, width, height : in integer; action : core.pointer := core.idle_skip'access) is
|
||||||
offset : constant integer := sprite (active, text_middle).width;
|
offset : constant integer := sprite (active, text_middle).width;
|
||||||
begin
|
begin
|
||||||
@ -316,9 +321,9 @@ package body ui is
|
|||||||
draw (text_lower_left, x, y + height - offset);
|
draw (text_lower_left, x, y + height - offset);
|
||||||
draw (text_lower_right, x + width - offset, y + height - offset);
|
draw (text_lower_right, x + width - offset, y + height - offset);
|
||||||
--
|
--
|
||||||
write (core.read_text_box, (core.icon - font (active).scale) / 2 + x + 4, (core.icon - font (active).scale) / 2 + y);
|
write (core.read_help_box, (core.icon - font (active).scale) / 2 + x + 4, (core.icon - font (active).scale) / 2 + y);
|
||||||
--
|
--
|
||||||
core.write_text_box ("--");
|
core.write_help_box ("--");
|
||||||
end draw_help_box;
|
end draw_help_box;
|
||||||
|
|
||||||
------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------
|
||||||
@ -343,8 +348,8 @@ package body ui is
|
|||||||
draw (frame_lower_left, x, y + height - sprite (active, frame_lower_left).height);
|
draw (frame_lower_left, x, y + height - sprite (active, frame_lower_left).height);
|
||||||
draw (frame_lower_right, x + width - sprite (active, frame_lower_right).width, y + height - sprite (active, frame_lower_right).height);
|
draw (frame_lower_right, x + width - sprite (active, frame_lower_right).width, y + height - sprite (active, frame_lower_right).height);
|
||||||
--
|
--
|
||||||
if core.cursor_inside (x, y, width, height) then
|
if core.cursor_inside (x, y, width / core.zoom, height / core.zoom) then
|
||||||
core.write_text_box (description);
|
core.write_help_box (description);
|
||||||
--
|
--
|
||||||
if core.cursor_mode = 1 then
|
if core.cursor_mode = 1 then
|
||||||
action.all;
|
action.all;
|
||||||
@ -364,9 +369,9 @@ package body ui is
|
|||||||
write (text,
|
write (text,
|
||||||
x + offset + (core.icon - font (active).scale) / 2 + core.icon,
|
x + offset + (core.icon - font (active).scale) / 2 + core.icon,
|
||||||
y + offset + (core.icon - font (active).scale) / 2,
|
y + offset + (core.icon - font (active).scale) / 2,
|
||||||
(if core.cursor_inside (x, y, width, height) then font_tint (active) else (others => 255)));
|
(if core.cursor_inside (x, y, width / core.zoom, height / core.zoom) then font_tint (active) else (others => 255)));
|
||||||
--
|
--
|
||||||
if core.cursor_inside (x, y, width, height) then
|
if core.cursor_inside (x, y, width / core.zoom, height / core.zoom) then
|
||||||
if core.cursor_mode = 1 then
|
if core.cursor_mode = 1 then
|
||||||
action.all;
|
action.all;
|
||||||
core.cursor_mode := 0;
|
core.cursor_mode := 0;
|
||||||
@ -382,7 +387,7 @@ package body ui is
|
|||||||
--
|
--
|
||||||
write (text, x + sprite (active, check_box_on).width, y);
|
write (text, x + sprite (active, check_box_on).width, y);
|
||||||
--
|
--
|
||||||
if core.cursor_mode = 1 and core.cursor_inside (x, y, sprite (active, check_box_on).width, sprite (active, check_box_on).height) then
|
if core.cursor_mode = 1 and core.cursor_inside (x, y, sprite (active, check_box_on).width / core.zoom, sprite (active, check_box_on).height / core.zoom) then
|
||||||
on := not on;
|
on := not on;
|
||||||
core.cursor_mode := 0;
|
core.cursor_mode := 0;
|
||||||
end if;
|
end if;
|
||||||
|
@ -62,8 +62,6 @@ package ui is
|
|||||||
procedure draw_icon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access);
|
procedure draw_icon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access);
|
||||||
procedure draw_overicon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access);
|
procedure draw_overicon (data : in core.sprite; text : in string; x, y : in integer; action : core.pointer := core.idle_skip'access);
|
||||||
|
|
||||||
procedure draw_text_box (text : in string);
|
|
||||||
|
|
||||||
procedure draw_help_box (x, y, width, height : in integer; action : core.pointer := core.idle_skip'access);
|
procedure draw_help_box (x, y, width, height : in integer; action : core.pointer := core.idle_skip'access);
|
||||||
|
|
||||||
procedure draw_frame (description : in string; x, y, width, height : in integer; action : core.pointer := core.idle_skip'access);
|
procedure draw_frame (description : in string; x, y, width, height : in integer; action : core.pointer := core.idle_skip'access);
|
||||||
|
@ -208,7 +208,7 @@ package body world is
|
|||||||
--
|
--
|
||||||
for index in 1 .. construction_limit loop
|
for index in 1 .. construction_limit loop
|
||||||
if map.views (map.constructions (index).x, map.constructions (index).y) then
|
if map.views (map.constructions (index).x, map.constructions (index).y) then
|
||||||
construction.draw (construction.enumeration'val (map.constructions (index).index),
|
construction.draw_plus (construction.enumeration'val (map.constructions (index).index),
|
||||||
offset.x + (map.constructions (index).x - core.camera.x) * core.base * core.zoom,
|
offset.x + (map.constructions (index).x - core.camera.x) * core.base * core.zoom,
|
||||||
offset.y + (map.constructions (index).y - core.camera.y) * core.base * core.zoom);
|
offset.y + (map.constructions (index).y - core.camera.y) * core.base * core.zoom);
|
||||||
end if;
|
end if;
|
||||||
@ -216,7 +216,7 @@ package body world is
|
|||||||
--
|
--
|
||||||
for index in 1 .. equipment_limit loop
|
for index in 1 .. equipment_limit loop
|
||||||
if map.views (map.equipments (index).x, map.equipments (index).y) then
|
if map.views (map.equipments (index).x, map.equipments (index).y) then
|
||||||
equipment.draw (equipment.enumeration'val (map.equipments (index).index),
|
equipment.draw_plus (equipment.enumeration'val (map.equipments (index).index),
|
||||||
core.idle,
|
core.idle,
|
||||||
offset.x + (map.equipments (index).x - core.camera.x) * core.base * core.zoom,
|
offset.x + (map.equipments (index).x - core.camera.x) * core.base * core.zoom,
|
||||||
offset.y + (map.equipments (index).y - core.camera.y) * core.base * core.zoom);
|
offset.y + (map.equipments (index).y - core.camera.y) * core.base * core.zoom);
|
||||||
|
Loading…
Reference in New Issue
Block a user