private void SubscribePathFinding_SearchingObstacle(object sender, SearchObstacleEventArgs e) { int[] position = GetComponent <MetaInfo>().Position; SubTag subTag = GetComponent <MetaInfo>().SubTag; switch (GetComponent <MetaInfo>().MainTag) { case MainTag.Altar: e.Impassable.Push(position); break; case MainTag.Trap: e.Trap.Push(position); break; case MainTag.Actor: if (subTag == SubTag.PC) { e.PC = position; } else if (subTag != SubTag.INVALID) { e.Impassable.Push(position); } break; default: break; } }
private SearchObstacleEventArgs SearchObstacle() { Stack <int[]> impassable = new Stack <int[]>(); Stack <int[]> trap = new Stack <int[]>(); int[] pc = new int[] { }; SearchObstacleEventArgs e = new SearchObstacleEventArgs(pc, impassable, trap); GameCore.AxeManCore.GetComponent <PathFinding>() .PublishSearchObstacle(e); return(e); }
private void DrawDistanceMap() { ResetMap(distanceMap, distanceInitial); ResetMap(trapMap, trapInitial); SearchObstacleEventArgs e = SearchObstacle(); Queue <int[]> startPoint = new Queue <int[]>(); startPoint.Enqueue(e.PC); SetObstacle(distanceMap, e.Impassable, impassable); SetObstacle(trapMap, e.Trap, trap); SetDistanceMapValue(e.PC, zeroPoint); SetDistance(startPoint); }