Просмотр исходного кода

Changed signal mode to strict enumeration value, have equality hack...

master
Ognjen Milan Robovic 1 неделю назад
Родитель
Сommit
a493ea7d61
4 измененных файлов: 92 добавлений и 70 удалений
  1. +19
    -19
      source/core.adb
  2. +9
    -9
      source/core.ads
  3. +63
    -41
      source/main.adb
  4. +1
    -1
      source/ui.adb

+ 19
- 19
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


+ 9
- 9
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;


+ 63
- 41
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;

------------------------------------------------------------------------------------------



+ 1
- 1
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;
--


Загрузка…
Отмена
Сохранить