64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package boot
|
|
|
|
import (
|
|
inkwell "git.teletypegames.org/engines/inkwell"
|
|
"git.teletypegames.org/games/realworld/inc"
|
|
"git.teletypegames.org/games/realworld/inc/background"
|
|
"git.teletypegames.org/games/realworld/inc/character"
|
|
"git.teletypegames.org/games/realworld/inc/dialog"
|
|
"git.teletypegames.org/games/realworld/inc/item"
|
|
"git.teletypegames.org/games/realworld/inc/scene"
|
|
"git.teletypegames.org/games/realworld/inc/script"
|
|
_ "git.teletypegames.org/games/realworld/inc/tape"
|
|
"git.teletypegames.org/games/realworld/inc/theme"
|
|
"git.teletypegames.org/games/realworld/inc/widget"
|
|
"git.teletypegames.org/games/realworld/inc/world"
|
|
)
|
|
|
|
type Opts struct {
|
|
Scene string
|
|
Finale bool
|
|
}
|
|
|
|
func New(o Opts) *inkwell.Game {
|
|
start := o.Scene
|
|
if start == "" {
|
|
start = inc.SceneAlley
|
|
}
|
|
|
|
scene.FillSelectorPins()
|
|
|
|
g := inkwell.NewGame("Real World", widget.ScreenW, widget.ScreenH)
|
|
g.MaxLogLines = 64
|
|
g.WindowScale = 2
|
|
g.SceneRect = inkwell.Rect(0, widget.TopBarH, widget.ScreenW, widget.HUDTop-widget.TopBarH)
|
|
g.Player = inc.Paul
|
|
g.Walkboxes = scene.Floor
|
|
g.ExitLook = func(e inkwell.Exit) inkwell.Action {
|
|
return inkwell.Say(inc.Paul, "That way: "+e.Label+".")
|
|
}
|
|
g.ExitTake = func(inkwell.Exit) inkwell.Action {
|
|
return inkwell.Say(inc.Paul, "It's a way out, not a thing.")
|
|
}
|
|
g.UseWithFail = script.UseWithFail
|
|
|
|
g.AssetManager = background.Manager
|
|
g.CharacterManager = character.Manager
|
|
g.DialogueManager = dialog.Manager
|
|
g.ItemManager = item.Manager
|
|
g.SceneManager = scene.Manager
|
|
g.ScriptManager = script.Manager
|
|
g.WidgetManager = widget.Manager
|
|
theme.Manager.Each(g.ThemeManager.Register)
|
|
|
|
world.Attach(g)
|
|
g.UseTheme(inc.RealWorld)
|
|
|
|
g.StartAt(start)
|
|
g.OnStart(inc.ScriptOpening)
|
|
if o.Finale {
|
|
g.OnFinale(inc.ScriptFinale)
|
|
}
|
|
return g
|
|
}
|