89 行
2.9 KiB
Go
89 行
2.9 KiB
Go
|
|
// 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
|
|||
|
|
}
|