------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- Copyright (c) 2023 - Ognjen 'xolatile' Milan Robovic ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -- Xabina is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either -- version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the -- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ with ada.text_io; package body core is ------------------------------------------------------------------------------------------ r : natural := 1; function randomize (minimum : natural; maximum : natural) return natural is begin r := r + 1; return minimum + (r mod maximum); end randomize; procedure screen_delete is begin ada.text_io.put (escape & "[2J"); end screen_delete; procedure screen_offset is begin ada.text_io.put (escape & "[H"); end screen_offset; procedure screen_hide_cursor is begin ada.text_io.put (escape & "[?25l"); end screen_hide_cursor; procedure screen_show_cursor is begin ada.text_io.put (escape & "[?25h"); end screen_show_cursor; procedure screen_new_line is begin ada.text_io.put (carriage_return & line_feed); end screen_new_line; procedure render_character (symbol : character; colour : character; effect : character; y : screen_height; x : screen_width) is begin screen_symbol (y, x) := symbol; screen_colour (y, x) := colour; screen_effect (y, x) := effect; end render_character; procedure render_buffer is format : string (1 .. 12) := escape & "[E;3CmS" & escape & "[0m"; begin screen_offset; for y in screen_height loop for x in screen_width loop format (8) := screen_symbol (y, x); format (6) := screen_colour (y, x); format (3) := screen_effect (y, x); ada.text_io.put (format); end loop; screen_new_line; end loop; end render_buffer; ------------------------------------------------------------------------------------------ end core;