|
|
@ -2,59 +2,15 @@ package lib |
|
|
|
|
|
|
|
|
import ( |
|
|
import ( |
|
|
"github.com/hajimehoshi/ebiten/v2" |
|
|
"github.com/hajimehoshi/ebiten/v2" |
|
|
"github.com/hajimehoshi/ebiten/v2/ebitenutil" |
|
|
|
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil" |
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
// Scenes: Main Menu
|
|
|
|
|
|
// Game Mode
|
|
|
|
|
|
|
|
|
|
|
|
//Scene - is the highest-level element of state the game can be in.
|
|
|
|
|
|
|
|
|
|
|
|
type GameEvent struct { |
|
|
|
|
|
Type int |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
type HandleResult int |
|
|
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
|
EventNoOp int = iota |
|
|
|
|
|
EventKeyRelease |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
|
DoNothing HandleResult = iota |
|
|
|
|
|
EndProgram |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
type Scene interface { |
|
|
|
|
|
HandleEvent(*GameEvent) HandleResult |
|
|
|
|
|
Draw(screen *ebiten.Image) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Implements ebiten.Game
|
|
|
// Implements ebiten.Game
|
|
|
|
|
|
// The game has
|
|
|
type TetrisGame struct { |
|
|
type TetrisGame struct { |
|
|
activeScene Scene |
|
|
activeScene Scene |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
type MainMenuScene struct { |
|
|
|
|
|
selections [1]string |
|
|
|
|
|
currentSelectionIndex int |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (menu *MainMenuScene) HandleEvent(e *GameEvent) HandleResult { |
|
|
|
|
|
if e.Type == 1 { |
|
|
|
|
|
if menu.selections[menu.currentSelectionIndex] == "Quit" { |
|
|
|
|
|
return EndProgram |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return DoNothing |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (menu *MainMenuScene) Draw(screen *ebiten.Image) { |
|
|
|
|
|
ebitenutil.DebugPrint(screen, menu.selections[menu.currentSelectionIndex]) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func NewGame() (*TetrisGame, error) { |
|
|
func NewGame() (*TetrisGame, error) { |
|
|
return &TetrisGame{ |
|
|
return &TetrisGame{ |
|
|
activeScene: &MainMenuScene{ |
|
|
activeScene: &MainMenuScene{ |