package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // Phone menu skin parts (手机壁纸 / 装饰 / 挂件). // The client's "apply" button only sends AskSetMobileSkinPart and then waits for the answer. // It never writes the worn suit locally: GameToClientImpl.SyncSpiritMobileSkinPartInfo is the // sole writer of SpiritInfo.MobileSkinInfo, and it is also what fires // ON_SYNC_SPIRIT_SKIN_PART_INFO_CHANGE so MainPhonePanelStore.OnSpiritSkinPartChange re-reads the // value. Because this method previously fell through to the typed-neutral fallback, the whole // sequence ended with "applied successfully" and an unchanged wallpaper: the preview closed, the // panel re-read the untouched login struct, and the wallpaper snapped back. // This handler stores the choice per character (and mirrors it to PlayerProgressStore) and replays // it as SyncSpiritMobileSkinPartInfo so the wallpaper actually changes — and stays changed across // re-logins, because the login payload now carries the stored suit. // The reply stays an empty 0-error body, byte-identical to what the fallback produced, so the // client's existing "close preview / show result toast" branch is untouched. // func GameRouter_MobileSkin_AskSetMobileSkinPart4229938(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_MobileSkin_AskSetMobileSkinPart4229938 var zero any; return zero } func GameRouter_MobileSkin_AskResetMobileSkinPart4229938(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_MobileSkin_AskResetMobileSkinPart4229938 var zero any; return zero } // // Stores the worn suit for the character currently in play and echoes it back. // The spirit id must be a FightSpiritConfig template id, not a unit instance id: the client // looks the character up through SpiritManager.spiritViewDatas, which SyncPlayerInfoSpirit / // SyncPlayerAllSpirits key by SpiritInfo.TemplateId, and GetCurrentSpiritSkinInfo resolves the // same way through gBattleSpiritMgr.currentSpiritTemplateId (= InfoSpirit.ActiveSpirit). // func GameRouter_MobileSkin_ApplyPhoneSkin4229938Async(ctx context.Context, conn any, msg any, wallpaper uint32, decoration uint32, pendant uint32, reason string) any { // Router implementation for GameRouter_MobileSkin_ApplyPhoneSkin4229938Async var zero any; return zero }