From 8a1b0a0597bdaa275a00aa41ff448f08b8090b33 Mon Sep 17 00:00:00 2001 From: Louis Dalibard Date: Fri, 31 Jan 2025 22:40:14 +0100 Subject: [PATCH] yes --- config/config.go | 4 ++++ main.go | 32 ++++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/config/config.go b/config/config.go index 055b6ec..e35e7ce 100644 --- a/config/config.go +++ b/config/config.go @@ -47,6 +47,8 @@ type ConfigS struct { AccentColor string FirstColor string ThirdColor string + CopyPreviousFrame bool + CopyPreviousFrameAlpha float32 } var DefaultConfig = ConfigS{ @@ -83,6 +85,8 @@ var DefaultConfig = ConfigS{ AccentColor: "FF0000", FirstColor: "FF0000", ThirdColor: "FF0000", + CopyPreviousFrame: true, + CopyPreviousFrameAlpha: 0.4, } var Config ConfigS diff --git a/main.go b/main.go index 2b02bbb..43e6445 100644 --- a/main.go +++ b/main.go @@ -31,20 +31,24 @@ import ( type Game struct { } +var pressedKeys []ebiten.Key + func (g *Game) Update() error { + pressedKeys = nil + pressedKeys = inpututil.AppendPressedKeys(pressedKeys) return nil } var prevFrame *ebiten.Image var firstFrame = true -var ColorScale ebiten.ColorScale func (g *Game) Draw(screen *ebiten.Image) { - if firstFrame { - prevFrame = screen - firstFrame = false - } else { - screen.DrawImage(prevFrame, &ebiten.DrawImageOptions{ColorScale: ColorScale}) + if config.Config.CopyPreviousFrame { + if !firstFrame { + op := &ebiten.DrawImageOptions{} + op.ColorScale.ScaleAlpha(config.Config.CopyPreviousFrameAlpha) + screen.DrawImage(prevFrame, op) + } } scale := min(config.Config.WindowWidth, config.Config.WindowHeight) / 2 var AX float32 @@ -53,8 +57,7 @@ func (g *Game) Draw(screen *ebiten.Image) { var BY float32 var numSamples = config.Config.ReadBufferSize / audio.SampleSizeInBytes * 4 var FFTBuffer = make([]float64, numSamples) - var pressedKeys []ebiten.Key - inpututil.AppendPressedKeys(pressedKeys) + if slices.Contains(pressedKeys, ebiten.KeyF) { config.SingleChannel = !config.SingleChannel } @@ -167,7 +170,16 @@ func (g *Game) Draw(screen *ebiten.Image) { Size: 32, }, op) } - prevFrame = screen + + if config.Config.CopyPreviousFrame { + prevFrame.Clear() + prevFrame.DrawImage(screen, nil) + } + if firstFrame { + firstFrame = false + // f, _ := os.Create("image.png") + // png.Encode(f, prevFrame) + } } func (g *Game) Layout(outsideWidth, outsideHeight int) (int, int) { @@ -190,7 +202,7 @@ func main() { screenW, screenH := ebiten.Monitor().Size() ebiten.SetWindowPosition(screenW/2-int(config.Config.WindowWidth)/2, screenH/2-int(config.Config.WindowHeight)/2) ebiten.SetVsyncEnabled(true) - ColorScale.SetA(0.8) + prevFrame = ebiten.NewImage(int(config.Config.WindowWidth), int(config.Config.WindowHeight)) if err := ebiten.RunGameWithOptions(&Game{}, &ebiten.RunGameOptions{ScreenTransparent: true}); err != nil { log.Fatal(err) }