@@ -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 | |||
@@ -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; | |||
@@ -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; | |||
------------------------------------------------------------------------------------------ | |||
@@ -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; | |||
-- | |||