/* * Method for controller to put new chips * ----------------------------------------- * x - x coordinate of new chip * y - y coordinate of new chip */ public void PutChip(int x, int y) { Chip newChip = new Chip(turnHolder.CurrentTurnColor, new Cell(x, y)); if (!NewChipIsAllowed(newChip)) { return; } board.AddChip(newChip); List<Chip> changedChips = board.GetChangedChips(newChip, turnHolder.CurrentTurnColor); countHolder.Increase(turnHolder.CurrentTurnColor, changedChips.Count + 1); countHolder.Decrease(turnHolder.OppositeTurnColor, changedChips.Count); SetChips?.Invoke(this, new SetChipsEventArgs { NewChip = newChip, ChangedChips = changedChips }); turnHolder.Switch(); CountChanged?.Invoke(this, new CountChangedEventArgs { CountWhite = countHolder.GetPlayerCount(Color.White), CountBlack = countHolder.GetPlayerCount(Color.Black), }); FinishTurnAndMoveOn(); }
/* * Method asks both model and players to put board field into start position */ private void SetStartBoardPosition() { board.SetStartPosition(); foreach(Chip chip in board.StartChips) { SetChips?.Invoke(this, new SetChipsEventArgs { NewChip = chip, ChangedChips = new List<Chip>() }); } }