Link various screens accessible from the bridge
This kind of linking is starting to creak...
This commit is contained in:
@@ -11,7 +11,9 @@ func init() {
|
||||
registerBuilder(menus.TypeSimpleButton, registerSimpleButton)
|
||||
registerBuilder(menus.TypeInvokeButton, registerInvokeButton)
|
||||
registerBuilder(menus.TypeMainButton, registerMainButton)
|
||||
registerBuilder(menus.TypeDoorHotspot, registerDebug("Unimplemented DoorHotspot", nil))
|
||||
registerBuilder(menus.TypeDoorHotspot, registerDoorHotspot)
|
||||
registerBuilder(menus.TypeDoorHotspot2, registerDoorHotspot)
|
||||
registerBuilder(menus.TypeDoorHotspot3, registerDoorHotspot)
|
||||
}
|
||||
|
||||
// A button without hover animation
|
||||
@@ -79,6 +81,29 @@ func registerMainButton(d *Driver, r *menus.Record) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func registerDoorHotspot(d *Driver, r *menus.Record) error {
|
||||
sprites, err := d.menu.Sprites(r.Share, 2) // base, pressed
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
btn := &button{
|
||||
path: r.Path(),
|
||||
baseSpr: sprites[0],
|
||||
clickSpr: sprites[1],
|
||||
frozenSpr: sprites[0], // No disabled sprite
|
||||
hoverImpl: hoverImpl{text: r.Text},
|
||||
}
|
||||
|
||||
d.clickables = append(d.clickables, btn)
|
||||
d.freezables = append(d.freezables, btn)
|
||||
d.hoverables = append(d.hoverables, btn)
|
||||
d.paintables = append(d.paintables, btn)
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func registerButton(d *Driver, r *menus.Record, spriteId int) error {
|
||||
sprites, err := d.menu.Sprites(spriteId, 3) // base, pressed, disabled
|
||||
if err != nil {
|
||||
|
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"image"
|
||||
"log"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
|
||||
"github.com/hajimehoshi/ebiten"
|
||||
@@ -24,14 +25,10 @@ func init() {
|
||||
registerBuilder(menus.TypeLineKbd, registerDebug("Unimplemented LineKbd", nil))
|
||||
registerBuilder(menus.TypeDialogue, registerDebug("Unimplemented Dialogue", nil))
|
||||
|
||||
// Needed for Arrange.mnu (???)
|
||||
registerBuilder(menus.TypeSquadButton, registerDebug("Unimplemented SquadButton", nil))
|
||||
|
||||
// Needed for Briefing.mnu
|
||||
registerBuilder(menus.TypeLineBriefing, registerDebug("Unimplemented LineBriefing", nil))
|
||||
|
||||
// Needed for ChaEquip.mnu
|
||||
registerBuilder(menus.TypeUnknown1, registerDebug("Unimplemented Unknown1", nil))
|
||||
registerBuilder(menus.TypeThumb, registerDebug("Unimplemented Thumb", nil))
|
||||
|
||||
// Needed for MainGameChaos.mnu
|
||||
@@ -226,6 +223,11 @@ func (d *Driver) SetValueInt(id string, value int) error {
|
||||
}
|
||||
|
||||
func (d *Driver) Update(screenX, screenY int) error {
|
||||
if d == nil {
|
||||
debug.PrintStack()
|
||||
return fmt.Errorf("Tried to update a nil ui.Driver")
|
||||
}
|
||||
|
||||
// This will be updated while processing hovers
|
||||
d.tooltip = ""
|
||||
d.ticks += 1
|
||||
@@ -274,6 +276,11 @@ func (d *Driver) Update(screenX, screenY int) error {
|
||||
}
|
||||
|
||||
func (d *Driver) Draw(screen *ebiten.Image) error {
|
||||
if d == nil {
|
||||
debug.PrintStack()
|
||||
return fmt.Errorf("Tried to draw a nil ui.Driver")
|
||||
}
|
||||
|
||||
var do ebiten.DrawImageOptions
|
||||
|
||||
for _, paint := range d.paintables {
|
||||
|
@@ -15,7 +15,7 @@ func init() {
|
||||
registerBuilder(menus.TypeHypertext, registerHypertext)
|
||||
registerBuilder(menus.TypeOverlay, registerOverlay)
|
||||
registerBuilder(menus.TypeAnimationSample, registerAnimation)
|
||||
registerBuilder(menus.TypeAnimationHover, registerDebug("WIP AnimationHover", registerAnimationHover))
|
||||
registerBuilder(menus.TypeAnimationHover, registerAnimationHover)
|
||||
}
|
||||
|
||||
// A non-interactive element is not a widget; it merely displays some pixels and
|
||||
|
Reference in New Issue
Block a user