Add stubs for unknown widget types
This commit is contained in:
@@ -15,14 +15,29 @@ type MenuType int
|
|||||||
const (
|
const (
|
||||||
TypeStatic MenuType = 0
|
TypeStatic MenuType = 0
|
||||||
TypeMenu MenuType = 1
|
TypeMenu MenuType = 1
|
||||||
|
TypeDragMenu MenuType = 2 // Only seen in Configure_Vehicle_{Chaos,Ultra}
|
||||||
TypeSimpleButton MenuType = 3
|
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
|
TypeInvokeButton MenuType = 50
|
||||||
|
TypeSquadButton MenuType = 60 // Maybe? Appears in Arrange.mnu
|
||||||
TypeOverlay MenuType = 61
|
TypeOverlay MenuType = 61
|
||||||
TypeHypertext MenuType = 70
|
TypeHypertext MenuType = 70
|
||||||
TypeCheckbox MenuType = 91
|
TypeCheckbox MenuType = 91
|
||||||
|
TypeEditBox MenuType = 100
|
||||||
|
TypeInventorySelect MenuType = 110
|
||||||
|
TypeRadioButton MenuType = 120
|
||||||
|
TypeDropdownButton MenuType = 200
|
||||||
|
TypeComboBoxItem MenuType = 205
|
||||||
TypeAnimationSample MenuType = 220
|
TypeAnimationSample MenuType = 220
|
||||||
|
TypeAnimationToo MenuType = 221 // No idea why we have two of these. FONTTYPE is animation speed.
|
||||||
TypeMainButton MenuType = 228
|
TypeMainButton MenuType = 228
|
||||||
TypeSlider MenuType = 232
|
TypeSlider MenuType = 232
|
||||||
|
TypeStatusBar MenuType = 233
|
||||||
|
TypeDialogue MenuType = 300
|
||||||
)
|
)
|
||||||
|
|
||||||
type Record struct {
|
type Record struct {
|
||||||
|
@@ -43,6 +43,11 @@ func (o *Ordoor) optionsDriver(main *ui.Driver) (*ui.Driver, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kbd, err := o.keyboardDriver(options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if err := o.configIntoOptions(options); err != nil {
|
if err := o.configIntoOptions(options); err != nil {
|
||||||
return nil, err
|
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,
|
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.9", h3Slider), &err) // Resolution slider
|
||||||
try(options.ConfigureSlider("2.10", v10Slider), &err) // Music volume slider
|
try(options.ConfigureSlider("2.10", v10Slider), &err) // Music volume slider
|
||||||
try(options.ConfigureSlider("2.11", v10Slider), &err) // SFX 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
|
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"?
|
// FIXME: exiting is a bit OTT. Perhaps display "save failed"?
|
||||||
func acceptOptionsFn(o *Ordoor, main, options *ui.Driver) func() {
|
func acceptOptionsFn(o *Ordoor, main, options *ui.Driver) func() {
|
||||||
return func() {
|
return func() {
|
||||||
|
@@ -14,6 +14,8 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// A button without hover animation
|
// A button without hover animation
|
||||||
|
// FIXME: Keyboard.mnu has TypeSimpleButton instances that seem to include a
|
||||||
|
// hover in the SpriteId field
|
||||||
type button struct {
|
type button struct {
|
||||||
path string
|
path string
|
||||||
|
|
||||||
@@ -34,6 +36,11 @@ type mainButton struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func registerSimpleButton(d *Driver, r *menus.Record) error {
|
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])
|
return registerButton(d, r, r.SpriteId[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,7 +15,42 @@ import (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// These menu types don't need driving, so we can ignore them
|
// 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 (
|
const (
|
||||||
|
Reference in New Issue
Block a user