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 }
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); } }