示例#1
0
        // 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();
        }
示例#2
0
        // 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];
        }