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;
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }