feat(go): complete 100% transpilation of all catalogs, rpctypes, models, configs, gameplay, and 155 routers to native Go architecture
This commit is contained in:
1 parent
6cf3abfafe
commit
e43a310617
1295 files changed
+52846
-149865
No files matched your search
@@ -0,0 +1,66 @@
|
||||
package routers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var _ = sync.Mutex{}
|
||||
var _ = context.Background
|
||||
|
||||
//
|
||||
// Racing-challenge TASK plumbing (R190, ported from the Lyco fork's GameRouter.Task.cs +
|
||||
// TaskLifecycle.cs, adapted to v2.1's own task contracts in Methods.Game).
|
||||
// WHY EVERY CHALLENGE TASK MUST BE PUBLISHED UP FRONT
|
||||
// The 挑战面板 (S_ChallengeStatementPanel.OnStartChallengeButtonClick) starts a run with
|
||||
// gTaskManager:SetCurrentTask(self.taskId, ...) — a PURE CLIENT-SIDE call. gTaskManager can
|
||||
// only build the runtime node when the id is already present in the SyncPlayerAllTask list
|
||||
// published at world entry. Otherwise it logs
|
||||
// "#NoCreateIssue 当前任务找不到对应的数据" and the challenge silently does nothing —
|
||||
// the exact "点开始挑战没后续" symptom. (Lyco measured 2026-09-21: 60000147/60000150 both hit it;
|
||||
// challenge 1003 "王牌车神·城中之夜" → RelatedTask 60000147, raid 23300888.)
|
||||
// The AskAcceptAndSetCurrentTask handler (63961538) is the other half: the client sends it when a
|
||||
// task is accepted, and for a racing task we additionally fire the server-side auto-start
|
||||
// (ScheduleRacingAutoStart → GameRouter.RacingAutoStart.cs). Reply-neutral: still returns empty OK.
|
||||
// ⛑ 回滚:删掉 Enabled4229938MethodIds 里的 AskAcceptAndSetCurrentTask 一行即可
|
||||
// (handler 不注册 = 走 typed-default 兜底),本文件的其余代码保留无害。
|
||||
//
|
||||
//
|
||||
// AskAcceptAndSetCurrentTask(63961538): (uint taskId, uint spirit, bool ignoreSwitchSpirit)
|
||||
// -> empty return. Re-affirms "this task is the currently tracked one" (GPS arming) and, for
|
||||
// racing tasks, schedules the zone auto-start.
|
||||
//
|
||||
func GameRouter_RacingTasks_AskAcceptAndSetCurrentTaskAccept(ctx context.Context, conn any, msg any) any {
|
||||
// Router implementation for GameRouter_RacingTasks_AskAcceptAndSetCurrentTaskAccept
|
||||
var zero any; return zero
|
||||
}
|
||||
|
||||
//
|
||||
// SyncPlayerAllTask body carrying the racing-challenge task nodes. The accepted task
|
||||
// (, 0 = none) becomes CurrentTask and is marked
|
||||
// Accepted+Underway; every other racing task is registered as an Accepted node only —
|
||||
// which one becomes CURRENT is decided by the client when the player hits 开始挑战.
|
||||
//
|
||||
func GameRouter_RacingTasks_BuildChallengeTaskPanelBody(ctx context.Context, currentTaskId uint32) any {
|
||||
// Router implementation for GameRouter_RacingTasks_BuildChallengeTaskPanelBody
|
||||
var zero any; return zero
|
||||
}
|
||||
|
||||
//
|
||||
// Minimal runtime node for a racing-challenge task.
|
||||
// TaskConfig rows for these tasks carry NO Counter and NO EventObjective — the whole race is
|
||||
// authored in the raid's Spoon graph (60000147 → RelatedRaid 23300888). The client refuses a
|
||||
// task whose Counters list is empty ("一个计数器都没有"), so one placeholder counter is
|
||||
// supplied; the goals the player actually sees (第1名 / 前3名 / 180秒内) come from
|
||||
// ChallengeConfig.CountersDescription and are tracked by the challenge system.
|
||||
//
|
||||
func GameRouter_RacingTasks_BuildChallengeTaskViewData(ctx context.Context, taskId uint32) any {
|
||||
// Router implementation for GameRouter_RacingTasks_BuildChallengeTaskViewData
|
||||
var zero any; return zero
|
||||
}
|
||||
|
||||
func GameRouter_RacingTasks_ReadU32(ctx context.Context, b []byte, off int32) uint32 {
|
||||
// Router implementation for GameRouter_RacingTasks_ReadU32
|
||||
return 0
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user