| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package sandMap
- import (
- capp "f1-game/internal/cherry_app"
- checkCenter "f1-game/internal/component/check_center"
- funcLoad "f1-game/internal/component/func_load"
- cgops "f1-game/internal/component/gops"
- "f1-game/internal/component/redis"
- "f1-game/internal/constant"
- "f1-game/internal/data"
- genPool "f1-game/internal/gen_pool"
- nameActor "f1-game/internal/name/actor"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/sessions"
- mapAOI "f1-game/nodes/map/aoi"
- mapExchange "f1-game/nodes/map/exchange"
- "f1-game/nodes/map/internal/db"
- facadeInit "f1-game/nodes/map/internal/facade/init"
- mapLeague "f1-game/nodes/map/league"
- mapLogic "f1-game/nodes/map/logic"
- "f1-game/nodes/map/ops"
- mapPathfind "f1-game/nodes/map/pathfind"
- mapPlayer "f1-game/nodes/map/player"
- "f1-game/nodes/map/rank"
- "f1-game/nodes/map/scout"
- mapSeason "f1-game/nodes/map/season"
- mapUnion "f1-game/nodes/map/union"
- "github.com/cherry-game/cherry"
- csnowflake "github.com/cherry-game/cherry/extend/snowflake"
- cfacade "github.com/cherry-game/cherry/facade"
- clog "github.com/cherry-game/cherry/logger"
- )
- func Run(node cfacade.INode) {
- app := cherry.ConfigureNode(
- node,
- false,
- cherry.Cluster,
- )
- app.Register(initBeforeFunc())
- app.Register(cgops.New())
- app.Register(data.New())
- app.Register(redis.NewClients(
- redis.GUID,
- redis.Game,
- ))
- app.Register(checkCenter.New())
- app.Register(db.NewMap())
- app.Register(initAfterFunc())
- app.AddActors(
- sessions.NewActor(true),
- genPool.NewActor(node.NodeID()),
- mapSeason.NewActor(),
- ops.NewActor(),
- rank.NewActor(),
- )
- app.ActorSystem().SetArrivalTimeout(50)
- app.ActorSystem().SetExecutionTimeout(50)
- app.Startup()
- }
- func initBeforeFunc() cfacade.IComponent {
- fn := func(app cfacade.IApplication) {
- csnowflake.InitDefaultNode(app.NodeID())
- capp.Init(app)
- facadeInit.Load()
- // 当用户断开连接时,触发玩家退出消息
- sessions.SetOnUnbindFunc(func(playerID int64) {
- targetPath := cfacade.NewChildPath("", nameActor.Map_Player, playerID)
- capp.Call(targetPath, nameRemote.MapPlayer_OnSessionClosed, nil)
- })
- }
- return funcLoad.New("initBeforeFunc", fn)
- }
- func initAfterFunc() cfacade.IComponent {
- fn := func(app cfacade.IApplication) {
- initMap(app)
- }
- return funcLoad.New("initAfterFunc", fn)
- }
- // Init 初始化各地图actor的数据
- func initMap(app cfacade.IApplication) {
- if app.NodeType() != constant.NodeMap {
- clog.Fatalf("Node type error. nodeType =%s, nodeID = %s", capp.App().NodeType(), capp.NodeID())
- return
- }
- nodeTable, found := db.GetMapNodeTable(capp.NodeID())
- if !found {
- clog.Fatalf("NodeID not found. nodeID = %s", capp.NodeID())
- }
- // 加载玩家数据
- playerTables := db.LoadPlayerTables(capp.NodeID())
- if playerTables == nil {
- clog.Fatalf("Load player table fail. nodeID = %s", capp.NodeID())
- }
- // 加载联盟数据
- leagueTables := db.LoadLeagueTables(capp.NodeID())
- if leagueTables == nil {
- clog.Fatalf("Load league table fail. nodeID = %s", capp.NodeID())
- }
- // 初始化 联盟
- mapLeague.Init(app, leagueTables)
- // 初始化 侦察
- mapScoutTable, found := db.GetMapScoutTable(capp.NodeID())
- if !found {
- clog.Fatalf("Load map scout table fail. nodeID=%s", capp.NodeID())
- }
- scout.Init(app, mapScoutTable)
- // 加载交易所相关数据到缓存
- db.LoadMapExchangeStatsTables()
- exchangeDeliverTables := db.LoadMapExchangeDeliverTables()
- exchangeTables := db.LoadMapExchangeTables()
- mapExchange.Init(app, exchangeTables, exchangeDeliverTables)
- // 加载地编数据
- data.MapID.LoadData(capp.NodeID())
- // 加载地图数据
- mapTables := db.LoadLogicData(nodeTable)
- if mapTables == nil {
- clog.Fatalf("Load map data fail. nodeID = %s", capp.NodeID())
- }
- // 初始化 pathfind
- mapPathfind.Init(app, mapTables)
- // 初始化 AOI
- mapAOI.Init(app, mapTables)
- // 初始化 logic 数据
- mapLogic.Init(app, mapTables, playerTables, leagueTables)
- // 初始化 mapPlayer
- mapPlayer.Init(app, playerTables)
- // 初始化 联邦
- mapUnion.Init(app)
- }
|