with Raylib; -- File path specified in 'install.sh' script. use Raylib; -- I agree with raysan5 on namespaces being boring. procedure Window is -- This is not Ada tutorial, but brief explanation of my bindings. -- This is not my usual style of programming, following conventions. -- -- C uses null terminated strings, while Ada does not, hence: -- - "Foo" & Character'Val (0) -- - "Bar" & ASCII.NUL -- - To_C_String ("Baz") -- -- This decision was made intentionally to avoid package body. -- If your project uses 10-40 functions and 5-10 structures: -- - Write your own bindings, it's simple and bloat-free. -- - Use someone elses Ada bindings, or run command: -- - $ gcc -c -fdump-ada-spec -C /usr/include/raylib.h -- -- I don't like to use Interfaces.C package unless I have to... function To_C_String ( -- I find this better than Interfaces.C.To_C. Data : String := "" -- Concatenate this however you like... ) return String is -- Or simply use GCC generated bindings. begin return (Data & Character'Val (0)); -- This null terminates string. end To_C_String; begin Open_Window (720, 360, "Heyo Raylib!" & Character'Val (0)); -- -- You can have main loop in several ways, choose what you like: -- - Foo: loop ... exit when ... end loop Foo; -- - loop ... exit when ... end loop; -- - while (not) ... loop (exit when ...) ... end loop; -- Main_Loop: loop exit when Window_Should_Close; -- Begin_Drawing; Clear_Background (Ray_White); -- You can specify all arguments, or use defaults after one point. Draw_Text ("Heyo from Ada." & ASCII.NUL, 4, 4, 32, Black); -- You can explicitly state all arguments and their values. Draw_Text ( Text => To_C_String ("Press Escape key to exit program."), X => 4, Y => 36, Size => 32, Tint => Black ); -- Or at last, you can specify which arguments won't be defaults. Draw_Text ( Text => To_C_String ("You can ignore some arguments."), X => 4, Y => 68 ); -- And naturally, you can align them however you like... End_Drawing; end loop Main_Loop; -- Close_Window; end Window;