Add stubs for unknown widget types
This commit is contained in:
@@ -15,14 +15,29 @@ type MenuType int
|
||||
const (
|
||||
TypeStatic MenuType = 0
|
||||
TypeMenu MenuType = 1
|
||||
TypeDragMenu MenuType = 2 // Only seen in Configure_Vehicle_{Chaos,Ultra}
|
||||
TypeSimpleButton MenuType = 3
|
||||
TypeDoorHotspot MenuType = 30 // Like a button I guess? FONTTYPE is animation speed
|
||||
TypeUnknown1 MenuType = 31 // ??? Needed for ChaEquip.mnu
|
||||
TypeLineKbd MenuType = 40
|
||||
TypeThumb MenuType = 45
|
||||
TypeLineBriefing MenuType = 41
|
||||
TypeInvokeButton MenuType = 50
|
||||
TypeSquadButton MenuType = 60 // Maybe? Appears in Arrange.mnu
|
||||
TypeOverlay MenuType = 61
|
||||
TypeHypertext MenuType = 70
|
||||
TypeCheckbox MenuType = 91
|
||||
TypeEditBox MenuType = 100
|
||||
TypeInventorySelect MenuType = 110
|
||||
TypeRadioButton MenuType = 120
|
||||
TypeDropdownButton MenuType = 200
|
||||
TypeComboBoxItem MenuType = 205
|
||||
TypeAnimationSample MenuType = 220
|
||||
TypeAnimationToo MenuType = 221 // No idea why we have two of these. FONTTYPE is animation speed.
|
||||
TypeMainButton MenuType = 228
|
||||
TypeSlider MenuType = 232
|
||||
TypeStatusBar MenuType = 233
|
||||
TypeDialogue MenuType = 300
|
||||
)
|
||||
|
||||
type Record struct {
|
||||
|
@@ -43,6 +43,11 @@ func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kbd, err := o.keyboardDriver(options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := o.configIntoOptions(options); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -59,7 +64,8 @@ func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
|
||||
50: 50, 60: 60, 70: 70, 80: 80,
|
||||
}
|
||||
|
||||
try(options.OnClick("2.8", func() {}), &err) // Keyboard settings button
|
||||
try(options.OnClick("2.8", func() { o.driver = kbd }), &err) // Keyboard settings button
|
||||
|
||||
try(options.ConfigureSlider("2.9", h3Slider), &err) // Resolution slider
|
||||
try(options.ConfigureSlider("2.10", v10Slider), &err) // Music volume slider
|
||||
try(options.ConfigureSlider("2.11", v10Slider), &err) // SFX volume slider
|
||||
@@ -76,6 +82,24 @@ func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
|
||||
return options, err
|
||||
}
|
||||
|
||||
func (o *Ordoor) keyboardDriver(options *ui.Driver) (*ui.Driver, error) {
|
||||
kbd, err := o.buildDriver("keyboard")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: implement keybindings save/load behaviour
|
||||
try(kbd.OnClick("3.1", func() { o.driver = options }), &err) // Done button
|
||||
try(kbd.OnClick("3.2", func() { o.driver = options }), &err) // Cancel button
|
||||
try(kbd.OnClick("3.4", func() {}), &err) // Reset to defaults button
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return kbd, nil
|
||||
}
|
||||
|
||||
// FIXME: exiting is a bit OTT. Perhaps display "save failed"?
|
||||
func acceptOptionsFn(o *Ordoor, main, options *ui.Driver) func() {
|
||||
return func() {
|
||||
|
@@ -14,6 +14,8 @@ func init() {
|
||||
}
|
||||
|
||||
// A button without hover animation
|
||||
// FIXME: Keyboard.mnu has TypeSimpleButton instances that seem to include a
|
||||
// hover in the SpriteId field
|
||||
type button struct {
|
||||
path string
|
||||
|
||||
@@ -34,6 +36,11 @@ type mainButton struct {
|
||||
}
|
||||
|
||||
func registerSimpleButton(d *Driver, r *menus.Record) error {
|
||||
// FIXME: LevelPly.mnu specifies a menu oddly. This tweak gets us past it
|
||||
if d.Name == "levelply" && r.Id == 2 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return registerButton(d, r, r.SpriteId[0])
|
||||
}
|
||||
|
||||
|
@@ -15,7 +15,42 @@ import (
|
||||
|
||||
func init() {
|
||||
// These menu types don't need driving, so we can ignore them
|
||||
registerBuilder(menus.TypeMenu, nil) // Menus are just containers
|
||||
registerBuilder(menus.TypeMenu, nil) // Menus are just containers
|
||||
registerBuilder(menus.TypeDragMenu, nil) // Menus are just containers
|
||||
|
||||
// FIXME: these need implementing
|
||||
|
||||
// Needed for Keyboard.mnu (main -> options -> keyboard)
|
||||
registerBuilder(menus.TypeLineKbd, nil)
|
||||
registerBuilder(menus.TypeDialogue, nil)
|
||||
|
||||
// Needed for Arrange.mnu (???)
|
||||
registerBuilder(menus.TypeSquadButton, nil)
|
||||
registerBuilder(menus.TypeAnimationToo, nil)
|
||||
|
||||
// Needed for Bridge.mnu
|
||||
registerBuilder(menus.TypeDoorHotspot, nil)
|
||||
|
||||
// Needed for Briefing.mnu
|
||||
registerBuilder(menus.TypeLineBriefing, nil)
|
||||
|
||||
// Needed for ChaEquip.mnu
|
||||
registerBuilder(menus.TypeUnknown1, nil)
|
||||
registerBuilder(menus.TypeThumb, nil)
|
||||
registerBuilder(menus.TypeInventorySelect, nil)
|
||||
|
||||
// Needed for MainGameChaos.mnu
|
||||
registerBuilder(menus.TypeStatusBar, nil)
|
||||
|
||||
// Needed for Multiplayer_Choose.mnu
|
||||
registerBuilder(menus.TypeComboBoxItem, nil)
|
||||
registerBuilder(menus.TypeDropdownButton, nil)
|
||||
|
||||
// Needed for Multiplayer_Configure.mnu
|
||||
registerBuilder(menus.TypeEditBox, nil)
|
||||
|
||||
// Needed for Multiplayer_Connect.mnu
|
||||
registerBuilder(menus.TypeRadioButton, nil)
|
||||
}
|
||||
|
||||
const (
|
||||
|
Reference in New Issue
Block a user