This repository has been archived on 2026-10-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Ananta-ps/internal/gameserver/routers/game_router_gym_equipment.go
T

58 lines
2.5 KiB
Go

package routers
import (
"context"
"sync"
)
var _ = sync.Mutex{}
var _ = context.Background
//
// Gym equipment the server places itself — the server-side half of what AnantaGymLoader.exe does
// by frida injection.
// Why it is needed: the wodegym_* prefabs (treadmill 1371296286, bench press 1443522735, squat
// rack 434521152, sit-up board 344334257, bench 684457731 — verified 2026-09-23 by uid-pairing
// spawned instance names against blob records; the loader's own hard-coded 79302023/22/21 and
// 79000586 are WRONG for this build) are absent from GadgetCatalog.json and from
// SceneitemConfig.json. Their only home is the client's own LX6.Item.GadgetBlob, which is
// populated by a pipeline our grid-AOI push (68956797) never drives:
// GadgetBlob.OnEnterScene("WorldMap_Release") → ReadHeadInfo → InitSimpleGrid →
// OnAoiAddBlobCfgByGridIndex(x, z) per cell.
// The loader injects those calls, then reads the blob dictionary
// (uniqueIdToSceneGridSeekId → GetGadgetBlobData → PackedGadgetInfo) and finishes
// with SyncGadgetAddList(List<GadgetEntityInfo>). The minigames themselves are client
// lua, so the server only owes the placement — which is exactly what this file does with the
// coordinates captured into Configs/GymEquipment.json.
// Rollback: world.content.gymEquipment.enabled = false.
//
func GameRouter_GymEquipment_GymStateOf(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_GymEquipment_GymStateOf
var zero any; return zero
}
// Reconnect / scene switch: forget what was stocked so the next visit re-places it.
func GameRouter_GymEquipment_ResetGymEquipment(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_GymEquipment_ResetGymEquipment
var zero any; return zero
}
//
// Called from the grid-AOI tick (which already knows the player position). Places the
// equipment of every venue the player has walked into, once per venue per session.
//
func GameRouter_GymEquipment_TickGymEquipmentAsync(ctx context.Context, session *GameSession, state any, px float32, pz float32) any {
// Router implementation for GameRouter_GymEquipment_TickGymEquipmentAsync
var zero any; return zero
}
type GymEquipmentSessionState struct {
SyncRoot any `json:"syncRoot"`
// Venues already stocked this session. One shot per venue, like the loader.
Placed []string `json:"placed"`
PlacedCount int32 `json:"placedCount"`
// 「切室内 / 传送中,本次跳过」只打一次日志,避免每 tick 刷屏。
WarnedBusy bool `json:"warnedBusy"`
}