99 lines
2.7 KiB
Go
99 lines
2.7 KiB
Go
package main
|
|
|
|
import "git.tebibyte.media/sashakoshka/tomo"
|
|
import "git.tebibyte.media/sashakoshka/tomo/flow"
|
|
import "git.tebibyte.media/sashakoshka/tomo/elements"
|
|
import _ "git.tebibyte.media/sashakoshka/tomo/backends/all"
|
|
|
|
func main () {
|
|
tomo.Run(run)
|
|
}
|
|
|
|
func run () {
|
|
window, _ := tomo.NewWindow(tomo.Bounds(0, 0, 192, 192))
|
|
window.SetTitle("adventure")
|
|
container := elements.NewVBox(elements.SpaceBoth)
|
|
window.Adopt(container)
|
|
|
|
var world flow.Flow
|
|
world.Transition = container.DisownAll
|
|
world.Stages = map [string] func () {
|
|
"start": func () {
|
|
label := elements.NewLabelWrapped (
|
|
"you are standing next to a river.")
|
|
|
|
button0 := elements.NewButton("go in the river")
|
|
button0.OnClick(world.SwitchFunc("wet"))
|
|
button1 := elements.NewButton("walk along the river")
|
|
button1.OnClick(world.SwitchFunc("house"))
|
|
button2 := elements.NewButton("turn around")
|
|
button2.OnClick(world.SwitchFunc("bear"))
|
|
|
|
container.AdoptExpand(label)
|
|
container.Adopt(button0, button1, button2)
|
|
button0.Focus()
|
|
},
|
|
"wet": func () {
|
|
label := elements.NewLabelWrapped (
|
|
"you get completely soaked.\n" +
|
|
"you die of hypothermia.")
|
|
|
|
button0 := elements.NewButton("try again")
|
|
button0.OnClick(world.SwitchFunc("start"))
|
|
button1 := elements.NewButton("exit")
|
|
button1.OnClick(tomo.Stop)
|
|
|
|
container.AdoptExpand(label)
|
|
container.Adopt(button0, button1)
|
|
button0.Focus()
|
|
},
|
|
"house": func () {
|
|
label := elements.NewLabelWrapped (
|
|
"you are standing in front of a delapidated " +
|
|
"house.")
|
|
|
|
button1 := elements.NewButton("go inside")
|
|
button1.OnClick(world.SwitchFunc("inside"))
|
|
button0 := elements.NewButton("turn back")
|
|
button0.OnClick(world.SwitchFunc("start"))
|
|
|
|
container.AdoptExpand(label)
|
|
container.Adopt(button0, button1)
|
|
button1.Focus()
|
|
},
|
|
"inside": func () {
|
|
label := elements.NewLabelWrapped (
|
|
"you are standing inside of the house.\n" +
|
|
"it is dark, but rays of light stream " +
|
|
"through the window.\n" +
|
|
"there is nothing particularly interesting " +
|
|
"here.")
|
|
|
|
button0 := elements.NewButton("go back outside")
|
|
button0.OnClick(world.SwitchFunc("house"))
|
|
|
|
container.AdoptExpand(label)
|
|
container.Adopt(button0)
|
|
button0.Focus()
|
|
},
|
|
"bear": func () {
|
|
label := elements.NewLabelWrapped (
|
|
"you come face to face with a bear.\n" +
|
|
"it eats you (it was hungry).")
|
|
|
|
button0 := elements.NewButton("try again")
|
|
button0.OnClick(world.SwitchFunc("start"))
|
|
button1 := elements.NewButton("exit")
|
|
button1.OnClick(tomo.Stop)
|
|
|
|
container.AdoptExpand(label)
|
|
container.Adopt(button0, button1)
|
|
button0.Focus()
|
|
},
|
|
}
|
|
world.Switch("start")
|
|
|
|
window.OnClose(tomo.Stop)
|
|
window.Show()
|
|
}
|