Make include directives work in .mnu files
This commit is contained in:
@@ -51,12 +51,12 @@ func registerInvokeButton(d *Driver, r *menus.Record) error {
|
||||
}
|
||||
|
||||
func registerMainButton(d *Driver, r *menus.Record) error {
|
||||
sprites, err := d.menu.Sprites(r.Share, 3) // base, pressed, disabled
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, r.Share, 3) // base, pressed, disabled
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hovers, err := d.menu.Images(r.SpriteId[0], r.DrawType)
|
||||
hovers, err := d.menu.Images(r.ObjectIdx, r.SpriteId[0], r.DrawType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -81,7 +81,7 @@ func registerMainButton(d *Driver, r *menus.Record) error {
|
||||
}
|
||||
|
||||
func registerDoorHotspot(d *Driver, r *menus.Record) error {
|
||||
sprites, err := d.menu.Sprites(r.Share, 2) // base, pressed
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, r.Share, 2) // base, pressed
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -104,7 +104,7 @@ func registerDoorHotspot(d *Driver, r *menus.Record) error {
|
||||
}
|
||||
|
||||
func registerButton(d *Driver, r *menus.Record, spriteId int) (*button, error) {
|
||||
sprites, err := d.menu.Sprites(spriteId, 3) // base, pressed, disabled
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, spriteId, 3) // base, pressed, disabled
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
20
internal/ui/dialogue.go
Normal file
20
internal/ui/dialogue.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"code.ur.gs/lupine/ordoor/internal/menus"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Needed for Keyboard.mnu (main -> options -> keyboard).
|
||||
// Dialogues can be active(?) or not. If they're not, then they are hidden.
|
||||
// Dialogues seem to be modal in all cases?
|
||||
registerBuilder(menus.TypeDialogue, registerDebug("WIP Dialogue", registerDialogue))
|
||||
}
|
||||
|
||||
func registerDialogue(d *Driver, r *menus.Record) ([]*menus.Record, error) {
|
||||
// The dialogue itself has a sprite
|
||||
_, err := registerNoninteractive(d, r)
|
||||
|
||||
// TODO: we need to group these. Z levels seem overkill?
|
||||
return r.Children, err
|
||||
}
|
@@ -17,11 +17,6 @@ import (
|
||||
func init() {
|
||||
// FIXME: these need implementing
|
||||
|
||||
// Needed for Keyboard.mnu (main -> options -> keyboard)
|
||||
registerBuilder(menus.TypeDialogue, registerDebug("Unimplemented Dialogue", nil))
|
||||
|
||||
// Needed for ChaEquip.mnu
|
||||
|
||||
// Needed for MainGameChaos.mnu
|
||||
registerBuilder(menus.TypeStatusBar, registerDebug("Unimplemented StatusBar", nil))
|
||||
|
||||
@@ -51,7 +46,7 @@ type builderFunc func(d *Driver, r *menus.Record) (children []*menus.Record, err
|
||||
|
||||
func registerDebug(reason string, onward builderFunc) builderFunc {
|
||||
return func(d *Driver, r *menus.Record) ([]*menus.Record, error) {
|
||||
log.Printf("%v: %#+v", reason, r)
|
||||
log.Printf("%v: %v: %#+v", reason, r.Locator(), r)
|
||||
if onward == nil {
|
||||
return r.Children, nil
|
||||
}
|
||||
@@ -327,7 +322,7 @@ func (d *Driver) Cursor() (*ebiten.Image, *ebiten.DrawImageOptions, error) {
|
||||
}
|
||||
|
||||
func (d *Driver) addRecord(record *menus.Record) error {
|
||||
log.Printf("Adding record %v: %#+v", record.Locator(), record)
|
||||
//log.Printf("Adding record %v: %#+v", record.Locator(), record)
|
||||
children := record.Children
|
||||
|
||||
handler, ok := widgetBuilders[record.Type]
|
||||
|
@@ -21,7 +21,7 @@ type inventorySelect struct {
|
||||
|
||||
// Called from the menu, which fills "others" for us
|
||||
func registerInventorySelect(d *Driver, r *menus.Record) (*inventorySelect, error) {
|
||||
sprites, err := d.menu.Sprites(r.Share, 3) // unchecked, checked, disabled
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, r.Share, 3) // unchecked, checked, disabled
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -101,7 +101,7 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
thumbBaseSpr, err := d.menu.Sprite(thumb.Share)
|
||||
thumbBaseSpr, err := d.menu.Sprite(menu.ObjectIdx, thumb.Share)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -111,7 +111,7 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
thumbSprId = thumb.Share
|
||||
}
|
||||
|
||||
thumbImgSpr, err := d.menu.Sprite(thumbSprId)
|
||||
thumbImgSpr, err := d.menu.Sprite(menu.ObjectIdx, thumbSprId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -70,7 +70,7 @@ func registerNoninteractive(d *Driver, r *menus.Record) (*noninteractive, error)
|
||||
spriteId = r.SpriteId[0]
|
||||
}
|
||||
|
||||
sprite, err := d.menu.Sprite(spriteId)
|
||||
sprite, err := d.menu.Sprite(r.ObjectIdx, spriteId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -89,7 +89,7 @@ func registerNoninteractive(d *Driver, r *menus.Record) (*noninteractive, error)
|
||||
}
|
||||
|
||||
func registerHypertext(d *Driver, r *menus.Record) error {
|
||||
sprite, err := d.menu.Sprite(r.Share)
|
||||
sprite, err := d.menu.Sprite(r.ObjectIdx, r.Share)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -108,7 +108,7 @@ func registerHypertext(d *Driver, r *menus.Record) error {
|
||||
|
||||
// An overlay is a static image + some text that needs to be rendered
|
||||
func registerOverlay(d *Driver, r *menus.Record) error {
|
||||
sprite, err := d.menu.Sprite(r.Share)
|
||||
sprite, err := d.menu.Sprite(r.ObjectIdx, r.Share)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -139,12 +139,12 @@ func registerOverlay(d *Driver, r *menus.Record) error {
|
||||
|
||||
// An animation is a non-interactive element that displays something in a loop
|
||||
func registerAnimation(d *Driver, r *menus.Record) error {
|
||||
sprite, err := d.menu.Sprite(r.SpriteId[0])
|
||||
sprite, err := d.menu.Sprite(r.ObjectIdx, r.SpriteId[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
frames, err := d.menu.Images(r.SpriteId[0], r.DrawType)
|
||||
frames, err := d.menu.Images(r.ObjectIdx, r.SpriteId[0], r.DrawType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -163,17 +163,17 @@ func registerAnimation(d *Driver, r *menus.Record) error {
|
||||
}
|
||||
|
||||
func registerAnimationHover(d *Driver, r *menus.Record) error {
|
||||
sprite, err := d.menu.Sprite(r.SpriteId[0])
|
||||
sprite, err := d.menu.Sprite(r.ObjectIdx, r.SpriteId[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
enterFrames, err := d.menu.Images(r.SpriteId[0], r.DrawType)
|
||||
enterFrames, err := d.menu.Images(r.ObjectIdx, r.SpriteId[0], r.DrawType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
exitFrames, err := d.menu.Images(r.SpriteId[0]+r.DrawType, r.DrawType)
|
||||
exitFrames, err := d.menu.Images(r.ObjectIdx, r.SpriteId[0]+r.DrawType, r.DrawType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@@ -39,7 +39,7 @@ type slider struct {
|
||||
|
||||
// A checkbox has 3 sprites, and 3 states: unchecked, checked, disabled.
|
||||
func registerCheckbox(d *Driver, r *menus.Record) error {
|
||||
sprites, err := d.menu.Sprites(r.Share, 3) // unchecked, disabled, checked
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, r.Share, 3) // unchecked, disabled, checked
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -65,7 +65,7 @@ func registerCheckbox(d *Driver, r *menus.Record) error {
|
||||
}
|
||||
|
||||
func registerSlider(d *Driver, r *menus.Record) error {
|
||||
sprites, err := d.menu.Sprites(r.Share, 3) // base, clicked, slider element
|
||||
sprites, err := d.menu.Sprites(r.ObjectIdx, r.Share, 3) // base, clicked, slider element
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user