// Similar to FillCell but empties the cell the unit moved from public void OccupyCell(BoardCell prevCell, Unit unit) { Occupant = unit; if (unit is Man) { Content[0] = ""; Content[1] = " " + unit.Commander.BoardSign; Content[2] = "___"; } else { Content[0] = ""; Content[1] = "(" + unit.Commander.BoardSign + ")"; Content[2] = "___"; } prevCell.EmptyCell(); }
// clears the board and armies and replaces the pieces with ones stored in redo history item public void Redo() { Player p1 = Players[0]; Player p2 = Players[1]; for (int i = 0; i < p1.ArmyUnits.Count; i++) { Unit unit = p1.ArmyUnits[i]; BoardCell cell = Board.Cells[unit.UnitCoords.X, unit.UnitCoords.Y]; cell.EmptyCell(); } for (int i = 0; i < p2.ArmyUnits.Count; i++) { Unit unit = p2.ArmyUnits[i]; BoardCell cell = Board.Cells[unit.UnitCoords.X, unit.UnitCoords.Y]; cell.EmptyCell(); } p1.ArmyUnits = new List <Unit>(); p1.Kills = 0; p2.ArmyUnits = new List <Unit>(); p2.Kills = 0; m_history.Redo(); HistoryItem item = m_history.CurrItem; p1.Kills = item.P1Kills; p2.Kills = item.P2Kills; for (int i = 0; i < item.P1UnitCoords.Count; i++) { BoardCell cell = Board.Cells[item.P1UnitCoords[i].X, item.P1UnitCoords[i].Y]; switch (item.P1UnitTypes[i]) { case 0: Man man = new Man(item.P1UnitCoords[i].X, item.P1UnitCoords[i].Y, p1); man.MoveDir = -1; cell.FillCell(man); break; case 1: King king = new King(item.P1UnitCoords[i].X, item.P1UnitCoords[i].Y, p1); king.MoveDir = -1; cell.FillCell(king); break; } } for (int i = 0; i < item.P2UnitCoords.Count; i++) { BoardCell cell = Board.Cells[item.P2UnitCoords[i].X, item.P2UnitCoords[i].Y]; switch (item.P2UnitTypes[i]) { case 0: Man man = new Man(item.P2UnitCoords[i].X, item.P2UnitCoords[i].Y, p2); man.MoveDir = 1; cell.FillCell(man); break; case 1: King king = new King(item.P2UnitCoords[i].X, item.P2UnitCoords[i].Y, p2); king.MoveDir = 1; cell.FillCell(king); break; } } Turn = item.Turn; CurrPlayer = Players[Turn % 2]; }