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
        }
Esempio n. 2
0
        public static ICommand GetSwapCommand(SwapTypes swapType, ICell cell)
        {
            switch (swapType)
            {
            case SwapTypes.Up:
                return(new SwipeUpCommand(cell));

            case SwapTypes.Down:
                return(new SwipeDownCommand(cell));

            case SwapTypes.Left:
                return(new SwipeLeftCommand(cell));

            case SwapTypes.Right:
                return(new SwipeRightCommand(cell));

            default:
                return(null);
            }
        }