// 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 }