From aa3f77d736cf5f6b701a8b9c80f35f18e347288b Mon Sep 17 00:00:00 2001 From: Jordan O'Leary Date: Thu, 23 Mar 2023 12:18:15 -0400 Subject: [PATCH 1/2] add example "sprite_anim" --- build.zig | 5 ++ examples/textures/sprite_anim.zig | 91 ++++++++++++++++++++++++++++++ resources/textures/scarfy.png | Bin 0 -> 10394 bytes 3 files changed, 96 insertions(+) create mode 100644 examples/textures/sprite_anim.zig create mode 100644 resources/textures/scarfy.png diff --git a/build.zig b/build.zig index 0799d55..e65c6f4 100755 --- a/build.zig +++ b/build.zig @@ -50,6 +50,11 @@ pub fn build(b: *Builder) void { .path = "examples/core/2d_camera.zig", .desc = "Shows the functionality of a 2D camera", }, + .{ + .name = "sprite_anim", + .path = "examples/textures/sprite_anim.zig", + .desc = "Animate a sprite", + }, // .{ // .name = "models_loading", // .path = "examples/models/models_loading.zig", diff --git a/examples/textures/sprite_anim.zig b/examples/textures/sprite_anim.zig new file mode 100644 index 0000000..a4e391e --- /dev/null +++ b/examples/textures/sprite_anim.zig @@ -0,0 +1,91 @@ +// Port of https://github.com/raysan5/raylib/blob/master/examples/textures/textures_sprite_anim.c to zig + +const std = @import("std"); +const rl = @import("raylib"); + +const MAX_FRAME_SPEED = 15; +const MIN_FRAME_SPEED = 1; + +pub fn main() anyerror!void { + // Initialization + //-------------------------------------------------------------------------------------- + const screenWidth = 800; + const screenHeight = 450; + + rl.InitAudioDevice(); // Initialize audio device + rl.InitWindow(screenWidth, screenHeight, "raylib [texture] example - sprite anim"); + + // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) + const scarfy: rl.Texture2D = rl.LoadTexture("resources/textures/scarfy.png"); // Texture loading + + const position = rl.Vector2{ .x = 350.0, .y = 280.0 }; + var frameRec = rl.Rectangle{ .x = 0.0, .y = 0.0, .width = @intToFloat(f32, @divFloor(scarfy.width,6)), .height = @intToFloat(f32, scarfy.height) }; + var currentFrame:u8 = 0; + + var framesCounter:u8 = 0; + var framesSpeed:u8 = 8; // Number of spritesheet frames shown by second + + rl.SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!rl.WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + framesCounter += 1; + + if (framesCounter >= (60/framesSpeed)) + { + framesCounter = 0; + currentFrame += 1; + + if (currentFrame > 5) currentFrame = 0; + + frameRec.x = @intToFloat(f32,currentFrame)*@intToFloat(f32,@divFloor(scarfy.width,6)); + } + + // Control frames speed + if (rl.IsKeyPressed(rl.KeyboardKey.KEY_RIGHT)) {framesSpeed+=1;} + else if (rl.IsKeyPressed(rl.KeyboardKey.KEY_LEFT)) {framesSpeed-=1;} + + if (framesSpeed > MAX_FRAME_SPEED) {framesSpeed = MAX_FRAME_SPEED;} + else if (framesSpeed < MIN_FRAME_SPEED) {framesSpeed = MIN_FRAME_SPEED;} + + + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + rl.BeginDrawing(); + + rl.ClearBackground(rl.RAYWHITE); + + rl.DrawTexture(scarfy, 15, 40, rl.WHITE); + rl.DrawRectangleLines(15, 40, scarfy.width, scarfy.height, rl.LIME); + rl.DrawRectangleLines(15 + @floatToInt(i32,frameRec.x), 40 + @floatToInt(i32, frameRec.y), @floatToInt(i32,frameRec.width), @floatToInt(i32,frameRec.height), rl.RED); + + rl.DrawText("FRAME SPEED: ", 165, 210, 10, rl.DARKGRAY); + rl.DrawText(rl.TextFormat("%02i FPS", framesSpeed), 575, 210, 10, rl.DARKGRAY); + rl.DrawText("PRESS RIGHT/LEFT KEYS to CHANGE SPEED!", 290, 240, 10, rl.DARKGRAY); + + for ([_]u32{0} ** MAX_FRAME_SPEED) |_, i| { + if (i < framesSpeed) {rl.DrawRectangle(250 + 21*@intCast(c_int, i), 205, 20, 20, rl.RED);} + rl.DrawRectangleLines(250 + 21*@intCast(c_int, i), 205, 20, 20, rl.MAROON); + } + + rl.DrawTextureRec(scarfy, frameRec, position, rl.WHITE); // Draw part of the texture + + rl.DrawText("(c) Scarfy sprite by Eiden Marsal", screenWidth - 200, screenHeight - 20, 10, rl.GRAY); + + rl.EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + rl.UnloadTexture(scarfy); // Texture unloading + + rl.CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- +} diff --git a/resources/textures/scarfy.png b/resources/textures/scarfy.png new file mode 100644 index 0000000000000000000000000000000000000000..be3b83d0e7f523e2cf80da19e274a8479e33fe13 GIT binary patch literal 10394 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 literal 0 HcmV?d00001 From 552e5ad8006be750c649a7032c72e6ca9025db8c Mon Sep 17 00:00:00 2001 From: Jordan O'Leary Date: Sat, 25 Mar 2023 17:03:40 -0400 Subject: [PATCH 2/2] src: Resolve merge conflict --- build.zig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.zig b/build.zig index e65c6f4..e3f5408 100755 --- a/build.zig +++ b/build.zig @@ -55,6 +55,11 @@ pub fn build(b: *Builder) void { .path = "examples/textures/sprite_anim.zig", .desc = "Animate a sprite", }, + .{ + .name = "texture_outline", + .path = "examples/shaders/texture_outline.zig", + .desc = "Uses a shader to create an outline around a sprite", + } // .{ // .name = "models_loading", // .path = "examples/models/models_loading.zig",