diff options
Diffstat (limited to 'code/main2.felan')
-rw-r--r-- | code/main2.felan | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/code/main2.felan b/code/main2.felan new file mode 100644 index 0000000..ffa3a5b --- /dev/null +++ b/code/main2.felan @@ -0,0 +1,87 @@ +@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; +} |