gopher-battle/screen_title.go
Brian Buller f1b12c23db Add Vendored Files
Update to termbox-util broke menus, fixed
2016-10-11 17:44:58 -05:00

93 lines
3.1 KiB
Go

package main
import (
"strings"
"github.com/nsf/termbox-go"
"gogs.bullercodeworks.com/brian/termbox-util"
)
type command struct {
key string
description string
}
type titleScreen struct {
titleArt *termboxUtil.ASCIIArt
directions *termboxUtil.ASCIIArt
menu *termboxUtil.Menu
initialized bool
}
func (screen *titleScreen) handleKeyPress(event termbox.Event) int {
if screen.menu.HandleEvent(event) {
if screen.menu.IsDone() {
selOpt := screen.menu.GetSelectedOption()
if strings.Trim(selOpt.GetText(), " ") == "Exit" {
return exitScreenIndex
} else if strings.Trim(selOpt.GetText(), " ") == "New Game" {
screen.initialized = false
return mainScreenIndex
}
}
}
return titleScreenIndex
}
func (screen *titleScreen) performLayout(style style) {
if !screen.initialized {
var tmplt []string
if ScreenWidth >= 87 {
tmplt = append(tmplt, " ________ .__ __________ __ __ .__ ")
tmplt = append(tmplt, " / _____/ ____ ______ | |__ ___________ \\______ _____ _/ |__/ |_| | ____ ")
tmplt = append(tmplt, "/ \\ ___ / _ \\\\____ \\| | \\_/ __ \\_ __ \\ | | _\\__ \\\\ __\\ __| | _/ __ \\ ")
tmplt = append(tmplt, "\\ \\_\\ ( <_> | |_> | Y \\ ___/| | \\/ | | \\/ __ \\| | | | | |_\\ ___/ ")
tmplt = append(tmplt, " \\______ /\\____/| __/|___| /\\___ |__| |______ (____ |__| |__| |____/\\___ >")
tmplt = append(tmplt, " \\/ |__| \\/ \\/ \\/ \\/ \\/ ")
} else {
tmplt = append(tmplt, " ")
tmplt = append(tmplt, " ")
tmplt = append(tmplt, " Gopher Battle ")
tmplt = append(tmplt, " ")
tmplt = append(tmplt, " ")
tmplt = append(tmplt, " ")
}
defaultFg := style.defaultFg
defaultBg := style.defaultBg
screen.titleArt = termboxUtil.CreateASCIIArt(tmplt, 0, 0, defaultFg, defaultBg)
w, h := termbox.Size()
screen.titleArt.Align(termboxUtil.AlignCenter, w)
menuX := w/2 - 10
menuY := h/2 - 5
screen.menu = termboxUtil.CreateMenu("",
[]string{
" New Game ",
" Exit "},
menuX, menuY, 20, 10, defaultFg, defaultBg,
)
// TODO: Check if we have a suspended game
screen.menu.EnableVimMode()
var directions []string
directions = append(directions, " Directions: ")
directions = append(directions, " Up/Down adjust Speed ")
directions = append(directions, " Left/Right adjust Angle ")
directions = append(directions, " Space to Fire ")
directions = append(directions, " W,A,S,D also work ")
screen.directions = termboxUtil.CreateASCIIArt(directions, 0, menuX+10, defaultFg, defaultBg)
screen.directions.Align(termboxUtil.AlignCenter, w)
screen.initialized = true
}
}
func (screen *titleScreen) update() {}
func (screen *titleScreen) drawScreen(style style) {
screen.titleArt.Draw()
screen.menu.Draw()
screen.directions.Draw()
}