init.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package mapPathfind
  2. import (
  3. "f1-game/nodes/map/internal/db"
  4. mapTypes "f1-game/nodes/map/internal/types"
  5. "runtime"
  6. cstring "github.com/cherry-game/cherry/extend/string"
  7. cfacade "github.com/cherry-game/cherry/facade"
  8. )
  9. func Init(app cfacade.IApplication, mapTables *db.LogicTables) {
  10. // 初始化 pathfind actor
  11. workerSize := runtime.NumCPU()
  12. actorPathfind := NewActor(workerSize)
  13. app.ActorSystem().CreateActor(actorPathfind.AliasID(), actorPathfind)
  14. barrierData := loadBarrierData(mapTables)
  15. // 初始化子actor
  16. for i := range workerSize {
  17. childID := cstring.ToString(i)
  18. childActor := newActorPathfind(barrierData)
  19. actorPathfind.Child().Create(childID, childActor)
  20. }
  21. }
  22. // 加载障碍数据
  23. func loadBarrierData(mapTables *db.LogicTables) mapTypes.BarrierData {
  24. barrierData := mapTypes.NewBarrierData()
  25. for _, castleTable := range mapTables.CastleTables {
  26. barrier := castleTable.ToBarrierRequest()
  27. barrierData.Add(barrier)
  28. }
  29. for _, buildTable := range mapTables.BuildTables {
  30. barrier := buildTable.ToBarrierRequest()
  31. barrierData.Add(barrier)
  32. }
  33. return barrierData
  34. }