180 lines
4.0 KiB
Plaintext
180 lines
4.0 KiB
Plaintext
struct Vec2 {
|
|
x y: f32,
|
|
}
|
|
|
|
struct Rect {
|
|
pos size: Vec2,
|
|
}
|
|
|
|
let CONSTPOS :: .Vec2 {20.0 20.0}
|
|
let CONSTSZ :: .Vec2 {100.0 100.0}
|
|
let CONST :: .Rect {(CONSTPOS) (CONSTSZ)}
|
|
|
|
\ FIXME: LLVM IR geneartion is borked
|
|
\ let CONST :: .Rect { .Vec2 { 20.0 20.0 } .Vec2 { 100.0 100.0 } }
|
|
|
|
struct Color {
|
|
r g b a: u8,
|
|
}
|
|
|
|
let KEY_R :: 82
|
|
|
|
fn InitWindow(w h: i32, title: []u8)
|
|
fn CloseWindow
|
|
fn BeginDrawing
|
|
fn SetTargetFPS(fps: i32)
|
|
fn EndDrawing
|
|
fn DrawFPS(x y: i32)
|
|
fn WindowShouldClose i32
|
|
fn TextSubtext(text: []u8, start end: i32) []u8
|
|
fn IsKeyPressed(key: i32) u1
|
|
|
|
struct Rectangle {
|
|
x y w h: f32,
|
|
}
|
|
|
|
fn ColorToRaylib(c: Color) u32 {
|
|
ret c.a as u32 << 24 as u32 | c.b as u32 << 16 as u32 | c.g as u32 << 8 as u32 | c.r
|
|
}
|
|
|
|
fn ClearBackgroundWrap(c: Color) {
|
|
fn ClearBackground(c: u32)
|
|
ClearBackground (ColorToRaylib c)
|
|
}
|
|
|
|
fn DrawRectangleWrap(x y w h: i32, c: Color) {
|
|
fn DrawRectangle(x y w h: i32, c: u32)
|
|
DrawRectangle x y w h (ColorToRaylib c)
|
|
}
|
|
|
|
fn DrawCircleWrap(x y: i32, r: f32, c: Color) {
|
|
fn DrawCircle(x y: i32, r: f32, c: u32)
|
|
DrawCircle x y r (ColorToRaylib c)
|
|
}
|
|
|
|
fn DrawRectangleRecWrap(r: Rectangle, c: Color) {
|
|
fn DrawRectangleRec(r: Rectangle, c: u32)
|
|
DrawRectangleRec r (ColorToRaylib c)
|
|
}
|
|
|
|
fn DrawTextWrap(text: []u8, x y size: i32, c: Color) {
|
|
fn DrawText(text: []u8, x y size: i32, c: u32)
|
|
DrawText text x y size (ColorToRaylib c)
|
|
}
|
|
|
|
let WHITE :: .Color {255 255 255 255}
|
|
let BLACK :: .Color {0 0 0 255}
|
|
let RED :: .Color {255 0 0 255}
|
|
let BLUE :: .Color {0 0 255 255}
|
|
|
|
InitWindow 800 450 Raylib
|
|
SetTargetFPS 60
|
|
|
|
fn GetScreenWidth i32
|
|
fn GetScreenHeight i32
|
|
|
|
fn DrawRect(rect: Rect, c: Color) {
|
|
DrawRectangleWrap (rect.pos.x as i32) (rect.pos.y as i32) (rect.size.x as i32) (rect.size.y as i32) c
|
|
}
|
|
|
|
let logox := GetScreenWidth / 2 - 128
|
|
let logoy := GetScreenHeight / 2 - 128
|
|
|
|
\ FIXME: Cannot inline
|
|
let fc := 0
|
|
let lc := 0
|
|
let top_side_rec_width := 16
|
|
let left_side_rec_height := 16
|
|
let bottom_side_rec_width := 16
|
|
let right_side_rec_height := 16
|
|
|
|
let state := 0
|
|
let alpha := 1.0
|
|
|
|
for WindowShouldClose == 0 {
|
|
if state == 0 {
|
|
if ++fc == 120 {
|
|
state = 1
|
|
fc = 0
|
|
}
|
|
} elif state == 1 {
|
|
top_side_rec_width = top_side_rec_width + 4
|
|
left_side_rec_height = left_side_rec_height + 4
|
|
|
|
if top_side_rec_width == 256 {
|
|
state = 2
|
|
}
|
|
} elif state == 2 {
|
|
bottom_side_rec_width = bottom_side_rec_width + 4
|
|
right_side_rec_height = right_side_rec_height + 4
|
|
|
|
if bottom_side_rec_width == 256 {
|
|
state = 3
|
|
}
|
|
} elif state == 3 {
|
|
if ++fc / 12 != 0 {
|
|
++lc
|
|
fc = 0
|
|
}
|
|
|
|
if lc >= 10 {
|
|
alpha = alpha - 0.01
|
|
if alpha <= 0.0 {
|
|
alpha = 0.0
|
|
state = 4
|
|
}
|
|
}
|
|
} elif IsKeyPressed(KEY_R) { \
|
|
fc = lc = 0
|
|
|
|
top_side_rec_width = 16
|
|
left_side_rec_height = 16
|
|
bottom_side_rec_width = 16
|
|
right_side_rec_height = 16
|
|
|
|
state = 0
|
|
alpha = 1.0
|
|
}
|
|
|
|
BeginDrawing
|
|
ClearBackgroundWrap WHITE
|
|
DrawFPS 20 20
|
|
|
|
DrawRect CONST RED
|
|
|
|
if state == 0 {
|
|
if (fc/15)%2 != 0 {
|
|
DrawRectangleWrap logox logoy 16 16 BLACK
|
|
}
|
|
} elif state == 1 {
|
|
DrawRectangleWrap logox logoy top_side_rec_width 16 BLACK
|
|
DrawRectangleWrap logox logoy 16 left_side_rec_height BLACK
|
|
} elif state == 2 {
|
|
DrawRectangleWrap logox logoy top_side_rec_width 16 BLACK
|
|
DrawRectangleWrap logox logoy 16 left_side_rec_height BLACK
|
|
|
|
DrawRectangleWrap logox+240 logoy 16 right_side_rec_height BLACK
|
|
DrawRectangleWrap logox logoy+240 bottom_side_rec_width 16 BLACK
|
|
} elif state == 3 {
|
|
let colorw := .Color{255 255 255 (alpha*255.0) as u8}
|
|
let colorb := .Color{0 0 0 (alpha*255.0) as u8}
|
|
\ FIXME: ADD field access assignment
|
|
\color.a = (alpha * 255.0) as u8
|
|
DrawRectangleWrap logox logoy top_side_rec_width 16 colorb
|
|
DrawRectangleWrap logox logoy+16 16 left_side_rec_height-32 colorb
|
|
|
|
DrawRectangleWrap logox+240 logoy+16 16 right_side_rec_height-32 cbolor
|
|
DrawRectangleWrap logox logoy+240 bottom_side_rec_width 16 colorb
|
|
|
|
DrawRectangleWrap GetScreenWidth/2-112 GetScreenHeight/2-112 224 224 colorw
|
|
|
|
DrawTextWrap (TextSubtext raylib 0 lc) GetScreenWidth/2-44 GetScreenHeight/2+48 50 colorb
|
|
} else {
|
|
DrawTextWrap "[R] REPLAY" 340 200 20 BLACK
|
|
}
|
|
|
|
EndDrawing
|
|
}
|
|
CloseWindow
|
|
|