package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // Fashion/wardrobe handlers. The client's appearance panel sends // AskSetSpiritFashionsWithSource when the player confirms a skin. Without a // server-side handler the request is dropped and the model reverts to the // login default when the panel closes. We accept the choice and echo it back // via SyncSetSpiritFashions so the worn skin persists. // // ★ 2026-10-02:补上**老版衣柜入口** AskSetSpiritFashions(63347169)(自 7k-v0.6 // GameRouter.Fashion.cs 移植)。它与带 source 的新入口差 2 字节: // 老包 = [u32 spiritId][wear object],新包 = [u32 spiritId][short source][wear object]。 // 做法是在偏移 4 处补一个 short 8(FashionWearSource.Spirit,小端 = 08 00), // 然后**走完全同一套**穿戴逻辑 —— 不另起一条分支,避免两套行为漂移。 // ⛑ 已核对主线契约 AskSetSpiritFashionsWithSource.source 就是 short(FashionMethods.cs:11) // ⇒ 补 2 字节与捐赠端的字节拼接逐字节一致。 func GameRouter_Fashion_AskSetSpiritFashionsWithSource(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Fashion_AskSetSpiritFashionsWithSource var zero any; return zero } func GameRouter_Fashion_ApplyWearAsync(ctx context.Context, conn any, msg any, spiritId uint32, args any) any { // Router implementation for GameRouter_Fashion_ApplyWearAsync var zero any; return zero } // // Wardrobe bookkeeping: "mark fashions as seen", "toggle favourite", "read suit list". // These are INVOKE requests that ask for nothing back — the client only waits for the ack. The // reference branch answers them with an empty OK, and leaving them unrouted is worse than // useless: an unanswered INVOKE leaves the caller awaiting forever, which is exactly the // failure mode that shows up as a wardrobe button that never responds. // The bodies are deliberately not decoded. They are client-local bookkeeping (read receipts, // favourite flags), and inventing a contract for bytes we have never seen would risk a decode // exception on the only path whose job is to always answer. // func GameRouter_Fashion_FashionBookkeepingAccept(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_Fashion_FashionBookkeepingAccept var zero any; return zero }