Repository navigation
fix: keep packaging-content patches working on game 0.4.7f11 - #353
Conversation
f11 replaced ProductIconManager.GenerateIcons (one batch at load) with on-demand GenerateRuntimeIcons(productID). The missing target made Harmony reject the whole ProductPackagingContentPatches class, so ApplyVisuals, GeneratePackagingIcon and GetIcon were unpatched too. The two batch hooks move to their own class, applied only when GenerateIcons exists; on f11 the packaging-icon prefix generates custom icons directly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ifBars
left a comment
There was a problem hiding this comment.
Reviewed at 8c22c42.
Reproduced #352 on SteamCMD-updated 0.4.7f11 Mono (25770882) and IL2CPP (25770926) using published 3.2.1-beta.8: the removed GenerateIcons target prevents registration of all three packaging-content prefixes. This PR registers ApplyVisuals, GeneratePackagingIcon, and GetIcon on both runtimes, and native generated baggie icons contain the custom test content. Visual evidence is in the PR body.
The exact head passes 775 Mono / 749 IL2CPP tests with zero warnings/errors. Both hosted workflows now pass against refreshed private f11 beta references and rebuilt assembly caches, including documentation and API compatibility; deployment was skipped. No source repair was needed in this PR.
The older batch-method build was not rerun. Separate IL2CPP reload-portrait and client-spawn baseline limitations are documented in #351 and the optimization PR reviews. This PR remains open; no merge or release was performed.
|
The two IL2CPP baseline observations now have separate reports: #356 (portraits missing after same-process save reload) and #357 (joining-client Customer.Awake exception and duplicate dealer ID). Both were reproduced with this PR alone, without #354/#355. Their reports distinguish confirmed observations from unverified root causes and record the copied-save/LAN-emulation limits. Proceeding with the user-authorized merge of the tested packaging fix; no release is requested. |
Fixes #352
Summary
Game 0.4.7f11 removed
ProductIconManager.GenerateIcons. Targeting that missing method caused Harmony to reject the entire packaging-content patch class, including the still-validApplyVisuals,GeneratePackagingIcon, andGetIconhooks.Move the optional load-time batch hooks into
ProductIconBatchPatches. ItsPrepare/TargetMethoduse plain reflection and skip that class whenGenerateIconsis absent, while the three packaging-content hooks register normally. Builds with the old batch method retain the existing deferral hooks.Compatibility
Source/binary: no public or protected API changes. Behavior: restore custom packaging content and icons on f11; retain conditional support for the older batch hook. Persistence/networking: no stable ID, save format, payload, or authority changes. Both Mono and IL2CPP use the same optional-target handling.
Validation
SteamCMD updated the local alternate-beta Mono copy to build 25770882 and beta IL2CPP copy to build 25770926, both game 0.4.7f11. Fresh IL2CPP interop wrappers were generated for the updated game.
The exact PR head builds with zero warnings/errors and passes 775/775 MonoMelon tests and 749/749 Il2CppMelon tests. The #353 + repaired #354 + #355 integration passes 792/792 Mono and 766/766 IL2CPP tests.
Reproduced #352 using the published 3.2.1-beta.8 binaries on both updated runtimes: Harmony reports the missing batch target, and all three packaging-content prefixes are absent. With this PR, all three prefixes are registered and the obsolete batch method is confirmed absent.
An asset-bearing probe registered a custom product and baggie content profile, invoked native
ApplyVisuals,GeneratePackagingIcon, andGetIcon, and asserted the generated content transform plus visible red pixels in the 512x512 generated texture. The returned sprite was displayed as an overlay and visually inspected on Mono and IL2CPP; screenshots below show the synthetic red content inside the native baggie. Three copied-save load/quit-to-menu cycles passed on both runtimes in the final integration.The older game build with the batch method was not rerun. Current f11 behavior was exercised directly; support for the older batch remains conditional in source. Existing IL2CPP reload-portrait and four-role client-spawn failures are recorded separately in #351 and in the optimization PRs.
Disposable game assemblies, probes, copied saves, and raw screenshots are excluded from the commit. This PR remains open; no merge or release was performed.
Hosted f11 checks
Both hosted workflows pass after refreshing the private beta assembly references and replacing their stale assembly caches. Documentation, Mono contract tests, the IL2CPP build, and API compatibility pass; deployment is skipped. #354 and #355 need this packaging change before their fresh f11 checks can pass.