diff --git a/source/core.adb b/source/core.adb index 07995a2..20b9be8 100644 --- a/source/core.adb +++ b/source/core.adb @@ -313,26 +313,26 @@ package body core is if ray.mouse_button_is_released (ray.mouse_button_middle) then cursor_mode := 0; end if; -- case signal is - when 48 .. 57 => signal_mode := signal - 48 + signal_code'pos (signal_0); - when 65 .. 90 => signal_mode := signal - 65 + signal_code'pos (signal_a); - when 320 .. 329 => signal_mode := signal - 320 + signal_code'pos (signal_kp_0); + when 48 .. 57 => signal_mode := signal_code'val (signal - 48 + signal_code'pos (signal_0)); + when 65 .. 90 => signal_mode := signal_code'val (signal - 65 + signal_code'pos (signal_a)); + when 320 .. 329 => signal_mode := signal_code'val (signal - 320 + signal_code'pos (signal_kp_0)); -- - when 0 => signal_mode := signal_code'pos (signal_none); - when 32 => signal_mode := signal_code'pos (signal_space); - when 96 => signal_mode := signal_code'pos (signal_grave); - when 340 => signal_mode := signal_code'pos (signal_left_shift); - when 341 => signal_mode := signal_code'pos (signal_left_control); - when 333 => signal_mode := signal_code'pos (signal_kp_subtract); - when 334 => signal_mode := signal_code'pos (signal_kp_add); - when 256 => signal_mode := signal_code'pos (signal_escape); - when 257 => signal_mode := signal_code'pos (signal_enter); - when 258 => signal_mode := signal_code'pos (signal_tab); - when 259 => signal_mode := signal_code'pos (signal_backspace); - when 262 => signal_mode := signal_code'pos (signal_right); - when 263 => signal_mode := signal_code'pos (signal_left); - when 264 => signal_mode := signal_code'pos (signal_down); - when 265 => signal_mode := signal_code'pos (signal_up); - when others => signal_mode := signal_code'pos (signal_none); + when 0 => signal_mode := signal_none; + when 32 => signal_mode := signal_space; + when 96 => signal_mode := signal_grave; + when 340 => signal_mode := signal_left_shift; + when 341 => signal_mode := signal_left_control; + when 333 => signal_mode := signal_kp_subtract; + when 334 => signal_mode := signal_kp_add; + when 256 => signal_mode := signal_escape; + when 257 => signal_mode := signal_enter; + when 258 => signal_mode := signal_tab; + when 259 => signal_mode := signal_backspace; + when 262 => signal_mode := signal_right; + when 263 => signal_mode := signal_left; + when 264 => signal_mode := signal_down; + when 265 => signal_mode := signal_up; + when others => signal_mode := signal_none; end case; -- --~for index in reverse 0 .. block_count - 1 loop diff --git a/source/core.ads b/source/core.ads index 4957d58..769b4ab 100644 --- a/source/core.ads +++ b/source/core.ads @@ -69,15 +69,15 @@ package core is engine_active : boolean := false; - cursor : vector := (0, 0); - camera : vector := (0, 0); - cursor_mode : integer := 0; - signal_mode : integer := 0; - framerate : integer := 0; - global_time : natural := 0; - gameplay_time : natural := 0; - animation_time : natural := 0; - zoom : natural := 1; + cursor : vector := (0, 0); + camera : vector := (0, 0); + cursor_mode : integer := 0; + signal_mode : signal_code := signal_none; + framerate : integer := 0; + global_time : natural := 0; + gameplay_time : natural := 0; + animation_time : natural := 0; + zoom : natural := 1; block_limit : constant natural := 40; block_count : natural := 0; diff --git a/source/main.adb b/source/main.adb index a71d6a9..64dc7cf 100644 --- a/source/main.adb +++ b/source/main.adb @@ -99,6 +99,59 @@ procedure main is others => core.idle'access ); + ------------------------------------------------------------------------------------------ + + procedure introduction is + begin + ui.write ("Heyo world!", 0, 0); + end introduction; + + ------------------------------------------------------------------------------------------ + + procedure gameplay is + begin + if not view_list (status_preview_panel) then + side_panel := 0; + else + side_panel := core.window_width / 4; + end if; + -- + preview_width := core.window_width - side_panel; + preview_height := core.window_height - text_box_height; + text_box_height := 32; + -- + world.draw; + -- + if view_list (map_preview_panel) then + ui.draw_menu (0, 0, preview_width, preview_height); + end if; + -- + if view_list (status_preview_panel) then + ui.draw_tiny_menu (preview_width, 0, side_panel, preview_height); + ui.draw_state_box (preview_width + 32, 32); + end if; + -- + if view_list (text_box_panel) then + ui.draw_help_box (0, core.window_height - text_box_height, core.window_width - core.icon * (view'pos (view'last) + 1), text_box_height); + end if; + -- + for index in view loop + ui.draw_icon (view_icon (index), view_text (index), + core.window_width - core.icon * (view'pos (view'last) + 1) + core.icon * view'pos (index), + core.window_height - text_box_height, + view_show (index)); + end loop; + -- + signal_list (core.signal_mode).all; + -- + --~magic.menu (0, 0, true); + --~might.menu (0, 0, true); + -- + chad.draw_alice; + -- + ui.synchronize; + end gameplay; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ begin @@ -144,52 +197,21 @@ begin ------------------------------------------------------------------------------------------ - gameplay: loop + introduction_loop: loop core.synchronize; -- - exit when core.engine_active = false; - -- - if not view_list (status_preview_panel) then - side_panel := 0; - else - side_panel := core.window_width / 4; - end if; - -- - preview_width := core.window_width - side_panel; - preview_height := core.window_height - text_box_height; - text_box_height := 32; - -- - world.draw; - -- - if view_list (map_preview_panel) then - ui.draw_menu (0, 0, preview_width, preview_height); - end if; - -- - if view_list (status_preview_panel) then - ui.draw_tiny_menu (preview_width, 0, side_panel, preview_height); - ui.draw_state_box (preview_width + 32, 32); - end if; - -- - if view_list (text_box_panel) then - ui.draw_help_box (0, core.window_height - text_box_height, core.window_width - core.icon * (view'pos (view'last) + 1), text_box_height); - end if; - -- - for index in view loop - ui.draw_icon (view_icon (index), view_text (index), - core.window_width - core.icon * (view'pos (view'last) + 1) + core.icon * view'pos (index), - core.window_height - text_box_height, - view_show (index)); - end loop; - -- - signal_list (core.signal_code'val (core.signal_mode)).all; + exit when core.signal_code'pos (core.signal_mode) = core.signal_code'pos (core.signal_space); -- - --~magic.menu (0, 0, true); - --~might.menu (0, 0, true); + introduction; + end loop introduction_loop; + + gameplay_loop: loop + core.synchronize; -- - chad.draw_alice; + exit when core.engine_active = false; -- - ui.synchronize; - end loop gameplay; + gameplay; + end loop gameplay_loop; ------------------------------------------------------------------------------------------ diff --git a/source/ui.adb b/source/ui.adb index 976ccba..3de09de 100644 --- a/source/ui.adb +++ b/source/ui.adb @@ -229,7 +229,7 @@ package body ui is procedure synchronize is begin for index in 0 .. structure_count - 1 loop - if core.signal_mode = core.signal_code'pos (structure_array (index).toggle) then + if core.signal_code'pos (core.signal_mode) = core.signal_code'pos (structure_array (index).toggle) then structure_array (index).show := (if structure_array (index).show then false else true); end if; --