2023-11-19 20:53:35 -05:00
|
|
|
package states
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"math/rand"
|
|
|
|
|
|
|
|
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
|
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
|
|
|
|
"src.robn.tv/MrDonuts/RGB/assets"
|
|
|
|
|
geom "src.robn.tv/MrDonuts/RGB/geometry"
|
|
|
|
|
score "src.robn.tv/MrDonuts/RGB/tools"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var CurrTrack = 1
|
|
|
|
|
|
|
|
|
|
type PlayLevelState struct {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *PlayLevelState) Enter() {
|
|
|
|
|
fmt.Println("Entering Play State")
|
|
|
|
|
geom.SetupPlayer()
|
|
|
|
|
fmt.Println(geom.GameGrid.ColouredSquaresRemaining())
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *PlayLevelState) Exit() {
|
|
|
|
|
fmt.Println("Exiting Play State")
|
|
|
|
|
|
|
|
|
|
geom.PrepareForNextLevel()
|
|
|
|
|
|
|
|
|
|
if CurrTrack < len(assets.SongTracks) {
|
|
|
|
|
if geom.CurrentLevel%3 == 0 {
|
|
|
|
|
CurrTrack++
|
|
|
|
|
assets.SongTracks[CurrTrack].SetVolume(0.7)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *PlayLevelState) Update() {
|
|
|
|
|
|
|
|
|
|
if inpututil.IsKeyJustPressed(ebiten.KeyN) {
|
|
|
|
|
newRowSize := min(rand.Intn(5+geom.CurrentLevel)+2, geom.MaxGridDimension)
|
|
|
|
|
newColSize := min(rand.Intn(5+geom.CurrentLevel)+2, geom.MaxGridDimension)
|
|
|
|
|
geom.BuildGrid(newRowSize, newColSize)
|
|
|
|
|
SM.Transition("load")
|
|
|
|
|
assets.SFXLibrary["newLevel"].Rewind()
|
|
|
|
|
assets.SFXLibrary["newLevel"].Play()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
newColSize := min(rand.Intn(5+geom.CurrentLevel)+2, geom.MaxGridDimension)
|
|
|
|
|
geom.BuildGrid(newRowSize, newColSize)
|
|
|
|
|
SM.Transition("load")
|
|
|
|
|
assets.SFXLibrary["newLevel"].Rewind()
|
|
|
|
|
assets.SFXLibrary["newLevel"].Play()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *PlayLevelState) Draw(screen *ebiten.Image) {
|
|
|
|
|
geom.GameGrid.Draw(screen)
|
|
|
|
|
geom.MainPlayer.Draw(screen)
|
2023-11-20 23:25:38 -05:00
|
|
|
score.ScoreMngr.Draw(screen) //something in here is causing big time CPU usage
|
2023-11-19 20:53:35 -05:00
|
|
|
}
|