Пример #1
0
        public IEnumerator Board_Create_NotNull(int width, int height)
        {
            #region Create Board

            IBoard board = ObjectsCreator.CreateBoard(width, height);

            #endregion

            #region Check Board

            board.Initial();
            Assert.IsNotNull(board);

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(0.25f));

            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
        public void NavigationManager_Create_NotNull()
        {
            IMasterManager masterManager = ObjectsCreator.CreateMasterManager();

            INavigationManager navigationManager = new NavigationManager(masterManager);

            Assert.IsNotNull(navigationManager);
        }
Пример #3
0
    private void Initialize()
    {
        dynamicObjects = ObjectsCreator.GetDynamicObjects();

        bombsPowerupInfo    = dynamicObjects.GetBombsImage();
        flamesPowerupInfo   = dynamicObjects.GetFlamesImage();
        speedPowerupInfo    = dynamicObjects.GetSpeedImage();
        wallpassPowerupInfo = dynamicObjects.GetWallpassImage();
    }
Пример #4
0
        private void Initialize()
        {
            staticObjects  = ObjectsCreator.GetStaticObjects();
            dynamicObjects = ObjectsCreator.GetDynamicObjects();

            fieldMatrix = new int[columnCount, rowCount];

            floor        = staticObjects.GetFloor();
            concreteWall = staticObjects.GetConcreteWall();
            brickWall    = staticObjects.GetBrickWall();
            powerups     = staticObjects.GetPowerups();
        }
        public IEnumerator Cell_SwapAndUndo(SwapTypes swapType)
        {
            #region Create Managers

            IMasterManager masterManager = ObjectsCreator.CreateMasterManager();

            ISpawnManager    spawnManager    = masterManager.SpawnManager;
            INotifier        notifier        = masterManager.GameplayNotifier;
            IUpdateManager   updateManager   = masterManager.UpdateManager;
            ICellRegistrator cellRegistrator = new CellRegistrator(notifier, updateManager);

            #endregion

            #region Create Cell

            Vector3 position = new Vector3(1, 1, 0);
            ICell   cellA    = spawnManager.SpawnRandomNormalCell(position);
            cellRegistrator.RegistrateNormalCell(cellA as NormalCell);

            #endregion

            #region SetUp UpdateManager

            updateManager.AddUpdatable(cellA as IUpdatable);
            updateManager.IsUpdate = true;

            #endregion

            yield return(new WaitForSeconds(0.3f));

            #region Swap Cell and do Undo

            ICommand swapCommand = TestHelper.GetSwapCommand(swapType, cellA);
            swapCommand.Execute();

            yield return(new WaitForSeconds(0.5f));

            swapCommand.Undo();

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(0.5f));

            GameObject.Destroy(cellA.CurrentGameObject);

            #endregion
        }
Пример #6
0
        public void Level_Create_NotNull()
        {
            int levelId     = 2;
            int boardWidth  = 3;
            int boardHeight = 9;

            ILevelTask levelTaskA = ObjectsCreator.CreateLevelTask(Strings.TAG_REDCIRCLE, 5);
            ILevelTask levelTaskB = ObjectsCreator.CreateLevelTask(Strings.TAG_BLUEMULTIANGLE, 2);

            ILevelTask[] levelTasks = new ILevelTask[] { levelTaskA, levelTaskB };

            ILevel level = new Level(levelId, boardWidth, boardHeight, levelTasks);

            Assert.IsNotNull(level);
        }
Пример #7
0
        public static IEnumerator Explode(GameObject explosionSource, float explosionDelay, float explosionDistance,
                                          Action <RaycastHit[]> callBack)
        {
            yield return(new WaitForSeconds(explosionDelay));

            DynamicObjectsGeneratorBase dynamicObjects = ObjectsCreator.GetDynamicObjects();
            GameObject explosion  = dynamicObjects.GetExplosion();
            GameObject gameObject = UnityEngine.Object.Instantiate(explosion, explosionSource.transform.position,
                                                                   Quaternion.identity);

            GameObject.Destroy(explosionSource);
            RaycastHit[] rayCastHits = GetHits(explosionSource, explosionDistance);
            callBack(rayCastHits);
            yield return(new WaitForSeconds(explosionDelay));

            GameObject.Destroy(gameObject);
        }
Пример #8
0
        public IEnumerator Board_CreateWithOnlyOneElementType(GameElementTypesEnum gameElement, int boardWidth,
                                                              int boardHeight)
        {
            #region Create Board

            IObjectStorage objectStorage = new ObjectStorage();
            ISpawnManager  spawnManager  = new SpawnManager(objectStorage);
            IBoard         board         = ObjectsCreator.CreateBoard(boardWidth, boardHeight);

            #endregion

            yield return(null);

            #region Fill Board

            for (int i = 0; i < board.Width; i++)
            {
                for (int j = 0; j < board.Height; j++)
                {
                    if (board.Cells[i, j] == null)
                    {
                        Vector2 tempPos = new Vector2(i, j);

                        ICell newCell = spawnManager.SpawnNormalCell(gameElement, tempPos);
                        board.Cells[i, j] = newCell;

                        yield return(new WaitForSeconds(.1f));
                    }
                }
            }

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(.5f));

            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
        public IEnumerator Board_CreateFromLevel_ExpectedEqualHeight(int boardHeight, int expectedResult)
        {
            #region Create Level

            int levelID    = 1;
            int boardWidth = 5;

            ILevelTask   levelTaskA = ObjectsCreator.CreateLevelTask(Strings.TAG_REDCIRCLE, 5);
            ILevelTask   levelTaskB = ObjectsCreator.CreateLevelTask(Strings.TAG_BLUEMULTIANGLE, 12);
            ILevelTask[] levelTasks = new[] { levelTaskA, levelTaskB };

            ILevel level = ObjectsCreator.CreateLevel(levelID, boardWidth, boardHeight, levelTasks);

            #endregion

            #region Create Board

            int width  = level.BoardWidth;
            int height = level.BoardHeight;

            IBoard board = ObjectsCreator.CreateBoard(width, height);

            #endregion

            #region Fill And Check Board

            board.Initial();

            Assert.That(board.Height, Is.EqualTo(expectedResult));

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(.5f));

            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
Пример #10
0
        public IEnumerator Board_CreateFromLevel_NotNull()
        {
            #region create level

            int levelID     = 1;
            int boardWidth  = 5;
            int boardHeight = 5;

            ILevelTask   levelTaskA = ObjectsCreator.CreateLevelTask(Strings.TAG_REDCIRCLE, 5);
            ILevelTask   levelTaskB = ObjectsCreator.CreateLevelTask(Strings.TAG_BLUEMULTIANGLE, 12);
            ILevelTask[] levelTasks = new[] { levelTaskA, levelTaskB };

            ILevel level = ObjectsCreator.CreateLevel(levelID, boardWidth, boardHeight, levelTasks);

            #endregion

            #region create Board
            int width  = level.BoardWidth;
            int height = level.BoardHeight;

            IBoard board = ObjectsCreator.CreateBoard(width, height);

            #endregion

            #region Check board

            board.Initial();
            Assert.IsNotNull(board);

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(0.25f));

            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
Пример #11
0
        public void GameplayLogicManager_Create_NotNull()
        {
            IGameplayLogicManager gameplayLogicManager = ObjectsCreator.CreateGameplayLogicManager();

            Assert.IsNotNull(gameplayLogicManager);
        }
Пример #12
0
        public IEnumerator Cells_TryCheck(int equalsCellsCount, bool isVertical)
        {
            #region Create Managers And Board

            IMasterManager        masterManager;
            ICellRegistrator      cellRegistrator;
            IBoard                board                = ObjectsCreator.CreateBoard(equalsCellsCount + 3, equalsCellsCount + 3, out masterManager, out cellRegistrator);
            IUpdateManager        updateManager        = masterManager.UpdateManager;
            IGameplayLogicManager gameplayLogicManager = ObjectsCreator.CreateGameplayLogicManager();
            INotifier             gameplayNotifier     = masterManager.GameplayNotifier;
            ISpawnManager         spawnManager         = masterManager.SpawnManager;
            IInputManager         inputManager         = new InputManager(gameplayNotifier);
            ICheckManager         checkManager         = new CheckManager();

            #endregion

            #region Create Cells

            int   startX     = 2;
            int   startY     = 2;
            ICell swipedCell = null;

            for (int i = 0; i < equalsCellsCount; i++)
            {
                int x = startX;
                int y = startY;

                if (isVertical)
                {
                    if (i == Mathf.Floor(equalsCellsCount / 2))
                    {
                        x = startX + 1;
                    }
                    else
                    {
                        x = startX;
                    }

                    y = startY + i;
                }
                else
                {
                    if (i == Mathf.Floor(equalsCellsCount / 2))
                    {
                        y = startY + 1;
                    }
                    else
                    {
                        y = startY;
                    }

                    x = startX + i;
                }

                ICell cell = new NormalCell(x, y);
                cell.CurrentGameObject = spawnManager.SpawnPrefab(GameElementTypesEnum.RedCircle, new Vector3(x, y, 0));
                cellRegistrator.RegistrateNormalCell(cell as NormalCell);
                board.Cells[cell.TargetX, cell.TargetY] = cell;

                if (i == Mathf.Floor(equalsCellsCount / 2))
                {
                    swipedCell = board.Cells[cell.TargetX, cell.TargetY];
                }
            }

            #endregion

            yield return(new WaitForSeconds(1f));

            #region SetUp Board And Managers

            board.Initial();

            checkManager.Board = board;

            gameplayLogicManager.Board        = board;
            gameplayLogicManager.CheckManager = checkManager;
            gameplayLogicManager.SpawnManager = spawnManager;
            gameplayLogicManager.Notifier     = masterManager.UINotifier;

            inputManager.AddSubscriber(gameplayLogicManager);
            updateManager.AddUpdatable(inputManager as IUpdatable);

            updateManager.IsUpdate = true;

            #endregion

            yield return(new WaitForSeconds(1f));

            #region Create And SetUp MacroCommand to use swap cells

            ICommand[] commands;

            if (isVertical)
            {
                commands = new ICommand[]
                {
                    new SwipeLeftCommand(swipedCell),
                    new SwipeRightCommand(board.Cells[swipedCell.TargetX - 1, swipedCell.TargetY]),
                };
            }
            else
            {
                commands = new ICommand[]
                {
                    new SwipeDownCommand(swipedCell),
                    new SwipeUpCommand(board.Cells[swipedCell.TargetX, swipedCell.TargetY - 1]),
                };
            }

            ICommand macroCommand = new MacroCommand(commands);

            gameplayLogicManager.MacroCommand = macroCommand;

            #endregion

            #region Try Swap Cells and get Check

            gameplayLogicManager.MacroCommand.Execute();

            yield return(new WaitForSeconds(1f));

            gameplayLogicManager.TryCheckSwipedCells(swipedCell);

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(0.2f));

            updateManager.IsUpdate = false;
            foreach (var boadrdCell in board.Cells)
            {
                updateManager.RemoveUpdatable(boadrdCell as IUpdatable);
            }
            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
Пример #13
0
        public void LevelTask_Create_NotNull()
        {
            ILevelTask levelTask = ObjectsCreator.CreateLevelTask(Strings.TAG_REDCIRCLE, 5);

            Assert.IsNotNull(levelTask);
        }
Пример #14
0
        public void UpdateManager_Create_NotNull()
        {
            IUpdateManager updateManager = ObjectsCreator.CreateUpdateManager();

            Assert.IsNotNull(updateManager);
        }
Пример #15
0
        public void TaskManager_Create_NotNull()
        {
            ITaskManager taskManager = ObjectsCreator.CreateTaskManager();

            Assert.IsNotNull(taskManager);
        }
Пример #16
0
        public IEnumerator PowerUp_UseOnePowerUp_Review(PowerUpTypesEnum powerUpTypeEnum)
        {
            #region Create Managers

            IMasterManager        masterManager;
            ICellRegistrator      cellRegistrator;
            IBoard                board                = ObjectsCreator.CreateBoard(9, 9, out masterManager, out cellRegistrator);
            IUpdateManager        updateManager        = masterManager.UpdateManager;
            IGameplayLogicManager gameplayLogicManager = ObjectsCreator.CreateGameplayLogicManager();
            INotifier             gameplayNotifier     = masterManager.GameplayNotifier;
            ISpawnManager         spawnManager         = masterManager.SpawnManager;
            IInputManager         inputManager         = new InputManager(gameplayNotifier);
            ICheckManager         checkManager         = new CheckManager();


            #endregion

            #region Create And SetUp Cell with PowerUp

            ICell   cellWithPowerUp = new NormalCell(4, 4);
            Vector3 cellPosition    = new Vector2(4, 4);
            cellWithPowerUp.CurrentGameObject = spawnManager.SpawnPowerPrefab(powerUpTypeEnum, cellPosition);
            cellRegistrator.RegistrateNormalCell(cellWithPowerUp as NormalCell);
            board.Cells[cellWithPowerUp.TargetX, cellWithPowerUp.TargetY] = cellWithPowerUp;

            #endregion

            yield return(new WaitForSeconds(0.1f));

            #region SetUp Board and Managers

            board.Initial();

            checkManager.Board = board;

            gameplayLogicManager.Board        = board;
            gameplayLogicManager.CheckManager = checkManager;
            gameplayLogicManager.SpawnManager = spawnManager;
            gameplayLogicManager.Notifier     = new Notifier();

            inputManager.AddSubscriber(gameplayLogicManager);
            updateManager.AddUpdatable(inputManager as IUpdatable);

            updateManager.IsUpdate = true;

            #endregion

            yield return(new WaitForSeconds(0.3f));

            #region Try Use PowerUp

            int swipeCount = 2;
            gameplayLogicManager.TryCheckSwipedCells(cellWithPowerUp, swipeCount);

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(2f));

            updateManager.IsUpdate = false;
            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
Пример #17
0
        public void MasterManager_Create_NotNull()
        {
            IMasterManager masterManager = ObjectsCreator.CreateMasterManager();

            Assert.IsNotNull(masterManager);
        }
Пример #18
0
        public void Coroutine_Create_NotNull()
        {
            ICoroutiner coroutiner = ObjectsCreator.CreateCoroutiner();

            Assert.IsNotNull(coroutiner);
        }
Пример #19
0
        public IEnumerator PowerUp_UseTwoPowerUp_Review(PowerUpTypesEnum powerUpTypeEnumA, PowerUpTypesEnum powerUpTypeEnumB)
        {
            #region Create Managers

            IMasterManager        masterManager;
            ICellRegistrator      cellRegistrator;
            IBoard                board                = ObjectsCreator.CreateBoard(9, 9, out masterManager, out cellRegistrator);
            IUpdateManager        updateManager        = masterManager.UpdateManager;
            IGameplayLogicManager gameplayLogicManager = ObjectsCreator.CreateGameplayLogicManager();
            INotifier             gameplayNotifier     = masterManager.GameplayNotifier;
            ISpawnManager         spawnManager         = masterManager.SpawnManager;
            IInputManager         inputManager         = new InputManager(gameplayNotifier);
            ICheckManager         checkManager         = new CheckManager();

            #endregion

            #region Create And SetUp Cells with PowerUp

            IList <ICell> cellsWithPowerUp = new List <ICell>();

            IList <Vector3> positions = new List <Vector3>();

            switch (powerUpTypeEnumA)
            {
            case PowerUpTypesEnum.Bomb:
                positions.Add(new Vector2(4, 4));
                positions.Add(new Vector2(2, 4));
                break;

            case PowerUpTypesEnum.Vertical:
                positions.Add(new Vector2(3, 3));
                positions.Add(new Vector2(3, 6));
                break;

            case PowerUpTypesEnum.Horizontal:
                positions.Add(new Vector2(3, 3));
                positions.Add(new Vector2(6, 3));
                break;
            }

            for (int i = 0; i < 2; i++)
            {
                ICell   cell         = new NormalCell((int)positions[i].x, (int)positions[i].y);
                Vector3 cellPosition = new Vector2((int)positions[i].x, (int)positions[i].y);
                cell.CurrentGameObject =
                    spawnManager.SpawnPowerPrefab(i == 0 ? powerUpTypeEnumA : powerUpTypeEnumB, positions[i]);
                cellRegistrator.RegistrateNormalCell(cell as NormalCell);
                board.Cells[cell.TargetX, cell.TargetY] = cell;
                cellsWithPowerUp.Add(cell);
            }

            #endregion

            yield return(new WaitForSeconds(0.1f));

            #region SetUp Board and Managers

            board.Initial();

            checkManager.Board = board;

            gameplayLogicManager.Board        = board;
            gameplayLogicManager.CheckManager = checkManager;
            gameplayLogicManager.SpawnManager = spawnManager;
            gameplayLogicManager.Notifier     = new Notifier();

            inputManager.AddSubscriber(gameplayLogicManager);
            updateManager.AddUpdatable(inputManager as IUpdatable);

            updateManager.IsUpdate = true;

            #endregion

            yield return(new WaitForSeconds(0.3f));

            #region Try Use PowerUp

            int swipeCount = 2;
            gameplayLogicManager.TryCheckSwipedCells(cellsWithPowerUp[0], swipeCount);

            #endregion

            #region Remove From Scene

            yield return(new WaitForSeconds(2f));

            updateManager.IsUpdate = false;
            foreach (var cell in board.Cells)
            {
                GameObject.Destroy(cell.CurrentGameObject);
            }

            #endregion
        }
Пример #20
0
        public void CellRegistrator_Create_NotNull()
        {
            ICellRegistrator cellRegistrator = ObjectsCreator.CreateCellRegistrator();

            Assert.IsNotNull(cellRegistrator);
        }