@@ -38,7 +38,6 @@ const GAME_OPTIONS = Object.freeze([
3838] ) ;
3939
4040const refs = {
41- gameSelect : document . getElementById ( "skinEditorGameSelect" ) ,
4241 loadButton : document . getElementById ( "skinEditorLoadButton" ) ,
4342 saveOverrideButton : document . getElementById ( "skinEditorSaveOverrideButton" ) ,
4443 clearOverrideButton : document . getElementById ( "skinEditorClearOverrideButton" ) ,
@@ -52,6 +51,7 @@ const refs = {
5251} ;
5352
5453const state = {
54+ activeGameId : "" ,
5555 presetSkinPath : "" ,
5656 presetSkin : null
5757} ;
@@ -83,10 +83,13 @@ function getGameOptionById(gameId) {
8383}
8484
8585function getSelectedGameOption ( ) {
86- if ( ! ( refs . gameSelect instanceof HTMLSelectElement ) ) {
87- return null ;
88- }
89- return getGameOptionById ( refs . gameSelect . value ) ;
86+ return getGameOptionById ( state . activeGameId ) || GAME_OPTIONS [ 0 ] || null ;
87+ }
88+
89+ function resolveActiveGameOption ( initialGameId = "" ) {
90+ const selected = getGameOptionById ( initialGameId ) || GAME_OPTIONS [ 0 ] || null ;
91+ state . activeGameId = selected ? selected . id : "" ;
92+ return selected ;
9093}
9194
9295function setStatus ( message ) {
@@ -188,6 +191,7 @@ async function loadActiveSkinForSelectedGame() {
188191
189192 const shouldUsePreset = state . presetSkin
190193 && normalizeText ( state . presetSkin . gameId ) . toLowerCase ( ) === game . id . toLowerCase ( ) ;
194+ const skinSource = shouldUsePreset ? "preset" : result . source ;
191195 const loadedSkin = shouldUsePreset
192196 ? buildNormalizedSkinDocument ( game , state . presetSkin )
193197 : buildNormalizedSkinDocument ( game , result . skin ) ;
@@ -198,7 +202,7 @@ async function loadActiveSkinForSelectedGame() {
198202 if ( refs . input instanceof HTMLTextAreaElement ) {
199203 refs . input . value = toPrettyJson ( loadedSkin ) ;
200204 }
201- setSummary ( formatSummary ( game , state . presetSkin ? "preset" : result . source , loadedSkin ) ) ;
205+ setSummary ( formatSummary ( game , skinSource , loadedSkin ) ) ;
202206 setStatus ( `Loaded active skin for ${ game . label } .` ) ;
203207}
204208
@@ -281,18 +285,6 @@ async function importSkinJsonFromFile(file) {
281285 setStatus ( "Imported skin JSON. Review and click Apply Skin Override." ) ;
282286}
283287
284- function populateGameSelect ( initialGameId = "" ) {
285- if ( ! ( refs . gameSelect instanceof HTMLSelectElement ) ) {
286- return ;
287- }
288- refs . gameSelect . innerHTML = GAME_OPTIONS
289- . map ( ( game ) => `<option value="${ game . id } ">${ game . label } </option>` )
290- . join ( "" ) ;
291-
292- const selected = getGameOptionById ( initialGameId ) || GAME_OPTIONS [ 0 ] ;
293- refs . gameSelect . value = selected . id ;
294- }
295-
296288function extractPresetPayload ( rawPreset ) {
297289 if ( ! rawPreset || typeof rawPreset !== "object" ) {
298290 return { } ;
@@ -363,16 +355,11 @@ function bindEvents() {
363355 }
364356 input . value = "" ;
365357 } ) ;
366- refs . gameSelect ?. addEventListener ( "change" , ( ) => {
367- state . presetSkin = null ;
368- state . presetSkinPath = "" ;
369- void loadActiveSkinForSelectedGame ( ) ;
370- } ) ;
371358}
372359
373360async function bootSkinEditor ( ) {
374361 const { gameId, presetLoaded } = await loadPresetFromQuery ( ) ;
375- populateGameSelect ( gameId ) ;
362+ resolveActiveGameOption ( gameId ) ;
376363 bindEvents ( ) ;
377364 await loadActiveSkinForSelectedGame ( ) ;
378365 if ( presetLoaded ) {
0 commit comments