Link various screens accessible from the bridge

This kind of linking is starting to creak...
This commit is contained in:
2020-03-27 02:07:28 +00:00
parent 316db89148
commit c090fd32e9
8 changed files with 133 additions and 27 deletions

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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