package mapPathfind import ( "f1-game/nodes/map/internal/db" mapTypes "f1-game/nodes/map/internal/types" "runtime" cstring "github.com/cherry-game/cherry/extend/string" cfacade "github.com/cherry-game/cherry/facade" ) func Init(app cfacade.IApplication, mapTables *db.LogicTables) { // 初始化 pathfind actor workerSize := runtime.NumCPU() actorPathfind := NewActor(workerSize) app.ActorSystem().CreateActor(actorPathfind.AliasID(), actorPathfind) barrierData := loadBarrierData(mapTables) // 初始化子actor for i := range workerSize { childID := cstring.ToString(i) childActor := newActorPathfind(barrierData) actorPathfind.Child().Create(childID, childActor) } } // 加载障碍数据 func loadBarrierData(mapTables *db.LogicTables) mapTypes.BarrierData { barrierData := mapTypes.NewBarrierData() for _, castleTable := range mapTables.CastleTables { barrier := castleTable.ToBarrierRequest() barrierData.Add(barrier) } for _, buildTable := range mapTables.BuildTables { barrier := buildTable.ToBarrierRequest() barrierData.Add(barrier) } return barrierData }