diff --git a/.DS_Store b/.DS_Store index 0e98880..64d5225 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/assets/.DS_Store b/assets/.DS_Store index 491eedd..9bdcbed 100644 Binary files a/assets/.DS_Store and b/assets/.DS_Store differ diff --git a/assets/audio.go b/assets/audio.go index b2a06de..1daf086 100644 --- a/assets/audio.go +++ b/assets/audio.go @@ -8,6 +8,7 @@ import ( "log" "github.com/hajimehoshi/ebiten/v2/audio" + "github.com/hajimehoshi/ebiten/v2/audio/mp3" "github.com/hajimehoshi/ebiten/v2/audio/wav" ) @@ -30,7 +31,7 @@ func loadTracksForSong(sng int) map[int]*audio.Player { var SFXLibrary = map[string]*audio.Player{ "newLevel": LoadWavAudioFile("audio/portal2.wav", false), - "colourMatch": LoadWavAudioFile("audio/portal.wav", false), + "colourMatch": LoadMP3AudioFile("audio/portal.mp3", false), "gameOver": LoadWavAudioFile("audio/gameOver.wav", false), } @@ -64,6 +65,36 @@ func LoadWavAudioFile(filePath string, loop bool) *audio.Player { } +func LoadMP3AudioFile(filePath string, loop bool) *audio.Player { + + audioData, err := fs.ReadFile(embeddedFiles, filePath) + if err != nil { + log.Fatal(err) + } + + stream, err := mp3.DecodeWithSampleRate(sampleRate, bytes.NewReader(audioData)) + if err != nil { + log.Fatalf("failed to decode audio: %v", err) + } + + var player *audio.Player + + if loop { + lengthOfAudioData := int64(len(audioData)) + loopingStream := audio.NewInfiniteLoop(stream, lengthOfAudioData) + player, err = audioContext.NewPlayer(loopingStream) + + } else { + player, err = audioContext.NewPlayer(stream) + } + + if err != nil { + log.Fatal(err) + } + return player + +} + func SilenceSongTracks() { for _, song := range SongTracks { song.SetVolume(0) diff --git a/assets/audio/portal.mp3 b/assets/audio/portal.mp3 new file mode 100644 index 0000000..97ee0a7 Binary files /dev/null and b/assets/audio/portal.mp3 differ diff --git a/go.mod b/go.mod index 27d9081..b5a59cd 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,9 @@ module src.robn.tv/MrDonuts/RGB go 1.21.3 -require github.com/hajimehoshi/ebiten/v2 v2.6.2 +require github.com/hajimehoshi/ebiten/v2 v2.6.3 + +require github.com/hajimehoshi/go-mp3 v0.3.4 // indirect require ( github.com/ebitengine/oto/v3 v3.1.0 // indirect diff --git a/go.sum b/go.sum index 45fbaa3..a534d42 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,11 @@ github.com/hajimehoshi/bitmapfont/v3 v3.0.0 h1:r2+6gYK38nfztS/et50gHAswb9hXgxXEC github.com/hajimehoshi/bitmapfont/v3 v3.0.0/go.mod h1:+CxxG+uMmgU4mI2poq944i3uZ6UYFfAkj9V6WqmuvZA= github.com/hajimehoshi/ebiten/v2 v2.6.2 h1:tVa3ZJbp4Uz/VSjmpgtQIOvwd7aQH290XehHBLr2iWk= github.com/hajimehoshi/ebiten/v2 v2.6.2/go.mod h1:TZtorL713an00UW4LyvMeKD8uXWnuIuCPtlH11b0pgI= +github.com/hajimehoshi/ebiten/v2 v2.6.3 h1:xJ5klESxhflZbPUx3GdIPoITzgPgamsyv8aZCVguXGI= +github.com/hajimehoshi/ebiten/v2 v2.6.3/go.mod h1:TZtorL713an00UW4LyvMeKD8uXWnuIuCPtlH11b0pgI= +github.com/hajimehoshi/go-mp3 v0.3.4 h1:NUP7pBYH8OguP4diaTZ9wJbUbk3tC0KlfzsEpWmYj68= +github.com/hajimehoshi/go-mp3 v0.3.4/go.mod h1:fRtZraRFcWb0pu7ok0LqyFhCUrPeMsGRSVop0eemFmo= +github.com/hajimehoshi/oto/v2 v2.3.1/go.mod h1:seWLbgHH7AyUMYKfKYT9pg7PhUu9/SisyJvNTT+ASQo= github.com/jezek/xgb v1.1.0 h1:wnpxJzP1+rkbGclEkmwpVFQWpuE2PUGNUzP8SbfFobk= github.com/jezek/xgb v1.1.0/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk= golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63 h1:3AGKexOYqL+ztdWdkB1bDwXgPBuTS/S8A4WzuTvJ8Cg= @@ -16,6 +21,7 @@ golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57 h1:Q6NT8ckDYNcwmi/bmxe+Xb golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57/go.mod h1:wEyOn6VvNW7tcf+bW/wBz1sehi2s2BZ4TimyR7qZen4= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= diff --git a/states/playLevelState.go b/states/playLevelState.go index a9eb6b5..075b27b 100644 --- a/states/playLevelState.go +++ b/states/playLevelState.go @@ -49,9 +49,7 @@ func (s *PlayLevelState) Update() { } geom.MainPlayer.Update() - if geom.CurrentEnergy == 0 { - SM.Transition("game over") - } + if geom.GameGrid.ColouredSquaresRemaining() == 0 { //go to next level newRowSize := min(rand.Intn(5+geom.CurrentLevel)+2, geom.MaxGridDimension) @@ -60,6 +58,12 @@ func (s *PlayLevelState) Update() { SM.Transition("load") assets.SFXLibrary["newLevel"].Rewind() assets.SFXLibrary["newLevel"].Play() + return + } + + if geom.CurrentEnergy == 0 { + SM.Transition("game over") + return } }