Skip to content

Commit 3744feb

Browse files
committed
Fix 92: defer boot data injection to MMS render#2+ (after first layout)
Root cause of missing player name/gold/diamond/stamina/level text labels: - checkForDelayedBootData was called in MMS render#1 case 0, BEFORE stage.act() runs (inside cprus_BaseScreen_render at case 1) - At that point, PlayerInfoView.getWidth() = 0 (layout not done) - setPlayerName's abbreviation loop: prefWidth > 0 - 0 = TRUE → enters infinite abbreviation loop since no label can fit in width=0 - Loop eventually fails (StringUtils.abbreviate with width<4 throws), addActor never called → player name label is never in the scene Fix 92a: only call checkForDelayedBootData when _mmsRender >= 2 → by render#2, BaseScreen_render (case 1) has run once → stage.act() → layout is valid → getWidth() > 0 Fix 92b: in setPlayerName, guard abbreviation loop with getWidth() > 0 → if not laid out yet, skip abbreviation entirely (label will be re-laid out via invalidate() anyway) https://claude.ai/code/session_01XQ6Lv2cEvrtZLgGCFgDDjT
1 parent 232195d commit 3744feb

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

proto/output/web/classes.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505295,7 +505295,7 @@ cpruwh_PlayerInfoView_setPlayerName = (var$0, var$1) => {
505295505295
break main;
505296505296
}
505297505297
var$7 = $tmp;
505298-
if (var$7 > var$0.$getWidth() - var$0.$avatar0.$getImageWidth()) {
505298+
if (var$0.$getWidth() > 0 && var$7 > var$0.$getWidth() - var$0.$avatar0.$getImageWidth()) { /* Fix 92b: skip abbrev if not laid out yet */
505299505299
$ptr = 7;
505300505300
continue main;
505301505301
}
@@ -1535020,7 +1535020,8 @@ cprus_MainMenuScreen_render = (var$0, var$1) => {
15350201535020
{ let _n = (window._mmsRender = (window._mmsRender||0)+1); if (_n<=3 || _n%500===0) console.info('[MMS] render #'+_n+' firstShow='+var$0.$firstShow+' header='+(var$0.$header0?'ok':'null')); }
15350211535021
{ let _n = window._mmsRender; if (_n === 1) { window._batchTraced = 0; window._flushLog = 0; console.info('[MMS] reset scene trace for MainMenuScreen dump'); } }
15350221535022
/* Fix 91: call checkForDelayedBootData each frame so boot data reaches MainMenuScreen */
1535023-
if (!window._dsBootHandled) cpr_RPG_app.$checkForDelayedBootData();
1535023+
/* Fix 92: only fire AFTER first stage.act() (render#2+) so layout is valid for setPlayerName/setTeamLevel */
1535024+
if (!window._dsBootHandled && window._mmsRender >= 2) cpr_RPG_app.$checkForDelayedBootData();
15350241535025
$ptr = 1;
15350251535026
case 1:
15350261535027
cprus_BaseScreen_render(var$0, var$1);

0 commit comments

Comments
 (0)