Ejemplo n.º 1
0
    public bool TryMove(CheckerMove move, bool end)
    {
        var success = false;

        if (_allCheckers.ContainsKey(move.oldCoords))
        {
            var checker     = _allCheckers[move.oldCoords];
            var isValidMove = checker.IsValidMove(move.destinationCoords);
            var isValidKill = !move.isKill || _allCheckers.ContainsKey(move.killCoords);

            success = isValidMove && isValidKill;

            if (success)
            {
                if (move.isKill)
                {
                    var killedChecker = _allCheckers[move.killCoords];
                    _allCheckers.Remove(move.killCoords);

                    bool isKilledWhite = killedChecker.IsWhite;
                    if (isKilledWhite)
                    {
                        WhiteCheckers.Remove(killedChecker);
                    }
                    else
                    {
                        BlackCheckers.Remove(killedChecker);
                    }
                    killedChecker.Die();
                }

                Debug.Log("SetCoords");

                checker.SetCoords(move.destinationCoords);

                _allCheckers.Remove(move.oldCoords);
                _allCheckers.Add(move.destinationCoords, checker);


                // Check end game.
                if (WhiteCheckers.Count == 0)
                {
                    OnGameEnd(false);
                }
                else if (BlackCheckers.Count == 0)
                {
                    OnGameEnd(true);
                }
            }
        }

        if (success && end)
        {
            isWhiteMove = !isWhiteMove;
        }
        return(success);
    }
Ejemplo n.º 2
0
        public void AddChecker(Checker checker)
        {
            switch (checker.Color)
            {
            case CheckerColor.Black:
                BlackCheckers.Add(checker);
                break;

            case CheckerColor.White:
                WhiteCheckers.Add(checker);
                break;
            }
        }
Ejemplo n.º 3
0
    void CreateCheckerRow(int y, bool isWhite)
    {
        int beginCell = y % 2 == 0 ? 2 : 1;

        for (int x = beginCell; x <= beginCell + 6; x += 2)
        {
            var createdChecker = Instantiate(_checkerPrefab, CheckerToWorldCoords(y, x),
                                             Quaternion.identity, transform);

            var checkerCoords = new CheckerCoords(y, x);
            createdChecker.Init(this, checkerCoords, isWhite);

            if (isWhite)
            {
                WhiteCheckers.Add(createdChecker);
            }
            else
            {
                BlackCheckers.Add(createdChecker);
            }

            _allCheckers.Add(checkerCoords, createdChecker);
        }
    }
Ejemplo n.º 4
0
 public void AddWhiteCheckerToBar(Checker checker)
 {
     WhiteCheckers.Add(checker);
 }