diff --git a/examples/textures/sprite_explosion/boom.wav b/examples/textures/sprite_explosion/boom.wav new file mode 100644 index 0000000..fd18137 Binary files /dev/null and b/examples/textures/sprite_explosion/boom.wav differ diff --git a/examples/textures/sprite_explosion/explosion.png b/examples/textures/sprite_explosion/explosion.png new file mode 100644 index 0000000..6df1cf3 Binary files /dev/null and b/examples/textures/sprite_explosion/explosion.png differ diff --git a/examples/textures/sprite_explosion/main.go b/examples/textures/sprite_explosion/main.go new file mode 100644 index 0000000..1e71291 --- /dev/null +++ b/examples/textures/sprite_explosion/main.go @@ -0,0 +1,82 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +var ( + numFramesPerLine, numLines = 5, 5 +) + +func main() { + screenWidth := int32(1280) + screenHeight := int32(720) + + rl.InitWindow(screenWidth, screenHeight, "raylib [shapes] example - sprite explosion") + + rl.InitAudioDevice() + fxBoom := rl.LoadSound("boom.wav") + explosion := rl.LoadTexture("explosion.png") + + frameW := float32(explosion.Width / int32(numFramesPerLine)) + frameH := float32(explosion.Height / int32(numLines)) + + currentFrame, currentLine := 0, 0 + + frameRec := rl.NewRectangle(0, 0, frameW, frameH) + position := rl.NewVector2(0, 0) + + active := false + framesCount := 0 + + rl.SetTargetFPS(120) + + for !rl.WindowShouldClose() { + + if rl.IsMouseButtonPressed(rl.MouseLeftButton) && !active { + position = rl.GetMousePosition() + active = true + position.X -= frameW / 2 + position.Y -= frameH / 2 + rl.PlaySound(fxBoom) + } + + if active { + framesCount++ + if framesCount > 2 { + currentFrame++ + if currentFrame >= numFramesPerLine { + currentFrame = 0 + currentLine++ + if currentLine >= numLines { + currentLine = 0 + active = false + } + } + + framesCount = 0 + } + } + + frameRec.X = frameW * float32(currentFrame) + frameRec.Y = frameH * float32(currentLine) + + rl.BeginDrawing() + rl.ClearBackground(rl.RayWhite) + + rl.DrawText("click left mouse on screen to explode", 19, 21, 20, rl.Red) + rl.DrawText("click left mouse on screen to explode", 20, 20, 20, rl.Black) + + if active { + rl.DrawTextureRec(explosion, frameRec, position, rl.White) + } + + rl.EndDrawing() + } + + rl.UnloadTexture(explosion) + rl.UnloadSound(fxBoom) + rl.CloseAudioDevice() + + rl.CloseWindow() +} diff --git a/examples/textures/sprite_explosion/sprite_explosion.exe b/examples/textures/sprite_explosion/sprite_explosion.exe new file mode 100644 index 0000000..35b842f Binary files /dev/null and b/examples/textures/sprite_explosion/sprite_explosion.exe differ