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_police_donor_glue.go

122 lines
6.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package routers
import (
"context"
"sync"
)
var _ = sync.Mutex{}
var _ = context.Background
//
// ★★ 捐赠端警察链的主线粘合层(2026-10-02)。
// <para>目的:让 GameRouter.LixiPolice.cs / GameRouter.PoliceVehicle.cs /
// GameRouter.PolicePrison.cs / GameRouter.PolicePrisonAnimation.cs /
// GameRouter.PoliceButtons.cs 能逐字编译,而不去改那些捐赠端文件一个字符。
// 本文件里的东西分三类:</para>
// <list type="number">
// <item>捐赠端代码的最小子集:DeliveryText4229938(逐字抄自捐赠端
// GameRouter.Delivery.cs:225-227)、HackerDevices4229938 账本
// (逐字抄自捐赠端 GameRouter.HackerDevices.cs:30 与其 runtime 类的被用字段)。
// ⛑ 只抄被核心链真正引用的成员,机械狗的召唤/控制/武器结算那套没有搬(本次范围外)。</item>
// <item>主线命名适配:GetEnemyRuntimeState → 主线的
// GetLocalEnemyRuntimeState;RunEnemyAttackAiAsync(session, gen, worker)
// → 主线只有单参版本,这里按主线自己的 AttackAiWorkerStarted 闸门转发。</item>
// <item>主线自有、捐赠端没有的保留件:TryFindInLedger /
// RewriteLedgerPosition(原 GameRouter.PolicePrison.cs,被
// GameRouter.PoliceEscort.cs 依赖;捐赠端 PolicePrison.cs 不含这两个方法)。</item>
// </list>
// <para>⛑ 将来若把机械狗/支援/派遣级联搬进来,本文件的第 1 类应整段删除,换成捐赠端真文件。</para>
//
// ================================================================ 主线命名适配
//
// 捐赠端 GameRouter.Enemy.cs:116 的 GetEnemyRuntimeState。
// 主线这套敌人账本叫 LocalEnemyRuntimeState(见 GameRouter.LocalEnemyCombat.cs),
// 语义是同一个"每会话一份敌人账本",所以这里只做类型/命名转发。
// 缺的字段已按捐赠端 EnemyRuntimeState / EnemyRecord 补进那两个类。
//
func GameRouter_PoliceDonorGlue_GetEnemyRuntimeState(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_PoliceDonorGlue_GetEnemyRuntimeState
var zero any; return zero
}
//
// 捐赠端 RunEnemyAttackAiAsync(session, generation, worker)。主线只有单参版本,
// 且用 LocalEnemyRuntimeState.AttackAiWorkerStarted 做"同一会话只起一个 worker"的闸门
// (捐赠端用 AttackAiWorkerGeneration == 0)。这里沿用主线闸门,语义等价。
//
func GameRouter_PoliceDonorGlue_RunEnemyAttackAiAsync(ctx context.Context, session *GameSession, generation int32, worker int64) any {
// Router implementation for GameRouter_PoliceDonorGlue_RunEnemyAttackAiAsync
var zero any; return zero
}
// ================================================================ 捐赠端代码的最小子集
//
// 玩家可见提示通道。逐字抄自捐赠端 GameRouter.Delivery.cs:225-227
// (MethodId.SyncShowMessage,65100728 是捐赠端写死的消息表 id)。
// 捐赠端在牢房 F 被拒时用它把原因打到屏幕上(LixiPolice.cs:546)。
//
func GameRouter_PoliceDonorGlue_DeliveryText4229938(ctx context.Context, session *GameSession, text string) any {
// Router implementation for GameRouter_PoliceDonorGlue_DeliveryText4229938
var zero any; return zero
}
// GetStateIfExists 在 GameRouter 里是 private;GM 桥接(另一个类)要用,开个转发。
func GameRouter_PoliceDonorGlue_GetStateIfExistsPublic(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_PoliceDonorGlue_GetStateIfExistsPublic
var zero any; return zero
}
//
// GM 面板诊断用:S002 root 是否已经发布(PoliceRuntime.RootSent)。
// ⛑ 这是 F 按钮的三个静默前置之一 ——
// RefreshPoliceNpcInitializationPass4229938 里
// if (!LixiReady(state) || !r.RootSent || r.Child != 0) return;,
// RootSent 为 false 时 不发 F 也不打日志,面板上表现为"点了没反应"。
// RootSent 只在 PublishLixiPolice4229938 里置位 ⇒ 没切过里希/没重进就是 false。
//
func GameRouter_PoliceDonorGlue_PoliceRootSentForGm4229938(ctx context.Context, session *GameSession) bool {
// Router implementation for GameRouter_PoliceDonorGlue_PoliceRootSentForGm4229938
return true
}
//
// GM 面板「牢房状态」的只读快照。2026-10-02:移植时把 PolicePrisonStatus 降级成了一堆
// 硬编码占位(entrance="" / inside="" / entranceMeters=null / sceneOk=true),
// 结果「刷新」按钮显示出来的全是假的 ⇒ 用户根本没法判断自己是不是站在门口 4 m 内。
// 这里把捐赠端 PolicePrison.cs 的两个坐标和场景判据原样透出(不新增能力,只补齐可读性)。
//
func GameRouter_PoliceDonorGlue_PolicePrisonSnapshotForGm4229938(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_PoliceDonorGlue_PolicePrisonSnapshotForGm4229938
var zero any; return zero
}
// ================================================================ 主线自有保留件
//
// 在服务端账本里找这个 uid(三本:Ambient 行人 / 地盘敌人 / 功能 NPC)。
// 找不到就不能收押 —— 城里绝大多数路人是客户端本地实体,服务端没有它们的 id。
// ⛑ 这是主线自己的代码(捐赠端没有),被 GameRouter.PoliceEscort.cs 依赖,
// 随捐赠版 PolicePrison.cs 替换而搬到这里保留。
//
func GameRouter_PoliceDonorGlue_TryFindInLedger(ctx context.Context, session *GameSession, uid uint64, ledger string, position Vec3) bool {
// Router implementation for GameRouter_PoliceDonorGlue_TryFindInLedger
return true
}
//
// 改写服务端账本坐标。⛑ 不改的话下一次服务端路网/AI 一拍就把它拽回原处,
// 表现就是「收押成功、一秒后 NPC 又站回街上」。同样是主线自有、捐赠端没有的保留件。
//
func GameRouter_PoliceDonorGlue_RewriteLedgerPosition(ctx context.Context, session *GameSession, uid uint64, p Vec3, stopWalking bool) any {
// Router implementation for GameRouter_PoliceDonorGlue_RewriteLedgerPosition
var zero any; return zero
}
type HackerDeviceRuntime4229938 struct {
Agent uint64 `json:"agent"`
Template uint32 `json:"template"`
Controlled bool `json:"controlled"`
Riding bool `json:"riding"`
}