Added world drawing clips...

This commit is contained in:
Ognjen Milan Robovic 2024-02-16 07:53:36 -05:00
parent f570df92d5
commit af9227f365
4 changed files with 53 additions and 24 deletions

View File

@ -31,16 +31,16 @@ package body core is
procedure draw_state_box (x, y : in integer) is
begin
render_string (c_string ("Cursor X :" & integer'image (cursor_x)), x, y + 0, 16#CCCCCC#, false);
render_string (c_string ("Cursor Y :" & integer'image (cursor_y)), x, y + 32, 16#CCCCCC#, false);
render_string (c_string ("Cursor Mode :" & integer'image (cursor_mode)), x, y + 64, 16#CCCCCC#, false);
render_string (c_string ("Signal Code :" & signal_code'image (signal_code'val (signal_mode))), x, y + 96, 16#CCCCCC#, false);
render_string (c_string ("Camera X :" & integer'image (camera.x)), x, y + 128, 16#CCCCCC#, false);
render_string (c_string ("Camera Y :" & integer'image (camera.y)), x, y + 160, 16#CCCCCC#, false);
render_string (c_string ("Global Time :" & integer'image (global_time)), x, y + 192, 16#CCCCCC#, false);
render_string (c_string ("Gameplay Time :" & integer'image (gameplay_time)), x, y + 224, 16#CCCCCC#, false);
render_string (c_string ("Animation Time :" & integer'image (animation_time)), x, y + 256, 16#CCCCCC#, false);
render_string (c_string ("Framerate :" & integer'image (framerate)), x, y + 288, 16#CCCCCC#, false);
render_string (c_string ("Cursor X :" & integer'image (cursor_x)), x, y + 0, 16#CCCCCC#, true);
render_string (c_string ("Cursor Y :" & integer'image (cursor_y)), x, y + 32, 16#CCCCCC#, true);
render_string (c_string ("Cursor Mode :" & integer'image (cursor_mode)), x, y + 64, 16#CCCCCC#, true);
render_string (c_string ("Signal Code :" & signal_code'image (signal_code'val (signal_mode))), x, y + 96, 16#CCCCCC#, true);
render_string (c_string ("Camera X :" & integer'image (camera.x)), x, y + 128, 16#CCCCCC#, true);
render_string (c_string ("Camera Y :" & integer'image (camera.y)), x, y + 160, 16#CCCCCC#, true);
render_string (c_string ("Global Time :" & integer'image (global_time)), x, y + 192, 16#CCCCCC#, true);
render_string (c_string ("Gameplay Time :" & integer'image (gameplay_time)), x, y + 224, 16#CCCCCC#, true);
render_string (c_string ("Animation Time :" & integer'image (animation_time)), x, y + 256, 16#CCCCCC#, true);
render_string (c_string ("Framerate :" & integer'image (framerate)), x, y + 288, 16#CCCCCC#, true);
end draw_state_box;
------------------------------------------------------------------------------------------

View File

@ -35,7 +35,7 @@ begin
core.fairy_synchronize (6); -- CALLING SUBROUTINE DEFINED IN FORTRAN
world.make (world.rough, 80, 40);
world.make (world.swamp, 80, 40);
gameplay: loop
exit when core.engine_active = false;
@ -92,9 +92,9 @@ begin
--~for this in magic.blizzard .. magic.winter_circle loop magic.draw (this, 112 * (magic.codex'pos (this) - magic.codex'pos (magic.time_statis)) - 60, 112 * 6 + 64); end loop;
--
--~for index in item.codex loop item.draw (index, 32 * (item.codex'pos (index) / 10) + 32, 32 * (item.codex'pos (index) mod 10) + 32); end loop;
for index in attribute.codex loop attribute.draw (index, 32 * attribute.codex'pos (index) + 64, 64); end loop;
for index in resource.codex loop resource.draw (index, 32 * resource.codex'pos (index) + 64, 96); end loop;
for index in skill.codex loop skill.draw (index, 32 * skill.codex'pos (index) + 64, 128); end loop;
--~for index in attribute.codex loop attribute.draw (index, 32 * attribute.codex'pos (index) + 64, 64); end loop;
--~for index in resource.codex loop resource.draw (index, 32 * resource.codex'pos (index) + 64, 96); end loop;
--~for index in skill.codex loop skill.draw (index, 32 * skill.codex'pos (index) + 64, 128); end loop;
--
core.draw_state_box (1352, 32);
end loop gameplay;

View File

@ -116,6 +116,7 @@ extern int syntax_select (char * string, int * length);
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
static int file_list_active = 0;
static int file_list_count = 0;

View File

@ -41,6 +41,9 @@ package body world is
limit : constant limit_array := (29, 64, 70, 94, 51, 94);
landmark_limit : constant integer := 140;
construction_limit : constant integer := 10;
------------------------------------------------------------------------------------------
procedure configure is
@ -70,8 +73,8 @@ package body world is
map.width := width;
map.height := height;
map.block := new block_array (0 .. width - 1, 0 .. height - 1);
map.landmark := new entity_array (0 .. 24);
map.construction := new entity_array (0 .. 11);
map.landmark := new entity_array (0 .. landmark_limit);
map.construction := new entity_array (0 .. construction_limit);
--
for x in 0 .. width - 1
loop
@ -81,14 +84,14 @@ package body world is
end loop;
end loop;
--
for object in 0 .. 24
for object in 0 .. landmark_limit
loop
map.landmark (object).index := core.random_integer (0, limit (index));
map.landmark (object).x := core.base * core.random_integer (1, map.width - 1);
map.landmark (object).y := core.base * core.random_integer (1, map.height - 1);
end loop;
--
for object in 0 .. 11
for object in 0 .. construction_limit
loop
map.construction (object).index := core.random_integer (0, construction.codex'pos (construction.codex'last));
map.construction (object).x := core.base * core.random_integer (1, map.width - 1);
@ -99,9 +102,9 @@ package body world is
------------------------------------------------------------------------------------------
procedure draw (x, y, width, height : in integer; show_grid : in boolean) is
crop_width : constant integer := width mod core.base;
crop_height : constant integer := height mod core.base;
u, v : integer;
crop_width : integer := width mod core.base;
crop_height : integer := height mod core.base;
u, v : integer;
begin
for move_y in 0 .. height / core.base - 1
loop
@ -132,9 +135,27 @@ package body world is
--
core.crop (blocks, x + width - crop_width, y + height - crop_height, u, v, crop_width, crop_height);
--
for object in 0 .. 24
for object in 0 .. landmark_limit
loop
core.draw (landmarks (map.terrain) (map.landmark (object).index), map.landmark (object).x, map.landmark (object).y);
if map.landmark (object).x > width
or map.landmark (object).y > height then
goto skip_drawing_out_of_view_landmark;
end if;
--
crop_width := landmarks (map.terrain) (map.landmark (object).index).width;
crop_height := landmarks (map.terrain) (map.landmark (object).index).height;
--
if (map.landmark (object).x + landmarks (map.terrain) (map.landmark (object).index).width) > width then
crop_width := crop_width - (map.landmark (object).x + landmarks (map.terrain) (map.landmark (object).index).width) mod width;
end if;
--
if (map.landmark (object).y + landmarks (map.terrain) (map.landmark (object).index).height) > height then
crop_height := crop_height - (map.landmark (object).y + landmarks (map.terrain) (map.landmark (object).index).height) mod height;
end if;
--
core.crop (landmarks (map.terrain) (map.landmark (object).index), x + map.landmark (object).x, y + map.landmark (object).y, 0, 0, crop_width, crop_height);
--
<<skip_drawing_out_of_view_landmark>>
end loop;
--
if show_grid then
@ -142,9 +163,16 @@ package body world is
core.hexagonal_grid (x, y, width, height, true);
end if;
--
for object in 0 .. 11
for object in 0 .. construction_limit
loop
if map.construction (object).x > width
or map.construction (object).y > height then
goto skip_drawing_out_of_view_construction;
end if;
--
construction.draw (construction.codex'val (map.construction (object).index), map.construction (object).x, map.construction (object).y);
--
<<skip_drawing_out_of_view_construction>>
end loop;
end draw;