diff --git a/source/main.adb b/source/main.adb index 68aa667..d8e38ce 100644 --- a/source/main.adb +++ b/source/main.adb @@ -117,7 +117,11 @@ begin menu.draw (menu.resource_information, 400, 100, false); -- core.write ("Menu :" & menu.trait (menu.mouse_over_menu).title, preview_width + 32, 32 + 320, 16#CCCCCC#); - core.write ("Menu Element :" & menu.trait (menu.mouse_over_menu).elements (menu.mouse_over_menu_element).text, preview_width + 32, 32 + 352, 16#CCCCCC#); + if menu.mouse_over_menu_element = -1 then + core.write ("Menu Element :" & "-- ", preview_width + 32, 32 + 352, 16#CCCCCC#); + else + core.write ("Menu Element :" & menu.trait (menu.mouse_over_menu).elements (menu.mouse_over_menu_element).text, preview_width + 32, 32 + 352, 16#CCCCCC#); + end if; end loop gameplay; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/source/menu.adb b/source/menu.adb index 962aa19..294da39 100644 --- a/source/menu.adb +++ b/source/menu.adb @@ -11,7 +11,7 @@ package body menu is icon_size : constant integer := 32; offset : constant integer := icon_size + 2 * icon_offset; - button_width : constant integer := 2 * draw_offset + offset + 24 * 8 - 2 * draw_offset; + button_width : constant integer := offset + 24 * 8; button_height : constant integer := offset; ------------------------------------------------------------------------------------------ @@ -35,24 +35,19 @@ package body menu is trait (attribute_information).elements (index) := make_button (index, attribute.name (index), attribute.icon (index)); end loop; -- - --~for index in attribute.codex - --~loop - --~trait (attribute_information).elements (attribute.codex'pos (index)) := make_button (attribute.codex'pos (index), attribute.trait (index).name, attribute.icon (index)); - --~end loop; - -- - for index in skill.codex + for index in 0 .. skill.count - 1 loop - trait (skill_information).elements (skill.codex'pos (index)) := make_button (skill.codex'pos (index), skill.trait (index).name, skill.icon (index)); + trait (skill_information).elements (index) := make_button (index, skill.name (index), skill.icon (index)); end loop; -- - for index in resource.codex + for index in 0 .. resource.count - 1 loop - trait (resource_information).elements (resource.codex'pos (index)) := make_button (resource.codex'pos (index), resource.trait (index).name, resource.icon (index)); + trait (resource_information).elements (index) := make_button (index, resource.name (index), resource.icon (index)); end loop; -- for index in 0 .. 1 loop - trait (none).elements (index) := make_button (index, "-- ", resource.icon (resource.gold)); + trait (none).elements (index) := make_button (index, "-- ", resource.icon (0)); end loop; end configure; @@ -62,7 +57,7 @@ package body menu is limitation : integer; begin mouse_over_menu := none; - mouse_over_menu_element := 0; + mouse_over_menu_element := -1; -- for index in codex loop @@ -76,10 +71,20 @@ package body menu is end if; -- if mouse_over_menu /= none then + --~for element_index in 0 .. limitation - 1 + --~loop + --~if core.cursor_y > trait (index).y + draw_offset + element_index * offset + --~and core.cursor_y < trait (index).y + draw_offset + element_index * offset + offset then + --~mouse_over_menu_element := element_index; + --~end if; + --~end loop; + --~return; for element_index in 0 .. limitation - 1 loop - if core.cursor_y > trait (index).y + draw_offset + element_index * offset - and core.cursor_y < trait (index).y + draw_offset + element_index * offset + offset then + if core.cursor_x > trait (index).x + trait (index).elements (element_index).x + and core.cursor_x < trait (index).x + trait (index).elements (element_index).x + trait (index).elements (element_index).width + and core.cursor_y > trait (index).y + trait (index).elements (element_index).y + and core.cursor_y < trait (index).y + trait (index).elements (element_index).y + trait (index).elements (element_index).height then mouse_over_menu_element := element_index; end if; end loop; diff --git a/source/resource.adb b/source/resource.adb index 558a6ba..68d577e 100644 --- a/source/resource.adb +++ b/source/resource.adb @@ -10,7 +10,7 @@ package body resource is begin for index in codex loop - icon (index) := core.load_sprite ("./sprite/resource/" & core.lowercase (codex'image (index)) & ".png", 1, 1); + sprite (index) := core.load_sprite ("./sprite/resource/" & core.lowercase (codex'image (index)) & ".png", 1, 1); end loop; end configure; @@ -18,9 +18,15 @@ package body resource is procedure draw (index : in codex; x, y : in integer) is begin - core.draw (icon (index), x, y); + core.draw (sprite (index), x, y); end draw; + ------------------------------------------------------------------------------------------ + + function name (index : in integer) return core.short_string is begin return trait (codex'val (index)).name; end name; + function base (index : in integer) return base_limit is begin return trait (codex'val (index)).base; end base; + function icon (index : in integer) return core.sprite is begin return sprite (codex'val (index)); end icon; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end resource; diff --git a/source/resource.ads b/source/resource.ads index bd5d007..0e2b3ba 100644 --- a/source/resource.ads +++ b/source/resource.ads @@ -26,7 +26,7 @@ package resource is ------------------------------------------------------------------------------------------ - icon : sprite_array; + sprite : sprite_array; count : constant natural := codex'pos (codex'last) + 1; @@ -46,6 +46,10 @@ package resource is procedure draw (index : in codex; x, y : in integer); + function name (index : in integer) return core.short_string; + function base (index : in integer) return base_limit; + function icon (index : in integer) return core.sprite; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end resource; diff --git a/source/skill.adb b/source/skill.adb index ebb9139..bee3a3c 100644 --- a/source/skill.adb +++ b/source/skill.adb @@ -10,7 +10,7 @@ package body skill is begin for index in codex loop - icon (index) := core.load_sprite ("./sprite/skill/" & core.lowercase (codex'image (index)) & ".png", 1, 1); + sprite (index) := core.load_sprite ("./sprite/skill/" & core.lowercase (codex'image (index)) & ".png", 1, 1); end loop; end configure; @@ -18,9 +18,16 @@ package body skill is procedure draw (index : in codex; x, y : in integer) is begin - core.draw (icon (index), x, y); + core.draw (sprite (index), x, y); end draw; + ------------------------------------------------------------------------------------------ + + function name (index : in integer) return core.short_string is begin return trait (codex'val (index)).name; end name; + function base (index : in integer) return base_limit is begin return trait (codex'val (index)).base; end base; + function level (index : in integer) return level_limit is begin return trait (codex'val (index)).level; end level; + function icon (index : in integer) return core.sprite is begin return sprite (codex'val (index)); end icon; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end skill; diff --git a/source/skill.ads b/source/skill.ads index cc5bbe9..d4b10b9 100644 --- a/source/skill.ads +++ b/source/skill.ads @@ -29,7 +29,7 @@ package skill is ------------------------------------------------------------------------------------------ - icon : sprite_array; + sprite : sprite_array; count : constant natural := codex'pos (codex'last) + 1; @@ -66,6 +66,11 @@ package skill is procedure draw (index : in codex; x, y : in integer); + function name (index : in integer) return core.short_string; + function base (index : in integer) return base_limit; + function level (index : in integer) return level_limit; + function icon (index : in integer) return core.sprite; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end skill;