58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
|
|
package states
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"image/color"
|
||
|
|
"math/rand"
|
||
|
|
|
||
|
|
"github.com/hajimehoshi/ebiten/v2"
|
||
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
||
|
|
"github.com/hajimehoshi/ebiten/v2/text"
|
||
|
|
"golang.org/x/image/font"
|
||
|
|
"src.robn.tv/MrDonuts/RGB/assets"
|
||
|
|
geom "src.robn.tv/MrDonuts/RGB/geometry"
|
||
|
|
)
|
||
|
|
|
||
|
|
type GameOverState struct {
|
||
|
|
}
|
||
|
|
|
||
|
|
func (st *GameOverState) Enter() {
|
||
|
|
fmt.Println("Entering Game Over State")
|
||
|
|
assets.SilenceSongTracks()
|
||
|
|
assets.SFXLibrary["gameOver"].Rewind()
|
||
|
|
assets.SFXLibrary["gameOver"].Play()
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
func (st *GameOverState) Exit() {
|
||
|
|
fmt.Println("Exiting Game OverState")
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
func (st *GameOverState) Update() {
|
||
|
|
if inpututil.IsKeyJustPressed(ebiten.KeyN) {
|
||
|
|
geom.ResetPlayerValues()
|
||
|
|
geom.BuildGrid(rand.Intn(5+geom.CurrentLevel)+2, rand.Intn(5+geom.CurrentLevel)+2)
|
||
|
|
CurrTrack = 1
|
||
|
|
assets.SongTracks[CurrTrack].SetVolume(0.7) //turn up track 1
|
||
|
|
SM.Transition("load")
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
func (st *GameOverState) Draw(screen *ebiten.Image) {
|
||
|
|
w, h := ebiten.WindowSize()
|
||
|
|
|
||
|
|
gameOverStr := "Game Over"
|
||
|
|
face := assets.LoadFontFace("fonts/robot.otf", 30)
|
||
|
|
stringWidth := font.MeasureString(face, gameOverStr).Ceil()
|
||
|
|
text.Draw(screen, gameOverStr, face, w/2-stringWidth/2, h/2, color.White)
|
||
|
|
|
||
|
|
newGameStr := "(press N for new game)"
|
||
|
|
face = assets.LoadFontFace("fonts/robot.otf", 12)
|
||
|
|
stringWidth = font.MeasureString(face, newGameStr).Ceil()
|
||
|
|
text.Draw(screen, newGameStr, face, w/2-stringWidth/2, h-int(0.1*float64(h)), color.White)
|
||
|
|
|
||
|
|
}
|