Ejemplo n.º 1
0
        IEnumerator FinishedRoom(RoomNode curNode, RoomInstance curRoomInstance)
        {
            yield return(new WaitUntil(() => curRoomInstance.getToDestination != MydirectionData.DirectionEnum.Notready));

            var curDir = curRoomInstance.getToDestination;
            int x = curNode.gridX, y = curNode.gridY;

            MydirectionData.SetDirection(curDir, ref x, ref y);

            if (x < rMax * 2 && x >= 0 && y >= 0 && y < cMax * 2 && _roomDataGenerator.rooms[x, y] != null)
            {
                lastRoom = curNode;
                var nextNode = _roomDataGenerator.rooms[x, y];

                if (true)
                {
                    curRoomInstance.isCurrent = false;
                    NextRoom(nextNode);
                }
            }
            else
            {
                StartCoroutine(FinishedRoom(currentRoom, curRoomInstance));
            }
        }
Ejemplo n.º 2
0
        protected virtual void OnGoalTrigger(GameObject trigger, GameObject other)
        {
            Debug.Log("Goal");

            var gridNode = grid.NodeFromWorldPoint(trigger.transform.position);

            for (int i = 0; i < 4; i++)
            {
                if (gridNode == GetToTarget[i])
                {
                    roomInstance.getToDestination = MydirectionData.SquareVertToDir((MydirectionData.SquareVertEnum)i);
                    break;
                }
            }
        }
Ejemplo n.º 3
0
        ///////////////////////////////// Maze Doors Genearator////////////////////////////////////

        public override void SetDoors()
        {
            GetToTarget = new MazeCellNode[5];
            if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Down) != MydirectionData.DirectionEnum.Notready)
            {
                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Down)] = cells[0, 0].node;
            }
            if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Left) != MydirectionData.DirectionEnum.Notready)
            {
                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Left)] = cells[0, cMax - 1].node;
            }
            if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Right) != MydirectionData.DirectionEnum.Notready)
            {
                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Right)] = cells[rMax - 1, 0].node;
            }
            if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Up) != MydirectionData.DirectionEnum.Notready)
            {
                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Up)] = cells[rMax - 1, cMax - 1].node;
            }

            GetToTarget[(int)MydirectionData.SquareVertEnum.Middle] = cells[(int)rMax / 2, (int)cMax / 2].node;
        }
        ///////////////////////////////// Maze Doors Genearator////////////////////////////////////

        public override void SetDoors()
        {
            GetToTarget = new GridNode[5];

            if ((roomInstance.roomDoors & (MydirectionData.DirectionEnum.Left | MydirectionData.DirectionEnum.Down)) != MydirectionData.DirectionEnum.Notready)
            {
                for (int i = 0; i < rMax; i++)
                {
                    if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Down) != MydirectionData.DirectionEnum.Notready)
                    {
                        for (int j = 0; j < cMax; j++)
                        {
                            if (data[i, j] == 0)
                            {
                                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Down)] = gridNodes[i, j];
                                break;
                            }
                        }
                    }
                    if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Left) != MydirectionData.DirectionEnum.Notready)
                    {
                        for (int j = cMax; j > 0; j--)
                        {
                            if (data[i, j - 1] == 0)
                            {
                                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Left)] = gridNodes[i, j - 1];
                                break;
                            }
                        }
                    }
                }
            }
            if ((roomInstance.roomDoors & (MydirectionData.DirectionEnum.Right | MydirectionData.DirectionEnum.Up)) != MydirectionData.DirectionEnum.Notready)
            {
                for (int i = rMax; i > 0; i--)
                {
                    if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Right) != MydirectionData.DirectionEnum.Notready)
                    {
                        for (int j = 0; j < cMax; j++)
                        {
                            if (data[i - 1, j] == 0)
                            {
                                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Right)] = gridNodes[i - 1, j];
                                break;
                            }
                        }
                    }
                    if ((roomInstance.roomDoors & MydirectionData.DirectionEnum.Up) != MydirectionData.DirectionEnum.Notready)
                    {
                        for (int j = cMax; j > 0; j--)
                        {
                            if (data[i - 1, j - 1] == 0)
                            {
                                GetToTarget[(int)MydirectionData.DirToSquareVert(MydirectionData.DirectionEnum.Up)] = gridNodes[i - 1, j - 1];
                                break;
                            }
                        }
                    }
                }
            }

            for (int i = rMax / 2; i < rMax; i++)
            {
                for (int j = cMax / 2; j < cMax; j++)
                {
                    for (int k = 0; k < 4; k++)
                    {
                        int x = MagicNumbers.FourDirArray[k] + i;
                        int y = MagicNumbers.FourDirArray[k + 1] + j;

                        if (data[x, y] == 0)
                        {
                            GetToTarget[(int)MydirectionData.SquareVertEnum.Middle] = gridNodes[x, y];
                            return;
                        }
                    }
                }
            }
        }