package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // AskMetroGadgetIds(67809129) — the missing half of the metro carriages. // What the client does: it builds the LightRail prefab on its own (see the captured hierarchy // LightRail_4_405/carriage1|2/Seats/Gadgets_888_LightRailChair03_*), then asks the server // which gadget instance ids belong to that train. Every SpoonSlotComponent on a seat needs a // gadget hold before it yields a "sit down" button, and the hold comes from this reply. // Before 2026-09-23 this method had no handler at all, so the answer was the typed-default empty // list (see the log line "unimplemented AskMetroGadgetIds -> typed-default list7-empty 2b"), which // is why the seats inside our carriages stay inert while AnantaTrainSeatLoader.exe can wake them // up by calling SpoonSlotComponent.Init() directly through frida. // Option A (implemented here): hand back invented but stable ids from the server's own 9.5e12 // gadget band. The client only needs an id to bind the local seat slot to. If seats still stay // dead, the fallback is option B — really spawn the chairs through SyncGadgetAdd(68843189) with // the LightRailChair pathIds (843740076 / 1058671153 / 267309514 / 1181678445, iScale must be 0) // and return those instance ids instead. // Rollback: world.content.metroGadgets.enabled = false. // func GameRouter_MetroGadget_OnAskMetroGadgetIds(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_MetroGadget_OnAskMetroGadgetIds var zero any; return zero } // // 同车型(同一 RailCarriageConfig 布局类)里有没有已经配好座位数的兄弟模板? // 有就借用它的值 —— 比退化成 defaultCarriageSeats 更接近真值。 // ⛑ 必须按 key 升序取第一个:Dictionary 的遍历顺序没有保证,同车型存在 // 多个已配值时会取到随机的那个(见 WarnSeatConflict)。 // func GameRouter_MetroGadget_FindSiblingSeats(ctx context.Context, cfg any, layoutClass string, conn any) any { // Router implementation for GameRouter_MetroGadget_FindSiblingSeats var zero any; return zero } // // 同一布局类里配了不一样的座位数 —— 一定是某次实测数错了,喊出来(每条只喊一次)。 // 2026-09-27 现况:Vehicle03/End 同时有 tpl4=4 与 tpl9=6,而两者 // TemplateName(Vehicle03/CarriageOnEnd) 与 ViewModelName(View_Blue_End) // 完全相同,只差 IsRevert(镜像)⇒ 座位数本该一样,现在必有一个是错的。 // func GameRouter_MetroGadget_WarnSeatConflict(ctx context.Context, layoutClass string, values any, conn any) any { // Router implementation for GameRouter_MetroGadget_WarnSeatConflict var zero any; return zero }