From 6c5d933f70b209fe81511602c36d2d931d2aa9c5 Mon Sep 17 00:00:00 2001 From: Ahmet Affan Date: Wed, 12 Jun 2024 23:13:40 +0300 Subject: [PATCH] weird... --- assets/assets.go | 22 ------------------- game/game.go | 45 ++++++++++++++++++++++++++++++++++++++ {assets => game}/lofi.ogg | Bin 3 files changed, 45 insertions(+), 22 deletions(-) rename {assets => game}/lofi.ogg (100%) diff --git a/assets/assets.go b/assets/assets.go index e179fc8..ba60e43 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -1,13 +1,10 @@ package assets import ( - "bytes" "embed" "image" "github.com/hajimehoshi/ebiten/v2" - "github.com/hajimehoshi/ebiten/v2/audio" - "github.com/hajimehoshi/ebiten/v2/audio/vorbis" ) //go:embed * @@ -32,11 +29,6 @@ var Font_ttf []byte //go:embed OpenSans-Medium.ttf var Sans_ttf []byte -//go:embed lofi.ogg -var audioBGM []byte - -const SampleRate = 44100 - func GetSingleImage(name string) *ebiten.Image { file, err := assets.Open(name) if err != nil { @@ -50,17 +42,3 @@ func GetSingleImage(name string) *ebiten.Image { return ebiten.NewImageFromImage(img) } - -type Sound struct { - PlayerSound *audio.Player -} - -func SoundFunc() { - _ = audio.NewContext(SampleRate) - stream, err := vorbis.DecodeWithSampleRate(SampleRate, bytes.NewReader(audioBGM)) - if err != nil { - panic(err) - } - audioPlayer := audio.CurrentContext().NewPlayer(stream) - -} diff --git a/game/game.go b/game/game.go index b9d5bcb..2c66a3f 100644 --- a/game/game.go +++ b/game/game.go @@ -2,6 +2,7 @@ package game import ( "bytes" + _ "embed" "fmt" "image/color" "log" @@ -9,15 +10,58 @@ import ( "time" "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/audio" + "github.com/hajimehoshi/ebiten/v2/audio/vorbis" "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/hajimehoshi/ebiten/v2/inpututil" "github.com/hajimehoshi/ebiten/v2/text/v2" ) +//go:embed lofi.ogg +var audioBGM []byte + +type Sound struct { + player *audio.Player + audioContext *audio.Context +} + +const ( + screenWidth = 640 + screenHeight = 480 + sampleRate = 48000 + bytesPerSample = 4 + + introLengthInSecond = 5 + loopLengthInSecond = 4 +) + +func (s *Sound) SoundFunc() { + if s.audioContext == nil { + s.audioContext = audio.NewContext(sampleRate) + } + + // Decode an Ogg file. + // oggS is a decoded io.ReadCloser and io.Seeker. + oggS, err := vorbis.DecodeWithoutResampling(bytes.NewReader(audioBGM)) + if err != nil { + log.Fatal(err) + } + + sound := audio.NewInfiniteLoopWithIntro(oggS, introLengthInSecond*bytesPerSample*sampleRate, loopLengthInSecond*bytesPerSample*sampleRate) + + s.player, err = s.audioContext.NewPlayer(sound) + if err != nil { + log.Fatal(err) + } + + s.player.Play() +} + type Game struct { camera camera player Player npc NPC + s Sound background Background isDebugModeOn bool @@ -125,6 +169,7 @@ func (g *Game) isDebugMode(enabled bool) { } func (g *Game) Update() error { + g.s.SoundFunc() if inpututil.IsKeyJustPressed(ebiten.KeyEnter) { g.menuOff = true } diff --git a/assets/lofi.ogg b/game/lofi.ogg similarity index 100% rename from assets/lofi.ogg rename to game/lofi.ogg