Skip to content

Commit bdfe7ac

Browse files
committed
Cleanup back callback logic
1 parent 2185571 commit bdfe7ac

3 files changed

Lines changed: 11 additions & 34 deletions

File tree

src/gui/gui.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@ import { Lang } from '../lang-manager.js'
22
import { registerDynamicIcons, registerModManagerIcons } from './icons.js'
33
import './menu.js'
44

5-
function enterModsMenu(direct: boolean) {
6-
if (direct) {
7-
sc.menu.setDirectMode(true, sc.MENU_SUBMENU.MODS)
8-
sc.model.enterMenu(true)
9-
} else {
10-
sc.menu.pushMenu(sc.MENU_SUBMENU.MODS)
11-
}
12-
}
13-
145
declare global {
156
namespace sc {
167
interface OptionsMenu {
@@ -33,13 +24,14 @@ sc.OptionsMenu.inject({
3324
HIDDEN: { state: { offsetY: -this.modsButton.hook.size.y }, time: 0.2, timeFunction: KEY_SPLINES.LINEAR },
3425
}
3526
this.modsButton.onButtonPress = () => {
36-
enterModsMenu(false)
27+
sc.menu.pushMenu(sc.MENU_SUBMENU.MODS)
3728
}
3829
},
3930
showMenu() {
4031
this.parent()
4132
if (sc.menu.backCallbackStack.length >= 2) {
42-
sc.menu.popBackCallback()
33+
/* the options menu doesnt expect to get shown again,
34+
* so it always adds a pop callback, and it needs to be removed */
4335
sc.menu.popBackCallback()
4436
}
4537
},

src/gui/menu.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ declare global {
6262
setBlackBarVisibility(this: this, visible: boolean): void
6363
setAllVisibility(this: this, visible: boolean): void
6464
updateInstallButtonText(this: this): void
65-
onBackButtonPress(this: this): void
6665
setTabEvent(this: this): void
6766
showModInstallDialog(this: this): void
6867
getCurrentlyFocusedModEntry(this: this): modmanager.gui.ListEntry | undefined
@@ -458,10 +457,9 @@ modmanager.gui.Menu = sc.ListInfoMenu.extend({
458457
if (main?.info) main.info.doStateTransition(state)
459458
if (main?.topBar) main.topBar.doStateTransition(state)
460459
},
461-
showMenu() {
462-
this.parent()
463-
sc.menu.pushBackCallback(() => this.onBackButtonPress())
464-
sc.menu.moveLeaSprite(0, 0, sc.MENU_LEA_STATE.HIDDEN)
460+
showMenu(previousMenu, prevSubmenu) {
461+
this.parent(previousMenu, prevSubmenu)
462+
if (prevSubmenu != sc.MENU_SUBMENU.OPTIONS) sc.menu.popBackCallback()
465463

466464
this.setAllVisibility(true)
467465
this.setBlackBarVisibility(false)
@@ -490,8 +488,6 @@ modmanager.gui.Menu = sc.ListInfoMenu.extend({
490488
},
491489
hideMenu() {
492490
this.parent()
493-
sc.menu.moveLeaSprite(0, 0, sc.MENU_LEA_STATE.LARGE)
494-
this.exitMenu()
495491
this.setAllVisibility(false)
496492
this.setBlackBarVisibility(true)
497493

@@ -517,11 +513,6 @@ modmanager.gui.Menu = sc.ListInfoMenu.extend({
517513
}
518514
})
519515
}
520-
521-
},
522-
onBackButtonPress() {
523-
sc.menu.popBackCallback()
524-
sc.menu.popMenu()
525516
},
526517
createHelpGui() {
527518
if (!this.helpGui) {

src/gui/options/mod-options-menu.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ declare global {
3838
}
3939
}
4040

41-
let menuPurgeTimeoutId: NodeJS.Timeout
4241
modmanager.gui.OptionsMenu = sc.BaseMenu.extend({
4342
init() {
4443
this.parent()
@@ -114,11 +113,14 @@ modmanager.gui.OptionsMenu = sc.BaseMenu.extend({
114113
this.listBox.removeObservers()
115114
},
116115
showMenu(previousMenu, prevSubmenu) {
117-
clearTimeout(menuPurgeTimeoutId)
118116
this.parent(previousMenu, prevSubmenu)
119117

120118
this.addObservers()
121119

120+
sc.menu.pushBackCallback(() => {
121+
sc.menu.popBackCallback()
122+
sc.menu.popMenu()
123+
})
122124
sc.menu.moveLeaSprite(0, 0, sc.MENU_LEA_STATE.HIDDEN)
123125

124126
sc.menu.buttonInteract.addGlobalButton(this.hotkeyHelp, () => sc.control.menuHotkeyHelp())
@@ -131,20 +133,12 @@ modmanager.gui.OptionsMenu = sc.BaseMenu.extend({
131133

132134
this.removeObservers()
133135
sc.menu.moveLeaSprite(0, 0, sc.MENU_LEA_STATE.LARGE)
136+
this.exitMenu()
134137

135138
sc.menu.buttonInteract.removeGlobalButton(this.hotkeyHelp)
136139
sc.menu.buttonInteract.removeGlobalButton(this.hotkeyDefault)
137140

138-
sc.menu.popBackCallback()
139-
140141
this.listBox.hideMenu()
141-
142-
/* purging the menu immediately would disable the smooth fade out transition */
143-
menuPurgeTimeoutId = setTimeout(() => {
144-
const mainMenu = sc.menu.guiReference
145-
mainMenu.removeChildGui(this)
146-
delete mainMenu.submenus[modOptionsMenuId]
147-
}, 1000)
148142
},
149143
commitHotKeysToTopBar(longTransition) {
150144
if (this.getHelpMenuLangData()) sc.menu.addHotkey(() => this.hotkeyHelp)

0 commit comments

Comments
 (0)