aboutsummaryrefslogtreecommitdiff
path: root/code/main.felan
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-08-09 06:11:47 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-08-09 06:11:47 +0330
commit12b45f728905863adb2e727d6c9c406374675bea (patch)
treef05a3a9ec2d846e4c94de334e2d42b80c4daae5c /code/main.felan
parent40881a903e00939b647cd85beeacfb8a68b31e6a (diff)
some clean up and attempts to add bbaHEADmaster
Diffstat (limited to 'code/main.felan')
-rw-r--r--code/main.felan168
1 files changed, 9 insertions, 159 deletions
diff --git a/code/main.felan b/code/main.felan
index b8b41ec..1cb89ca 100644
--- a/code/main.felan
+++ b/code/main.felan
@@ -1,169 +1,19 @@
@import("basic.felan");
-raylib :: @c_library("/usr/lib/libraylib.so.5.5.0");
-InitWindow :: @c_function(raylib,"InitWindow",(i32,i32,*u8)->void);
-SetTargetFPS :: @c_function(raylib,"SetTargetFPS",(i32)->void);
-WindowShouldClose :: @c_function(raylib,"WindowShouldClose",()->bool);
-CloseWindow :: @c_function(raylib,"CloseWindow",()->void);
-BeginDrawing :: @c_function(raylib,"BeginDrawing",()->void);
-ClearBackground :: @c_function(raylib,"ClearBackground",(Color)->void);
-EndDrawing :: @c_function(raylib,"EndDrawing",()->void);
-IsKeyPressed :: @c_function(raylib,"IsKeyPressed",(i32)->bool);
-IsGestureDetected :: @c_function(raylib,"IsGestureDetected",(u32)->bool);
-DrawText :: @c_function(raylib,"DrawText",(*u8,i32,i32,i32,Color)->void);
-DrawRectangle :: @c_function(raylib,"DrawRectangle",(i32,i32,i32,i32,Color)->void);
-GetFPS :: @c_function(raylib,"GetFPS",()->i32);
-DrawLine :: @c_function(raylib,"DrawLine",(startPosX:i32,startPosY:i32,endPosX:i32,endPosY:i32,color:Color)->void);
+f :: (a:[]u8)->void{
+ i := 0u64;
-Color :: struct {
- r:u8;
- g:u8;
- b:u8;
- a:u8;
-};
-
-KEY_ENTER :: 257i32;
-
-GESTURE_TAP :: 1u32;
-
-LOGO :: 0;
-TITLE :: 1;
-GAMEPLAY :: 2;
-ENDING :: 3;
-
-SCREEN_WIDTH :: 800i32;
-SCREEN_HEIGHT :: 450i32;
-
-RAYWHITE :: color(245u8,245u8,245u8,255u8);
-LIGHTGRAY :: color(200u8,200u8,200u8,255u8);
-GRAY :: color(130u8,130u8,130u8,255u8);
-GREEN :: color(0u8,228u8,48u8,255u8);
-DARKGREEN :: color(0u8,117u8,44u8,255u8);
-BLUE :: color(0u8,121u8,241u8,255u8);
-DARKBLUE :: color(0u8,82u8,172u8,255u8);
-PURPLE :: color(200u8,122u8,255u8,255u8);
-MAROON :: color(100u8,33u8,55u8,255u8);
-
-main :: () -> void {
- title := "Hello\0";
-
- InitWindow(SCREEN_WIDTH,SCREEN_HEIGHT,title.ptr);
+ while i < a.length {
+ c := a[i];
+ if c == '{' {
- currentScreen := LOGO;
-
- framesCounter := 0i32;
-
- TARGET_FPS :: 144i32;
- SetTargetFPS(TARGET_FPS);
-
- while(!WindowShouldClose()){
- if currentScreen == LOGO {
- framesCounter += 1i32;
- if framesCounter > TARGET_FPS * 2i32 {
- currentScreen = TITLE;
- }
- } else if currentScreen == TITLE {
- if IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP) {
- currentScreen = GAMEPLAY;
- }
- } else if currentScreen == GAMEPLAY {
- if IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP) {
- currentScreen = ENDING;
- }
- } else if currentScreen == ENDING {
- if IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP) {
- currentScreen = TITLE;
- }
}
-
- BeginDrawing();
-
- if currentScreen == LOGO {
- drawLogo();
- } else if currentScreen == TITLE {
- ClearBackground(GREEN);
- title := "TITLE SCREEN\0";
- DrawText(title.ptr,20i32,20i32,40i32,DARKGREEN);
- text := "PRESS ENTER or TAP to JUMP to GAMEPLAY SCREEN\0";
- DrawText(text.ptr,120i32,220i32,20i32,DARKGREEN);
- } else if currentScreen == GAMEPLAY {
- drawGamePlay();
- } else if currentScreen == ENDING {
- ClearBackground(BLUE);
- title := "ENDING SCREEN\0";
- DrawText(title.ptr,20i32,20i32,40i32,DARKBLUE);
- text := "PRESS ENTER or TAP to RETURN to TITLE SCREEN\0";
- DrawText(text.ptr,120i32,220i32,20i32,DARKBLUE);
- } else {
- println(-1);
- return;
- }
-
- EndDrawing();
+ print_char(a[i]);
+ i += 1u64;
}
-
- CloseWindow();
};
-drawLogo :: () -> void {
- ClearBackground(RAYWHITE);
- title := "LOGO SCREEN\0";
- DrawText(title.ptr,20i32,20i32,40i32,LIGHTGRAY);
- text := "WAIT for 2 SECONDS...\0";
- DrawText(text.ptr,290i32,220i32,20i32,LIGHTGRAY);
-};
-
-x := 0i32;
-y := 0i32;
-
-dx := 1i32;
-dy := 1i32;
-
-RECT_SIZE :: 40i32;
-
-drawGamePlay :: () -> void {
- ClearBackground(PURPLE);
- title := "GAMEPLAY SCREEN\0";
- DrawText(title.ptr,20i32,20i32,40i32,MAROON);
- text := "PRESS ENTER or TAP to JUMP to ENDING SCREEN\0";
- DrawText(text.ptr,130i32,220i32,20i32,MAROON);
- DrawRectangle(x,y,RECT_SIZE,RECT_SIZE,MAROON);
- DrawLine(SCREEN_WIDTH/2i32,0i32,SCREEN_WIDTH/2i32,SCREEN_HEIGHT,MAROON);
-
- x += dx;
- y += dy;
- if x <= 0i32 {
- dx = 1i32;
- } else if x+RECT_SIZE >= SCREEN_WIDTH {
- dx = -1i32;
- }
-
- if y <= 0i32 {
- dy = 1i32;
- } else if y+RECT_SIZE >= SCREEN_HEIGHT {
- dy = -1i32;
- }
-};
-
-color :: (r:u8,g:u8,b:u8,a:u8)->Color {
- result:Color = undefined;
-
- result.r = r;
- result.g = g;
- result.b = b;
- result.a = a;
-
- return result;
+main :: () -> void {
+ f("Hello {a} How {b}");
};
-
-color :: (value : u32) -> Color {
- result:Color = undefined;
-
- result.r = @cast(value >> @cast(3*8,u32),u8);
- result.g = @cast(value >> @cast(2*8,u32),u8);
- result.b = @cast(value >> @cast(1*8,u32),u8);
- result.a = @cast(value >> @cast(0*8,u32),u8);
-
- return result;
-};