lawless/server/main.go

89 行
2.9 KiB
Go

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

// Package main 是《洪荒大陆》Nakama Go 模块入口。
// 通过 InitModule 注册 RPC、初始化数据库与 Nacos 配置。
package main
import (
"context"
"database/sql"
"github.com/heroiclabs/nakama-common/runtime"
"github.com/honghuang-game/server/config"
"github.com/honghuang-game/server/internal/db"
"github.com/honghuang-game/server/modules"
)
// InitModule 是 Nakama 要求的模块初始化入口。
func InitModule(ctx context.Context, logger runtime.Logger, dbsql *sql.DB, nk runtime.NakamaModule, initializer runtime.Initializer) error {
logger.Info("Honghuang server module initializing...")
// 1. 初始化 Nacos 配置中心
cfg, err := config.NewNacosConfig("", "")
if err != nil {
logger.Error("Nacos config init failed: %v", err)
// 骨架阶段允许降级为本地默认值,生产环境建议直接返回 error
config.Global = config.NewStaticConfig(nil)
} else {
config.Global = cfg
dataIDs := []string{
"honghuang-global.yaml",
"honghuang-combat.yaml",
"honghuang-economy.yaml",
"honghuang-map.yaml",
"honghuang-event.yaml",
"honghuang-cultivation.yaml",
}
for _, dataID := range dataIDs {
if loadErr := config.Global.Load(dataID, "DEFAULT_GROUP"); loadErr != nil {
logger.Warn("load config %s failed: %v", dataID, loadErr)
}
}
}
// 2. 初始化 PostgreSQL 连接池pgx
if err := db.Init(ctx); err != nil {
logger.Error("Database init failed: %v", err)
return err
}
// 3. 注册各模块 RPC
registrars := []func(runtime.Initializer) error{
modules.RegisterAuth,
modules.RegisterCharacter,
modules.RegisterRealm,
modules.RegisterBattle,
modules.RegisterManual,
modules.RegisterSkill,
modules.RegisterEconomy,
modules.RegisterSocial,
modules.RegisterMap,
modules.RegisterDisciple,
modules.RegisterArtifact, // 法宝对战系统
modules.RegisterFormation, // 阵法系统
modules.RegisterTribulation, // 渡劫系统
modules.RegisterRaceProgression, // 种族独立升级系统
modules.RegisterAlchemy, // 炼丹系统
modules.RegisterForging, // 炼器系统
modules.RegisterSect, // 宗门系统
modules.RegisterRebirth, // 种族转生系统
modules.RegisterMercenary, // 佣兵大厅系统
modules.RegisterRareTreasure, // 稀有宝物流转系统
modules.RegisterCave, // 洞府系统
modules.RegisterFriendParty, // 好友组队系统
modules.RegisterMonster, // 怪物生成系统
modules.RegisterWorldBoss, // 世界Boss系统
modules.RegisterAchievement, // 成就图鉴系统
modules.RegisterNPCFaction, // NPC势力系统
modules.RegisterChat, // 聊天系统
}
for _, fn := range registrars {
if err := fn(initializer); err != nil {
logger.Error("Register RPC failed: %v", err)
return err
}
}
logger.Info("Honghuang server module initialized successfully")
return nil
}