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); }
public void AddChecker(Checker checker) { switch (checker.Color) { case CheckerColor.Black: BlackCheckers.Add(checker); break; case CheckerColor.White: WhiteCheckers.Add(checker); break; } }
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); } }
public void AddWhiteCheckerToBar(Checker checker) { WhiteCheckers.Add(checker); }