2024-02-15 21:03:09 -05:00
with ada.text_io ;
use ada.text_io ;
2024-02-22 03:29:04 -05:00
with core , ui , effect , attribute , skill , resource , faction , might , magic , item , unit , construction , chad , world ;
2024-02-15 21:03:09 -05:00
procedure main is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2024-02-18 09:02:33 -05:00
side_panel : integer := 480 ;
2024-02-22 02:48:25 -05:00
preview_x : integer := 24 ;
preview_y : integer := 24 ;
preview_width : integer := 0 ;
preview_height : integer := 0 ;
2024-02-18 09:02:33 -05:00
2024-02-22 06:51:01 -05:00
player : chad . information := chad . trait ( chad . ognjen ) ;
2024-02-24 14:51:53 -05:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2024-02-15 21:03:09 -05:00
2024-02-24 14:51:53 -05:00
begin
2024-02-22 06:16:09 -05:00
2024-03-11 08:42:25 -04:00
core . dash ;
core . echo ( core . comment , "Copyright (C) 2024 -- Ognjen 'xolatile' Milan Robovic" ) ;
core . echo ( core . comment , "Version -- 1.0.0" ) ;
core . echo ( core . comment , "License -- GNU/GPLv3+" ) ;
core . echo ( core . comment , "Xhads is free software, you can redistribute it and modify it under the terms of the GNU General Public License by Free Software Foundation." ) ;
core . dash ;
2024-02-16 05:52:11 -05:00
core . configure ;
2024-02-15 21:03:09 -05:00
ui . configure ;
2024-03-11 14:37:26 -04:00
2024-03-14 06:54:53 -04:00
core . fonts ( 1 ) := core . load_font ( "./font/pixel.ttf" , 12 , 2 ) ;
core . fonts ( 2 ) := core . load_font ( "./font/ferrum.ttf" , 22 , 2 ) ;
core . fonts ( 3 ) := core . load_font ( "./font/gothic.ttf" , 22 , 2 ) ;
core . fonts ( 4 ) := core . load_font ( "./font/unitblock.ttf" , 22 , 2 ) ;
core . fonts ( 5 ) := core . load_font ( "./font/tenderness.ttf" , 22 , 2 ) ;
2024-03-14 06:06:22 -04:00
2024-03-13 16:56:59 -04:00
core . play_sound ( core . import_sound ( core . c_string ( "./song/main_menu.ogg" ) ) ) ;
2024-03-11 14:37:26 -04:00
2024-02-16 06:24:49 -05:00
attribute . configure ;
skill . configure ;
resource . configure ;
2024-02-15 21:03:09 -05:00
might . configure ;
magic . configure ;
item . configure ;
unit . configure ;
construction . configure ;
2024-02-22 03:29:04 -05:00
chad . configure ;
2024-02-15 21:03:09 -05:00
world . configure ;
2024-02-24 14:51:53 -05:00
core . ai_synchronize ( 6 ) ;
2024-02-15 21:03:09 -05:00
2024-02-16 07:53:36 -05:00
world . make ( world . swamp , 80 , 40 ) ;
2024-02-15 21:03:09 -05:00
2024-02-24 07:11:29 -05:00
preview_width := core . window_width - side_panel ;
preview_height := core . window_height ;
2024-03-11 08:42:25 -04:00
core . echo ( core . success , "Successfully initialized game data, entering main gameplay loop." ) ;
2024-02-15 21:03:09 -05:00
gameplay : loop
2024-02-16 05:52:11 -05:00
core . synchronize ;
2024-02-15 21:03:09 -05:00
--
2024-02-24 14:51:53 -05:00
exit when core . engine_active = false ;
2024-02-15 21:03:09 -05:00
--
2024-02-24 07:11:29 -05:00
if core . signal_mode = core . signal_code ' pos ( core . signal_a ) then preview_width := preview_width - 60 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_d ) then preview_width := preview_width + 60 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_w ) then preview_height := preview_height - 60 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_s ) then preview_height := preview_height + 60 ; end if ;
2024-02-15 21:03:09 -05:00
--
if core . signal_mode = core . signal_code ' pos ( core . signal_left ) then core . camera . x := core . camera . x - 1 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_right ) then core . camera . x := core . camera . x + 1 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_up ) then core . camera . y := core . camera . y - 1 ; end if ;
if core . signal_mode = core . signal_code ' pos ( core . signal_down ) then core . camera . y := core . camera . y + 1 ; end if ;
2024-02-20 10:26:49 -05:00
--
2024-03-13 10:44:49 -04:00
if core . cursor_mode = 3 then ui . active := ui . default ; else ui . active := ui . steam ; end if ;
--
2024-02-22 02:48:25 -05:00
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 ) ;
2024-02-20 10:26:49 -05:00
--
world . draw ( preview_x , preview_y , preview_width - 2 * preview_x , preview_height - 2 * preview_y , core . cursor_mode = 2 ) ;
--
2024-02-24 14:51:53 -05:00
--~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);
2024-02-17 18:13:17 -05:00
--
2024-02-24 14:51:53 -05:00
ui . draw_menu ( 0 , 0 , preview_width , preview_height , false ) ;
ui . draw_tiny_menu ( preview_width , 0 , side_panel , preview_height , true ) ;
2024-02-15 21:03:09 -05:00
--
2024-03-13 10:44:49 -04:00
for this in magic . blow_away . . magic . thunderclap loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . chain_magic_arrow ) ) - 60 , 112 * 0 + 64 ) ; end loop ;
for this in magic . agony_mass . . magic . weakness loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . thunderclap ) ) - 60 , 112 * 1 + 64 ) ; end loop ;
for this in magic . earthquake . . magic . summon_earth_elemental loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . weakness ) ) - 60 , 112 * 2 + 64 ) ; end loop ;
for this in magic . determination_mass . . magic . summon_fire_elemental loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . summon_earth_elemental ) ) - 60 , 112 * 3 + 64 ) ; end loop ;
for this in magic . blindness . . magic . sunburst loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . summon_fire_elemental ) ) - 60 , 112 * 4 + 64 ) ; end loop ;
for this in magic . dispel_magic_mass . . magic . time_statis loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . sunburst ) ) - 60 , 112 * 5 + 64 ) ; end loop ;
for this in magic . blizzard . . magic . winter_circle loop magic . view ( this , 112 * ( magic . codex ' pos ( this ) - magic . codex ' pos ( magic . time_statis ) ) - 60 , 112 * 6 + 64 ) ; end loop ;
2024-02-15 21:03:09 -05:00
--
2024-02-16 06:24:49 -05:00
--~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;
2024-02-16 07:53:36 -05:00
--~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;
2024-02-15 21:03:09 -05:00
--
2024-02-18 09:02:33 -05:00
core . draw_state_box ( preview_width + 32 , 32 ) ;
2024-03-10 16:41:31 -04:00
--
attribute . menu ( 300 , 200 , false ) ;
skill . menu ( 600 , 300 , true ) ;
2024-03-13 16:56:59 -04:00
resource . menu ( 300 , 500 , false ) ;
2024-03-13 18:32:59 -04:00
--~unit.menu (300, 500, true);
2024-03-11 15:35:56 -04:00
--
2024-03-13 14:30:31 -04:00
--~unit.stat (unit.griffin, 0, 0, true);
--~unit.stat (unit.halberdier, 0, 0, true);
--~unit.stat (unit.spirit, 0, 0, true);
--~unit.stat (unit.power_lich, 0, 0, true);
2024-03-11 16:36:42 -04:00
--
2024-03-13 19:34:55 -04:00
magic . menu ( 0 , 0 , true ) ;
2024-03-14 06:06:22 -04:00
--~might.menu (0, 0, true);
2024-03-13 14:07:17 -04:00
--
ui . draw_text_box ( 0 , core . window_height - 32 , core . window_width , 32 ) ;
2024-03-14 06:06:22 -04:00
--
2024-03-14 06:26:50 -04:00
core . write ( "Heyo world!" , 1600 , 700 + 0 , 16#CCCCCC# , core . fonts ( 0 ) ) ;
core . write ( "Nyaa world!" , 1600 , 700 + 32 , 16#CCCCCC# , core . fonts ( 1 ) ) ;
core . write ( "Cyaa world!" , 1600 , 700 + 64 , 16#CCCCCC# , core . fonts ( 2 ) ) ;
core . write ( "Neon world!" , 1600 , 700 + 96 , 16#CCCCCC# , core . fonts ( 3 ) ) ;
core . write ( "Neon world!" , 1600 , 700 + 128 , 16#CCCCCC# , core . fonts ( 4 ) ) ;
2024-03-14 06:54:53 -04:00
core . write ( "Neon world!" , 1600 , 700 + 160 , 16#CCCCCC# , core . fonts ( 5 ) ) ;
2024-03-14 06:26:50 -04:00
core . write ( "Neon world!" , 0 , 0 , 16#FFFFFF# , core . fonts ( 0 ) ) ;
2024-02-15 21:03:09 -05:00
end loop gameplay ;
2024-02-16 09:59:19 -05:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2024-02-15 21:03:09 -05:00
end main ;