public void MovePieceWhenFirstSelectedSlotIsMovableAndSecondCanReceivePiece()
        {
            //TODO: Slot tem que dar a posição dele e não da peça, pq tem slots q não possuem peça
            Vector2       pieceDestinePosition = new Vector2(1, 2);
            SlotSelection slotSelection        = CreateSlotSelection();
            GameObject    pieceObject          = CreatePieceObject();
            GridItemMover pieceMover           = pieceObject.GetComponent <GridItemMover>();
            PieceTranslationController firstPieceTranslationController = CreatePieceTranslationController(pieceObject);
            PieceDestinationController firstPieceDestinationController = CreatePieceDestinationController(firstPieceTranslationController, pieceMover);

            firstPieceDestinationController.SetMovable();
            Positioner slotPositioner = CreateSlotPositioner(pieceDestinePosition);
            Slot       slot1          = CreateSlot(slotSelection, firstPieceDestinationController, slotPositioner);

            GameObject    pieceObject2 = CreatePieceObject();
            GridItemMover pieceMover2  = pieceObject2.GetComponent <GridItemMover>();
            PieceTranslationController secondPieceTranslationController = CreatePieceTranslationController(pieceObject2);
            PieceDestinationController secondPieceDestinationController = CreatePieceDestinationController(secondPieceTranslationController, pieceMover2);

            secondPieceDestinationController.SetEmpty();
            Positioner slotPositioner2 = CreateSlotPositioner(pieceDestinePosition);
            Slot       slot2           = CreateSlot(slotSelection, secondPieceDestinationController, slotPositioner2);

            slot1.Touch();
            slot2.Touch();

            Assert.AreEqual(pieceDestinePosition, pieceMover.Position);
        }
Beispiel #2
0
        public GameObject GetRandomEmptySlotObject()
        {
            int        randomRow    = Random.Range(0, slotGrid.Height);
            int        randomColumn = Random.Range(0, slotGrid.Width);
            GameObject randomSlot   = slotGrid.GetGridItemObjectByRowColumn(randomRow, randomColumn);
            PieceDestinationController pieceDestinationController = randomSlot.GetComponent <PieceDestinationController>();

            GameObject.DestroyImmediate(pieceDestinationController.Piece);
            pieceDestinationController.SetEmpty();
            pieceDestinationController.Clean();

            return(randomSlot);
        }
        public void SelectTwoSlotsByTouching()
        {
            SlotSelection slotSelection = CreateSlotSelection();
            PieceDestinationController firstPieceDestinationController = CreatePieceDestinationController();

            firstPieceDestinationController.SetMovable();
            PieceDestinationController secondPieceDestinationController = CreatePieceDestinationController();

            firstPieceDestinationController.SetEmpty();
            Slot slot1 = CreateSlot(slotSelection, firstPieceDestinationController);
            Slot slot2 = CreateSlot(slotSelection, secondPieceDestinationController);

            slot1.Touch();
            slot2.Touch();

            Assert.AreEqual(0, slotSelection.SelectedSlotSevers.Count);
        }
Beispiel #4
0
        public void WhenEmptyStateAllNeighBorAreMovable()
        {
            grid = CreateSlotGrid(3, 3);
            PieceDestinationController currentSlot    = GetSlotByRowAndColumn(1, 1);
            PieceDestinationController leftNeighbor   = GetSlotByRowAndColumn(1, 0);
            PieceDestinationController rightNeighbor  = GetSlotByRowAndColumn(1, 2);
            PieceDestinationController upNeighbor     = GetSlotByRowAndColumn(0, 1);
            PieceDestinationController bottomNeighbor = GetSlotByRowAndColumn(2, 1);

            currentSlot.SetEmpty();
            currentSlot.Clean();

            Assert.IsTrue(currentSlot.CanReceivePiece());
            Assert.IsTrue(leftNeighbor.CanMovePiece());
            Assert.IsTrue(upNeighbor.CanMovePiece());
            Assert.IsTrue(rightNeighbor.CanMovePiece());
            Assert.IsTrue(bottomNeighbor.CanMovePiece());
        }
Beispiel #5
0
        public void FirstIsMovableAndSecondIsEmpty()
        {
            PieceDestinationController firstPieceDestinationController  = CreatePieceDestinationController();
            PieceDestinationController secondPieceDestinationController = CreatePieceDestinationController();

            firstPieceDestinationController.SetMovable();
            secondPieceDestinationController.SetEmpty();
            SlotSelectionServer slotSelectionServer = new StubSlotSelectionServer(true, false, CreatePieceObject());

            Assert.IsTrue(firstPieceDestinationController.CanMovePiece());
            Assert.IsTrue(secondPieceDestinationController.CanReceivePiece());

            firstPieceDestinationController.TakePiece();
            secondPieceDestinationController.ReceivePieceFromSlot(slotSelectionServer);

            Assert.IsTrue(secondPieceDestinationController.State is MovableState);
            Assert.IsTrue(firstPieceDestinationController.State is EmptyState);
        }
        public void TouchingFirstThatCanNotTakePieceAndSecondThatCanReceive()
        {
            SlotSelection slotSelection = CreateSlotSelection();
            PieceDestinationController firstPieceDestinationController = CreatePieceDestinationController();

            firstPieceDestinationController.SetEmpty();
            PieceDestinationController secondPieceDestinationController = CreatePieceDestinationController();

            secondPieceDestinationController.SetEmpty();
            Slot slot1 = CreateSlot(slotSelection, firstPieceDestinationController);
            Slot slot2 = CreateSlot(slotSelection, secondPieceDestinationController);

            slot1.Touch();
            slot2.Touch();

            Assert.IsTrue(firstPieceDestinationController.CanReceivePiece());
            Assert.IsTrue(secondPieceDestinationController.CanReceivePiece());
            Assert.IsFalse(firstPieceDestinationController.CanMovePiece());
            Assert.IsFalse(secondPieceDestinationController.CanMovePiece());
        }
        public void SelectingTheThirdWillResetSelecting()
        {
            SlotSelection slotSelection = CreateSlotSelection();
            PieceDestinationController firstPieceDestinationController = CreatePieceDestinationController();

            firstPieceDestinationController.SetMovable();
            PieceDestinationController secondPieceDestinationController = CreatePieceDestinationController();

            secondPieceDestinationController.SetEmpty();
            PieceDestinationController thirdPieceDestinationController = CreatePieceDestinationController();

            thirdPieceDestinationController.SetMovable();
            Slot slot1 = CreateSlot(slotSelection, firstPieceDestinationController);
            Slot slot2 = CreateSlot(slotSelection, secondPieceDestinationController);
            Slot slot3 = CreateSlot(slotSelection, thirdPieceDestinationController);

            slot1.Touch();
            slot2.Touch();
            slot3.Touch();

            Assert.AreEqual(1, slotSelection.SelectedSlotSevers.Count);
            Assert.AreEqual(slot3, slotSelection.SelectedSlotSevers[0]);
        }
 public void SetEmpty()
 {
     pieceDestinationController.SetEmpty();
 }
Beispiel #9
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController, Vector2 pieceDestinePosition)
 {
     pieceDestinationController.SetEmpty();
     pieceDestinationController.MovePieceToDestinePosition(pieceDestinePosition);
     pieceDestinationController.Clean();
 }
Beispiel #10
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController)
 {
     pieceDestinationController.SetEmpty();
 }