|
- -- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
- --
- -- GNU General Public Licence (version 3 or later)
-
- with ada.text_io, ada.strings.unbounded, interfaces.c, ray;
- use ada.text_io, ada.strings.unbounded, interfaces.c, ray;
-
- package core is
-
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
- type echo_status is (
- failure, warning, success, comment, import, export
- );
-
- type cursor_code is (
- cursor_none, cursor_left, cursor_right, cursor_middle
- );
-
- type signal_code is (
- signal_none, signal_space, signal_0, signal_1, signal_2, signal_3,
- signal_4, signal_5, signal_6, signal_7, signal_8, signal_9,
- signal_a, signal_b, signal_c, signal_d, signal_e, signal_f,
- signal_g, signal_h, signal_i, signal_j, signal_k, signal_l,
- signal_m, signal_n, signal_o, signal_p, signal_q, signal_r,
- signal_s, signal_t, signal_u, signal_v, signal_w, signal_x,
- signal_y, signal_z, signal_grave, signal_escape, signal_enter, signal_tab,
- signal_backspace, signal_right, signal_left, signal_down, signal_up, signal_kp_0,
- signal_kp_1, signal_kp_2, signal_kp_3, signal_kp_4, signal_kp_5, signal_kp_6,
- signal_kp_7, signal_kp_8, signal_kp_9, signal_kp_subtract, signal_kp_add, signal_left_shift,
- signal_left_control
- );
-
- type animation is (
- idle, walk, melee, shoot, wounded, dead
- );
-
- ------------------------------------------------------------------------------------------
-
- type colour_range is range 0 .. 2 ** 8 - 1;
-
- for colour_range'size use 8;
-
- type colour is record r, g, b, a : colour_range; end record;
-
- subtype short_string is string (1 .. 24);
- subtype long_string is string (1 .. 72);
-
- type pointer is access procedure;
-
- type vector is record x, y : integer; end record;
- type sprite is record index, width, height, frames, states : integer; end record;
- type font is record index, scale, space : integer; end record;
- type song is record index : integer; end record;
-
- type point is record
- value, limit : natural;
- end record;
-
- type string_box_data is record
- data : access string := null;
- text : unbounded_string := null_unbounded_string;
- size : vector := (0, 0);
- end record;
-
- ------------------------------------------------------------------------------------------
-
- folder : constant string := ".";
-
- icon : constant natural := 32;
- base : constant natural := 16;
- gameplay_framerate : constant natural := 60;
- animation_framerate : constant natural := 4;
-
- echo_mark : constant array (echo_status) of boolean := (
- failure => true,
- warning => true,
- success => true,
- comment => true,
- import => true,
- export => true
- );
-
- engine_active : boolean := false;
-
- cursor : vector := (0, 0);
- camera : vector := (0, 0);
- cursor_mode : cursor_code := cursor_none;
- signal_mode : signal_code := signal_none;
- framerate : integer := 0;
- global_time : natural := 0;
- gameplay_time : natural := 0;
- animation_time : natural := 0;
-
- wheel : float := 0.0;
-
- zoom : natural := 1;
-
- help_box : string_box_data;
- text_box : string_box_data;
-
- global_mapshot : ray.image;
-
- ------------------------------------------------------------------------------------------
-
- function "=" (a, b : in signal_code) return boolean;
- function "=" (a, b : in cursor_code) return boolean;
- function "/" (a, b : in signal_code) return boolean;
- function "/" (a, b : in cursor_code) return boolean;
-
- function "+" (data : in point; modifier : in natural) return point;
- function "-" (data : in point; modifier : in natural) return point;
- function "*" (data : in point; modifier : in natural) return point;
- function "/" (data : in point; modifier : in natural) return point;
-
- procedure echo ( status : in echo_status; text : in string);
- procedure echo_when (condition : in boolean; status : in echo_status; text : in string);
-
- procedure dash;
- procedure semi_dash;
-
- function c_string (ada_string : in string) return string;
-
- function random (minimum, maximum : in integer) return integer;
- function clip (value, minimum, maximum : in integer) return integer;
-
- function lowercase (text : in string) return string;
-
- function window_width return integer;
- function window_height return integer;
-
- function center_x (object : in integer) return integer;
- function center_y (object : in integer) return integer;
-
- function cursor_inside (x, y, width, height : in integer) return boolean;
-
- function import_sprite (file_path : in string; frames, states : in integer) return sprite;
- function import_font (file_path : in string; scale, space : in integer) return font;
- function import_song (file_path : in string) return song;
-
- procedure import_text (data : in out string_box_data; file_path : in string);
-
- procedure create_image (width, height : in integer);
- procedure render_image (data : in sprite; x, y, u, v, width, height : in integer);
- procedure export_image (file_path : in string);
-
- procedure draw (data : in sprite := (others => 0);
- x : in integer := 0;
- y : in integer := 0;
- u : in integer := 0;
- v : in integer := 0;
- width : in integer := 0;
- height : in integer := 0;
- state : in animation := idle;
- factor : in integer := zoom;
- tint : in colour := (others => 255));
-
- procedure draw_horizontally (data : in sprite; x, y, width, factor : in integer; tint : in colour := (others => 255));
- procedure draw_vertically (data : in sprite; x, y, height, factor : in integer; tint : in colour := (others => 255));
-
- procedure write (text : in string := "";
- x : in integer := 0;
- y : in integer := 0;
- tint : in colour := (others => 255);
- size : in integer := 0;
- data : in font := (others => 0));
-
- procedure play (index : in integer);
- procedure stop (index : in integer);
-
- procedure overlay;
-
- function read_help_box return string;
- function read_text_box return string;
-
- procedure write_help_box (text : in string);
- procedure write_text_box (text : in string);
-
- procedure increment (value : in out integer);
- procedure decrement (value : in out integer);
-
- procedure idle_skip;
- procedure move_camera_up;
- procedure move_camera_down;
- procedure move_camera_left;
- procedure move_camera_right;
-
- procedure toggle_fullscreen;
-
- procedure initialize;
- procedure deinitialize;
- procedure synchronize;
-
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
- end core;
|