@import("basic.felan"); raylib :: @c_library("/lib/libraylib.so.5.5.0"); InitWindow :: @c_function(raylib,"InitWindow",(i32,i32,*u8)->void); WindowShouldClose :: @c_function(raylib,"WindowShouldClose",()->bool); BeginDrawing :: @c_function(raylib,"BeginDrawing",()->void); EndDrawing :: @c_function(raylib,"EndDrawing",()->void); CloseWindow :: @c_function(raylib,"CloseWindow",()->void); ClearBackground :: @c_function(raylib,"ClearBackground",(Color)->void); DrawText :: @c_function(raylib,"DrawText",(*u8,i32,i32,i32,Color)->void); // void DrawRectangle(int posX, int posY, int width, int height, Color color); DrawRectangle :: @c_function(raylib,"DrawRectangle",(posX:i32,posY:i32,width:i32,height:i32,color:Color)->void); Color :: struct { r:u8; g:u8; b:u8; a:u8; }; main :: ()->void{ b := "raylib [core] example - basic window\0"; c := "Congrats! You created your first window!\0"; str := &b[0]; str2 := &c[0]; screenWidth :i32: 800; screenHeight :i32: 450; a : u8 : 255; b : u8 : 0; WHITE :: color(a,a,a,a); BLACK :: color(@cast(0xff0000ff,u32)); InitWindow(screenWidth,screenHeight,str); rect_posx :i32= 0; rect_posy :i32= 0; dx : i32 = 1; dy : i32 = 1; while !WindowShouldClose() { BeginDrawing(); ClearBackground(WHITE); DrawRectangle(rect_posx,rect_posy,@cast(200,i32),@cast(40,i32),color(@cast(0x00ffff,u32))); DrawText(str2,@cast(190,i32),@cast(200,i32),@cast(20,i32),BLACK); EndDrawing(); rect_posx += dx; rect_posy += dy; /* print(rect_posx); print_char(' '); print(rect_posy); print_char('\n'); */ if rect_posx >= screenWidth { print("hello"); print(dx); print("\n"); dx = @cast(-1,i32); }else if rect_posx < @cast(0,i32) { dx = @cast(1,i32); } if rect_posy >= screenHeight { print("hi"); print(dy); print("\n"); dy = @cast(-@cast(1,i32),i32); }else if rect_posy < @cast(0,i32) { dy = @cast(1,i32); } } CloseWindow(); }; color :: (a:u8,r:u8,g:u8,b:u8)->Color{ c : Color = undefined; c.r = r; c.g = g; c.b = b; c.a = a; return c; }; color :: (value:u32)->Color{ c : Color = undefined; c.r = @cast((value&@cast(0xff000000,u32))>>@cast(6*4,u32),u8); c.g = @cast((value&@cast(0x00ff0000,u32))>>@cast(4*4,u32),u8); c.b = @cast((value&@cast(0x0000ff00,u32))>>@cast(2*4,u32),u8); c.a = @cast((value&@cast(0x000000ff,u32))>>@cast(0*4,u32),u8); return c; }