Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public void Creation()
        {
            PieceDestinationController slotPieceDestinationController = CreatePieceDestinationController();

            Assert.IsNotNull(slotPieceDestinationController);
            Assert.IsTrue(slotPieceDestinationController.State is FixedState);
        }
        private void SetNeighborMovable()
        {
            List <GameObject> neighbors = slotGridItemMover.GetNeighbors();

            foreach (GameObject neighbor in neighbors)
            {
                PieceDestinationController currentNeighborPieceDestinationController = neighbor.GetComponent <PieceDestinationController>();
                currentNeighborPieceDestinationController.SetMovable();
            }
        }
Exemplo n.º 4
0
        public void MovingFromOneSlotToAnother()
        {
            Vector2       pieceDestinePosition = new Vector2(1, 2);
            GridItemMover pieceMover           = CreatePieceMover();
            PieceTranslationController pieceTranslationController = CreatePieceTranslationController(pieceMover);
            PieceDestinationController pieceDestinationController = CreatePieceDestinationController(pieceTranslationController, pieceMover);

            pieceDestinationController.MovePieceToDestinePosition(pieceDestinePosition);

            Assert.AreEqual(pieceDestinePosition, pieceMover.Position);
        }
Exemplo n.º 5
0
        public void SetEmptyStateToRandomSlot()
        {
            Game.GridImplementation slotGrid    = CreateSlotGrid();
            SlotSorting             slotSorting = CreateSlotSortingToGrid(slotGrid);

            GameObject randomSlotObject = slotSorting.GetRandomEmptySlotObject();
            PieceDestinationController randomSlotPieceDestinationController = randomSlotObject.GetComponent <PieceDestinationController>();

            Assert.IsTrue(randomSlotPieceDestinationController.State is EmptyState);
            Assert.IsNull(randomSlotPieceDestinationController.Piece);
        }
Exemplo n.º 6
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 NeigborOfSlotDifferentThanAGivenSlotTurnFixed()
        {
            Game.Grid                  grid                     = CreateSlotGrid();
            GameObject                 slotObject               = GetEmptySlotObjectFromGrid(grid);
            GridItemMover              slotMover                = slotObject.GetComponent <GridItemMover>();
            List <GameObject>          slotNeighbors            = slotMover.GetNeighbors();
            GameObject                 givenSlot                = slotNeighbors[0];
            SlotSelectionServer        givenSlotSelectionServer = givenSlot.GetComponent <SlotSelectionServer>();
            PieceDestinationController slot                     = slotObject.GetComponent <PieceDestinationController>();

            slot.TurnFixedAllNeighborButOne(givenSlotSelectionServer);
            TestNeighborsAreFixedButGivenOne(slotNeighbors, givenSlotSelectionServer);
        }
Exemplo n.º 8
0
        public void MovePieceWhenDestinationControlerIsMovingState()
        {
            Vector2       pieceDestinePosition = new Vector2(1, 2);
            GridItemMover pieceMover           = CreatePieceMover();
            PieceTranslationController pieceTranslationController = CreatePieceTranslationController(pieceMover);
            PieceDestinationController pieceDestinationController = CreatePieceDestinationController(pieceTranslationController, pieceMover);

            pieceDestinationController.SetMovable();

            pieceDestinationController.TakePieceToPosition(pieceDestinePosition);

            Assert.AreEqual(pieceDestinePosition, pieceMover.Position);
        }
        public void TurnFixedAllNeighborButOne(SlotSelectionServer givenSlotSelectionServer)
        {
            List <GameObject> neighbors = slotGridItemMover.GetNeighbors();

            neighbors.RemoveAll
            (
                neighbor =>
                neighbor.GetComponent <SlotSelectionServer>().Equals(givenSlotSelectionServer)
            );

            foreach (GameObject neighbor in neighbors)
            {
                PieceDestinationController currentNeighborPieceDestinationController = neighbor.GetComponent <PieceDestinationController>();
                currentNeighborPieceDestinationController.SetFixed();
            }
        }
Exemplo n.º 10
0
        public void RandomEmptySlotHasMovableNeighbors()
        {
            Game.GridImplementation slotGrid    = CreateSlotGrid();
            SlotSorting             slotSorting = CreateSlotSortingToGrid(slotGrid);

            GameObject        randomSlotObject = slotSorting.GetRandomEmptySlotObject();
            GridItemMover     slotMover        = randomSlotObject.GetComponent <GridItemMover>();
            List <GameObject> slotNeighbors    = slotGrid.GetItemNeighbors(slotMover);

            Assert.Greater(slotNeighbors.Count, 1);
            foreach (GameObject slotNeighbor in slotNeighbors)
            {
                PieceDestinationController currentSlotPieceDestinationController = slotNeighbor.GetComponent <PieceDestinationController>();

                Assert.IsTrue(currentSlotPieceDestinationController.CanMovePiece());
            }
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
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());
        }
Exemplo n.º 13
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);
        }
Exemplo n.º 14
0
        public void WhenEmptySlotReceivePieceItsNeighborShouldTurnFixed()
        {
            Game.Grid         grid              = CreateSlotGrid();
            GameObject        emptySlotObject   = GetEmptySlotObjectFromGrid(grid);
            GameObject        movableSlotObject = GetNeighborOfSlot(emptySlotObject);
            GridItemMover     slotMover         = emptySlotObject.GetComponent <GridItemMover>();
            List <GameObject> slotNeighbors     = slotMover.GetNeighbors();
            Slot emptySlot   = emptySlotObject.GetComponent <Slot>();
            Slot movableSlot = movableSlotObject.GetComponent <Slot>();
            SlotSelectionServer        givenSlotSelectionServer              = movableSlotObject.GetComponent <SlotSelectionServer>();
            PieceDestinationController emptySlotPieceDestinationController   = emptySlotObject.GetComponent <PieceDestinationController>();
            PieceDestinationController movableSlotPieceDestinationController = movableSlotObject.GetComponent <PieceDestinationController>();

            movableSlot.Touch();
            emptySlot.Touch();

            TestNeighborsAreFixedButGivenOne(slotNeighbors, givenSlotSelectionServer);
        }
        public void SelectSlot(SlotSelectionServer slotSelectionServer, PieceDestinationController pieceDestinationController)
        {
            SelectedSlotSevers.Add(slotSelectionServer);

            if (SelectedSlotSevers.Count < MAXIMUN_AMOUNT_OF_SLOTS_SELECTED)
            {
                return;
            }

            bool firstCanMovePiece     = SelectedSlotSevers[0].CanMovePiece();
            bool secondCanReceivePiece = SelectedSlotSevers[1].CanReceivePiece();

            if (firstCanMovePiece && secondCanReceivePiece)
            {
                SelectedSlotSevers[1].ReceivePieceFromSlot(SelectedSlotSevers[0].PieceDestinationController);
                SelectedSlotSevers[0].TakePieceToPosition(SelectedSlotSevers[1].Position);
            }

            ResetSelectedSlotServers();
        }
Exemplo n.º 16
0
        public void PieceIsAddedToWinController()
        {
            int piecePlaceInGrid = 2;

            (pieceDataSorter as StubPieceDataSorter).pieceData = new StubPieceData(piecePlaceInGrid);
            int maximumPiecesToPlace = 1;
            WinEventController      winEventController        = CreateWinEventController();
            List <PiecePlaceInGrid> correctlyPositionedPieces = new List <PiecePlaceInGrid>();
            WinController           winController             = CreateWinController(correctlyPositionedPieces, winEventController, maximumPiecesToPlace);
            EmptyState emptyState = CreateEmptyState();
            PieceDestinationController movableSlot = CreateSlot(winController, 1, 0, 1);
            PieceDestinationController emptySlot   = CreateSlot(winController, 2, 0, 2);
            bool wasEventTriggered = false;

            winEventController.AddListener(() => wasEventTriggered = true);

            emptyState.ReceivePiece(emptySlot, movableSlot);

            Assert.IsTrue(wasEventTriggered);
        }
Exemplo n.º 17
0
        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());
        }
Exemplo n.º 18
0
        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]);
        }
Exemplo n.º 19
0
        public void ChangePieceParentToDestineSlotAfterMoving()
        {
            Game.Grid  grid              = CreateSlotGrid();
            GameObject emptySlotObject   = GetEmptySlotObjectFromGrid(grid);
            GameObject movableSlotObject = GetNeighborOfSlot(emptySlotObject);
            Slot       emptySlot         = emptySlotObject.GetComponent <Slot>();
            Slot       movableSlot       = movableSlotObject.GetComponent <Slot>();
            PieceDestinationController emptySlotPieceDestinationController   = emptySlotObject.GetComponent <PieceDestinationController>();
            PieceDestinationController movableSlotPieceDestinationController = movableSlotObject.GetComponent <PieceDestinationController>();

            GameObject movedPiece = movableSlotPieceDestinationController.Piece;

            Assert.IsNotNull(movedPiece);

            movableSlot.Touch();
            emptySlot.Touch();

            Assert.IsNotNull(movedPiece);
            Assert.IsNotNull(emptySlotObject.transform);
            Assert.AreEqual(emptySlotObject.transform, movedPiece.transform.parent);
            Assert.IsNotNull(emptySlotPieceDestinationController.Piece);
            Assert.AreEqual(null, movableSlotPieceDestinationController.Piece);
            Assert.AreEqual(movedPiece, emptySlotPieceDestinationController.Piece);
        }
Exemplo n.º 20
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController)
 {
     pieceDestinationController.SetEmpty();
 }
 public void Construct(PieceTranslationController pieceTranslationController, WinController winController)
 {
     pieceDestinationController = new PieceDestinationControllerImplementation(pieceTranslationController, gridItemComponent, winController);
 }
Exemplo n.º 22
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController, Vector2 pieceDestinePosition)
 {
     pieceDestinationController.SetEmpty();
     pieceDestinationController.MovePieceToDestinePosition(pieceDestinePosition);
     pieceDestinationController.Clean();
 }
Exemplo n.º 23
0
 public void ReceivePiece(PieceDestinationController pieceDestinationController, SlotSelectionServer slotSelectionServer)
 {
     pieceDestinationController.SetMovable();
     pieceDestinationController.Piece = slotSelectionServer.Piece;
     pieceDestinationController.TurnFixedAllNeighborButOne(slotSelectionServer);
 }
Exemplo n.º 24
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController)
 {
 }
 public void SelectSlot(SlotSelectionServer slotSelectionServer, PieceDestinationController pieceDestinationController)
 {
     slotSelection.SelectSlot(slotSelectionServer, pieceDestinationController);
 }
Exemplo n.º 26
0
 public SlotImplementation(SlotSelection slotSelection, PieceDestinationController pieceDestinationController, Positioner positioner)
 {
     this.slotSelection = slotSelection;
     this.pieceDestinationController = pieceDestinationController;
     this.positioner = positioner;
 }
Exemplo n.º 27
0
 public void TakePieceFromSlot(PieceDestinationController pieceDestinationController, Vector2 pieceDestinePosition)
 {
 }
Exemplo n.º 28
0
 public void ReceivePiece(PieceDestinationController pieceDestinationController, SlotSelectionServer slotSelectionServer)
 {
 }
Exemplo n.º 29
0
 private Slot CreateSlot(SlotSelection slotSelection, PieceDestinationController pieceDestinationController, Positioner positioner = null)
 {
     return(new SlotImplementation(slotSelection, pieceDestinationController, positioner));
 }
Exemplo n.º 30
0
        private Slot CreateSlot(SlotSelection slotSelection, PieceDestinationController pieceDestinationController)
        {
            Positioner slotPositioner = CreateSlotPositioner(Vector2.zero);

            return(new SlotImplementation(slotSelection, pieceDestinationController, slotPositioner));
        }