diff --git a/source/core.adb b/source/core.adb index fd7cd35..a3ef4ee 100644 --- a/source/core.adb +++ b/source/core.adb @@ -8,11 +8,12 @@ package body core is type colour is range 0 .. 2 ** 32 - 1; -- Quick fix... - type rectangle is record x, y, width, height : integer; end record; + type rectangle is record x, y, width, height : float; end record with convention => c_pass_by_copy; + type fector is record x, y : float; end record with convention => c_pass_by_copy; -- Fucking abomination... - type texture_data is record id : natural; width, height, mipmaps, format : integer; end record; - type sound_data is record buffer, processor : integer; sampleRate, sampleSize, channels, frameCount : natural; end record; - type font_data is record baseSize, glyphCount, glyphPadding : integer; id : texture_data; recs, glyphs : integer; end record; + type texture_data is record id : natural; width, height, mipmaps, format : integer; end record with convention => c_pass_by_copy; + type sound_data is record buffer, processor : integer; sampleRate, sampleSize, channels, frameCount : natural; end record with convention => c_pass_by_copy; + type font_data is record baseSize, glyphCount, glyphPadding : integer; id : texture_data; recs, glyphs : integer; end record with convention => c_pass_by_copy; -- procedure initialize_video (width, height : in integer; title : in string) with import => true, convention => c, external_name => "InitWindow"; procedure initialize_audio with import => true, convention => c, external_name => "InitAudioDevice"; @@ -22,7 +23,7 @@ package body core is procedure deinitialize_frame with import => true, convention => c, external_name => "EndDrawing"; -- procedure error_callback (callback : in integer) with import => true, convention => c, external_name => "SetTraceLogLevel"; - procedure clear_frame (colour : in integer) with import => true, convention => c, external_name => "ClearBackground"; + procedure clear_frame (pallete : in colour) with import => true, convention => c, external_name => "ClearBackground"; procedure limit_framerate (framerate : in integer) with import => true, convention => c, external_name => "SetTargetFPS"; function queue_framerate return float with import => true, convention => c, external_name => "GetFPS"; function close_callback return integer with import => true, convention => c, external_name => "WindowShouldClose"; @@ -46,8 +47,8 @@ package body core is procedure play_sound (data : in sound_data) with import => true, convention => c, external_name => "PlaySound"; procedure stop_sound (data : in sound_data) with import => true, convention => c, external_name => "StopSound"; -- What the fuck... - procedure draw_texture (data : in texture_data; s, d : in rectangle; o : in vector; rotation : in float; tint : in colour) with import => true, convention => c, external_name => "DrawTexturePro"; - procedure draw_string (data : in font_data; text : in string; p, o : in vector; r, t, s : in float; tint : in colour) with import => true, convention => c, external_name => "DrawTextPro"; + procedure draw_texture (data : in texture_data; s, d : in rectangle; o : in fector; rotation : in float; tint : in colour) with import => true, convention => c, external_name => "DrawTexturePro"; + procedure draw_string (data : in font_data; text : in string; p, o : in fector; r, t, s : in float; tint : in colour) with import => true, convention => c, external_name => "DrawTextPro"; procedure draw_vector (x1, y1, x2, y2 : in integer; tint : in colour) with import => true, convention => c, external_name => "DrawLine"; -- Please... function get_random_value (minimum, maximum : in integer) return integer with import => true, convention => c, external_name => "GetRandomValue"; @@ -444,14 +445,15 @@ package body core is procedure render_sprite (sprite, x, y, u, v, width, height : in integer) is begin - draw_texture (texture_array (sprite), (u, v, width, height), (x, y, abs width, abs height), (0, 0), 0.0, 16#FFFFFFFF#); + draw_texture (texture_array (sprite), (float (u), float (v), float (width), float (height)), + (float (x), float (y), float (abs width), float (abs height)), (0.0, 0.0), 0.0, 16#FFFFFFFF#); end render_sprite; ------------------------------------------------------------------------------------------ procedure render_string (text : in string; x, y, colour, index, size, pad : in integer) is begin - draw_string (font_array (index), text, ((32 - size) / 2 + x, (32 - size) / 2 + y), (0, 0), 0.0, float (size), float (pad), 16#FFFFFFFF#); + draw_string (font_array (index), text, (float ((32 - size) / 2 + x), float ((32 - size) / 2 + y)), (0.0, 0.0), 0.0, float (size), float (pad), 16#FFFFFFFF#); end render_string; ------------------------------------------------------------------------------------------ @@ -470,7 +472,7 @@ package body core is begin engine_active := true; texture_array := new texture_data_array (0 .. 1600); - sound_array := new sound_data_array (0 .. 2); + sound_array := new sound_data_array (0 .. 4); font_array := new font_data_array (0 .. 4); -- error_callback (7); @@ -549,7 +551,7 @@ package body core is -- initialize_frame; -- - clear_frame (16#506070FF#); + clear_frame (16#FF706050#); end synchronize; ------------------------------------------------------------------------------------------ diff --git a/source/main.adb b/source/main.adb index 376677c..e4e1579 100644 --- a/source/main.adb +++ b/source/main.adb @@ -104,18 +104,18 @@ begin core.play_song (core.import_song (core.c_string ("./song/main_menu.ogg"))); - --~attribute.configure; - --~skill.configure; - --~resource.configure; - --~might.configure; - --~magic.configure; - --~item.configure; - --~unit.configure; - --~construction.configure; - --~chad.configure; - --~world.configure; + attribute.configure; + skill.configure; + resource.configure; + might.configure; + magic.configure; + item.configure; + unit.configure; + construction.configure; + chad.configure; + world.configure; - --~world.make (world.swamp, 180, 140); + world.make (world.swamp, 180, 140); preview_width := core.window_width - side_panel; preview_height := core.window_height; @@ -129,25 +129,28 @@ begin -- exit when core.engine_active = false; -- - --~if core.cursor_mode = 3 then ui.active := ui.default; else ui.active := ui.steam; end if; + if core.cursor_mode = 3 then ui.active := ui.default; else ui.active := ui.steam; end if; + -- + core.draw (core.hexagon_fill_sprite, 0, 0); + core.draw (core.hexagon_grid_sprite, 0, 0); -- core.camera.x := core.clip (core.camera.x, 0, world.map.width - preview_width / core.base); core.camera.y := core.clip (core.camera.y, 0, world.map.height - preview_height / core.base); -- - --~world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g)); + world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g)); -- --~core.draw_central_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y); --~core.draw_squared_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y); --~core.draw_hexagon_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y); -- - --~ui.draw_menu (0, 0, preview_width, preview_height - 32, false); - --~ui.draw_tiny_menu (preview_width, 0, side_panel, preview_height - 32, true); - --~-- - --~ui.draw_state_box (preview_width + 32, 32); + ui.draw_menu (0, 0, preview_width, preview_height - 32, false); + ui.draw_tiny_menu (preview_width, 0, side_panel, preview_height - 32, true); + -- + ui.draw_state_box (preview_width + 32, 32); -- signal_list (core.signal_code'val (core.signal_mode)).all; -- - --~menu_render; + menu_render; -- ui.draw_text_box (0, core.window_height - 32, core.window_width, 32); end loop gameplay;