Display MainGame.mnu and map in ordoor simultaneously
It's a complete mess for now - many things are out of place or shown when they shouldn't be - and we can't move around the game map. But, it's a good start.
This commit is contained in:
@@ -327,7 +327,7 @@ func (d *Driver) Cursor() (*ebiten.Image, *ebiten.DrawImageOptions, error) {
|
||||
}
|
||||
|
||||
func (d *Driver) addRecord(record *menus.Record) error {
|
||||
//log.Printf("Adding record: %#+v", record)
|
||||
log.Printf("Adding record %v: %#+v", record.Locator(), record)
|
||||
children := record.Children
|
||||
|
||||
handler, ok := widgetBuilders[record.Type]
|
||||
|
@@ -45,6 +45,7 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
var downBtn *menus.Record
|
||||
var thumb *menus.Record
|
||||
var items []*menus.Record
|
||||
var otherChildren []*menus.Record
|
||||
|
||||
for _, rec := range menu.Children {
|
||||
switch rec.Type {
|
||||
@@ -66,7 +67,8 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
}
|
||||
thumb = rec
|
||||
default:
|
||||
return nil, fmt.Errorf("Unrecognised child in listbox menu: %v", rec.Locator())
|
||||
// e.g. maingame:18.12 includes a button that is not part of the box
|
||||
otherChildren = append(otherChildren, rec)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,12 +82,21 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
elemUp, err := registerButton(d, upBtn, upBtn.SpriteId[0])
|
||||
upSprId := upBtn.SpriteId[0]
|
||||
if upSprId == -1 {
|
||||
upSprId = upBtn.Share
|
||||
}
|
||||
|
||||
elemUp, err := registerButton(d, upBtn, upSprId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
elemDown, err := registerButton(d, downBtn, downBtn.SpriteId[0])
|
||||
dnSprId := downBtn.SpriteId[0]
|
||||
if dnSprId == -1 {
|
||||
dnSprId = downBtn.Share
|
||||
}
|
||||
elemDown, err := registerButton(d, downBtn, dnSprId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -95,7 +106,12 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
thumbImgSpr, err := d.menu.Sprite(thumb.SpriteId[0])
|
||||
thumbSprId := thumb.SpriteId[0]
|
||||
if thumbSprId == -1 {
|
||||
thumbSprId = thumb.Share
|
||||
}
|
||||
|
||||
thumbImgSpr, err := d.menu.Sprite(thumbSprId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -145,7 +161,7 @@ func registerListBox(d *Driver, menu *menus.Record) ([]*menus.Record, error) {
|
||||
|
||||
element.refresh()
|
||||
|
||||
return nil, nil
|
||||
return otherChildren, nil
|
||||
}
|
||||
|
||||
func (l *listBox) SetStrings(to []string) {
|
||||
|
@@ -16,7 +16,7 @@ const (
|
||||
)
|
||||
|
||||
func init() {
|
||||
registerBuilder(menus.TypeStatic, noChildren(registerStatic))
|
||||
registerBuilder(menus.TypeStatic, registerStatic) // MainGame has a hypertext child
|
||||
registerBuilder(menus.TypeHypertext, noChildren(registerHypertext))
|
||||
registerBuilder(menus.TypeOverlay, noChildren(registerOverlay))
|
||||
registerBuilder(menus.TypeAnimationSample, noChildren(registerAnimation))
|
||||
@@ -58,9 +58,9 @@ type animationHover struct {
|
||||
closing bool
|
||||
}
|
||||
|
||||
func registerStatic(d *Driver, r *menus.Record) error {
|
||||
func registerStatic(d *Driver, r *menus.Record) ([]*menus.Record, error) {
|
||||
_, err := registerNoninteractive(d, r)
|
||||
return err
|
||||
return r.Children, err
|
||||
}
|
||||
|
||||
func registerNoninteractive(d *Driver, r *menus.Record) (*noninteractive, error) {
|
||||
|
Reference in New Issue
Block a user