Skip to content

Commit 2185571

Browse files
committed
Improve cc-instanceinator compatibility
1 parent 640169d commit 2185571

3 files changed

Lines changed: 29 additions & 20 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
### Fixed
88

99
- Improve browser compatibility
10+
- Fix mod menu sometimes opening empty
11+
- Improve cc-instanceinator compatibility
1012

1113
## [1.0.3] 2025-02-16
1214

src/gui/install-dialogs.ts

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { FileCache } from '../cache'
21
import { Lang } from '../lang-manager'
32
import { LocalMods } from '../local-mods'
43
import { InstallQueue, ModInstaller, ModInstallerDownloadingProgress } from '../mod-installer'
@@ -129,11 +128,14 @@ export class ModInstallDialogs {
129128
dialogUpdate()
130129
}
131130

131+
// @ts-ignore allow cc-instanceinator to hook sc.Dialogs.showYesNoDialog
132+
sc.Dialogs.id = window.instanceinator?.id
133+
132134
const toInstall = InstallQueue.values()
133135
ModInstaller.install(toInstall)
134136
.then(() => {
135137
InstallQueue.clear()
136-
modmanager.gui.menu &&
138+
if (modmanager.gui.menu)
137139
sc.Model.notifyObserver(modmanager.gui.menu, modmanager.gui.MENU_MESSAGES.UPDATE_ENTRIES)
138140

139141
ModInstaller.eventListeners.splice(eventIndex, 1)
@@ -208,13 +210,20 @@ export class ModInstallDialogs {
208210
sc.DIALOG_INFO_ICON.QUESTION,
209211
[ig.lang.get('sc.gui.dialogs.yes'), ig.lang.get('sc.gui.dialogs.no')],
210212
button => {
213+
// @ts-ignore allow cc-instanceinator to hook sc.Dialogs.showYesNoDialog
214+
sc.Dialogs.id = window.instanceinator?.id
215+
211216
if (button.data == 0) {
212217
ModInstaller.uninstallMod(localMod)
213218
.then(() => {
214219
localMod.awaitingRestart = true
215220
localMod.active = false
216221
localMod.uninstalled = true
217-
sc.Model.notifyObserver(modmanager.gui.menu, modmanager.gui.MENU_MESSAGES.UPDATE_ENTRIES)
222+
if (modmanager.gui.menu)
223+
sc.Model.notifyObserver(
224+
modmanager.gui.menu,
225+
modmanager.gui.MENU_MESSAGES.UPDATE_ENTRIES
226+
)
218227
sc.BUTTON_SOUND.shop_cash.play()
219228
sc.Dialogs.showYesNoDialog(
220229
Lang.askRestartUninstall,
@@ -251,24 +260,22 @@ export class ModInstallDialogs {
251260
return false
252261
}
253262

254-
static async checkCanEnableMod(mod: ModEntryLocal): Promise<ModEntryLocal[] | undefined> {
263+
static checkCanEnableMod(mod: ModEntryLocal, callback: (deps: ModEntryLocal[] | undefined) => void) {
255264
const deps = LocalMods.findDeps(mod).filter(mod => !mod.active)
256-
if (deps.length == 0) return []
265+
if (deps.length == 0) return callback([])
257266

258-
return new Promise(resolve => {
259-
sc.Dialogs.showYesNoDialog(
260-
Lang.doYouWantToEnable
261-
.replace(/\[modName\]/, prepareModName(mod.name))
262-
.replace(/\[mods\]/, deps.map(mod => `- ${yellow}${prepareModName(mod.name)}${white}\n`).join('')),
263-
sc.DIALOG_INFO_ICON.QUESTION,
264-
button => {
265-
if (button.data == 0) {
266-
resolve(deps)
267-
} else {
268-
resolve(undefined)
269-
}
267+
sc.Dialogs.showYesNoDialog(
268+
Lang.doYouWantToEnable
269+
.replace(/\[modName\]/, prepareModName(mod.name))
270+
.replace(/\[mods\]/, deps.map(mod => `- ${yellow}${prepareModName(mod.name)}${white}\n`).join('')),
271+
sc.DIALOG_INFO_ICON.QUESTION,
272+
button => {
273+
if (button.data == 0) {
274+
callback(deps)
275+
} else {
276+
callback(undefined)
270277
}
271-
)
272-
})
278+
}
279+
)
273280
}
274281
}

src/gui/list-entry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ modmanager.gui.ListEntry = ig.FocusGui.extend({
268268
sc.Model.notifyObserver(modmanager.gui.menu, modmanager.gui.MENU_MESSAGES.ENTRY_UNFOCUSED, this)
269269
},
270270
tryEnableMod(mod: ModEntryLocal) {
271-
ModInstallDialogs.checkCanEnableMod(mod).then(deps => {
271+
ModInstallDialogs.checkCanEnableMod(mod, deps => {
272272
if (deps === undefined) return
273273
deps.push(mod)
274274
for (const mod of deps) {

0 commit comments

Comments
 (0)