Major refactoring of Main procedure...

This commit is contained in:
Ognjen Milan Robovic 2024-06-04 08:08:01 -04:00
parent f34f33b9a8
commit 800a49c18c

View File

@ -6,9 +6,6 @@ pragma ada_2012;
with core, ui, effect, attribute, skill, resource, faction, deity, material, magic, equipment, unit, construction, chad, world; with core, ui, effect, attribute, skill, resource, faction, deity, material, magic, equipment, unit, construction, chad, world;
with ada.strings.unbounded;
use ada.strings.unbounded;
use type core.cursor_code; use type core.cursor_code;
use type core.signal_code; use type core.signal_code;
use type core.point; use type core.point;
@ -65,11 +62,11 @@ procedure main is
view_icon : array (view) of core.sprite := (others => (others => 0)); view_icon : array (view) of core.sprite := (others => (others => 0));
view_list : array (view) of boolean := (fullscreen => false, others => true); view_list : array (view) of boolean := (fullscreen => false, others => true);
view_text : array (view) of core.long_string := ( view_text : constant array (view) of access string := (
"Toggle map preview panel. ", new string' ("Toggle map preview panel."),
"Toggle status preview panel. ", new string' ("Toggle status preview panel."),
"Toggle text box panel. ", new string' ("Toggle text box panel."),
"Toggle fullscreen or windowed mode. " new string' ("Toggle fullscreen or windowed mode.")
); );
game_title : core.sprite; game_title : core.sprite;
@ -78,45 +75,32 @@ procedure main is
switch : natural := 0; switch : natural := 0;
choose : world.biome := world.grass; choose : world.biome := world.grass;
view_source_code : natural := 25; view_source_code : natural := 17;
source_code : array (0 .. 35) of unbounded_string := ( source_code : constant array (0 .. 22) of access string := (
to_unbounded_string (core.folder & "/source/ai.adb"), new string' (core.folder & "/source/ai.adb"),
to_unbounded_string (core.folder & "/source/ai.ads"), new string' (core.folder & "/source/ai.ads"),
to_unbounded_string (core.folder & "/source/attribute.adb"), new string' (core.folder & "/source/attribute.ads"),
to_unbounded_string (core.folder & "/source/attribute.ads"), new string' (core.folder & "/source/chad.ads"),
to_unbounded_string (core.folder & "/source/chad.adb"), new string' (core.folder & "/source/construction.ads"),
to_unbounded_string (core.folder & "/source/chad.ads"), new string' (core.folder & "/source/core.adb"),
to_unbounded_string (core.folder & "/source/construction.adb"), new string' (core.folder & "/source/core.ads"),
to_unbounded_string (core.folder & "/source/construction.ads"), new string' (core.folder & "/source/deity.ads"),
to_unbounded_string (core.folder & "/source/core.adb"), new string' (core.folder & "/source/effect.ads"),
to_unbounded_string (core.folder & "/source/core.ads"), new string' (core.folder & "/source/equipment.ads"),
to_unbounded_string (core.folder & "/source/deity.adb"), new string' (core.folder & "/source/faction.ads"),
to_unbounded_string (core.folder & "/source/deity.ads"), new string' (core.folder & "/source/magic.ads"),
to_unbounded_string (core.folder & "/source/effect.adb"), new string' (core.folder & "/source/main.adb"),
to_unbounded_string (core.folder & "/source/effect.ads"), new string' (core.folder & "/source/material.ads"),
to_unbounded_string (core.folder & "/source/equipment.adb"), new string' (core.folder & "/source/might.ads"),
to_unbounded_string (core.folder & "/source/equipment.ads"), new string' (core.folder & "/source/ray.ads"),
to_unbounded_string (core.folder & "/source/faction.adb"), new string' (core.folder & "/source/resource.ads"),
to_unbounded_string (core.folder & "/source/faction.ads"), new string' (core.folder & "/source/skill.ads"),
to_unbounded_string (core.folder & "/source/magic.adb"), new string' (core.folder & "/source/ui.adb"),
to_unbounded_string (core.folder & "/source/magic.ads"), new string' (core.folder & "/source/ui.ads"),
to_unbounded_string (core.folder & "/source/main.adb"), new string' (core.folder & "/source/unit.ads"),
to_unbounded_string (core.folder & "/source/material.adb"), new string' (core.folder & "/source/world.adb"),
to_unbounded_string (core.folder & "/source/material.ads"), new string' (core.folder & "/source/world.ads")
to_unbounded_string (core.folder & "/source/might.adb"),
to_unbounded_string (core.folder & "/source/might.ads"),
to_unbounded_string (core.folder & "/source/ray.ads"),
to_unbounded_string (core.folder & "/source/resource.adb"),
to_unbounded_string (core.folder & "/source/resource.ads"),
to_unbounded_string (core.folder & "/source/skill.adb"),
to_unbounded_string (core.folder & "/source/skill.ads"),
to_unbounded_string (core.folder & "/source/ui.adb"),
to_unbounded_string (core.folder & "/source/ui.ads"),
to_unbounded_string (core.folder & "/source/unit.adb"),
to_unbounded_string (core.folder & "/source/unit.ads"),
to_unbounded_string (core.folder & "/source/world.adb"),
to_unbounded_string (core.folder & "/source/world.ads")
); );
side_panel : integer := 0; side_panel : integer := 0;
@ -308,10 +292,10 @@ begin
-- --
declare source_code_data : core.string_box_data; declare source_code_data : core.string_box_data;
begin begin
core.import_text (source_code_data, to_string (source_code (view_source_code))); core.import_text (source_code_data, source_code (view_source_code).all);
-- --
if core.cursor_mode = core.cursor_left then if core.cursor_mode = core.cursor_left then
view_source_code := (view_source_code + 1) mod 36; view_source_code := (view_source_code + 1) mod 23;
core.cursor_mode := core.cursor_none; core.cursor_mode := core.cursor_none;
core.wheel := 0.0; core.wheel := 0.0;
end if; end if;
@ -437,7 +421,7 @@ begin
end if; end if;
-- --
for index in view loop for index in view loop
ui.draw_frame (description => view_text (index), ui.draw_frame (description => view_text (index).all,
x => core.window_width - core.icon * (view'pos (view'last) + 1) + core.icon * view'pos (index), x => core.window_width - core.icon * (view'pos (view'last) + 1) + core.icon * view'pos (index),
y => core.window_height - core.icon, y => core.window_height - core.icon,
width => core.icon, width => core.icon,