} // двигает юнита public void BackUnit(Unit unit, CellPoint curPos, CellPoint curTarget) { GameField[curTarget.X, curTarget.Y].CurrentUnit = null; GameField[curPos.X, curPos.Y].CurrentUnit = unit; unit.BacK(unit); }
public bool CellFree(CellPoint CellNew) { return(GameField[CellNew.X, CellNew.Y].CurrentUnit == null); } // проверяет нет ли в поле для хода лучника
public bool MoveUnit(Unit unit, CellPoint CellNew, bool riseEvent) // добавить проверки на функциии убили,не?-убивает, не-проверяет дошел ли он до конца //и воскрешает { var curX = unit.CurrentPosition().X; var curY = unit.CurrentPosition().Y; if (GameField[curX, curY].Targets.Contains(CellNew) && unit.CheckCount(CellNew.X, CellNew.Y)) { var currentPosition = unit.CurrentPosition(); GameField[currentPosition.X, currentPosition.Y].CurrentUnit = null; GameField[CellNew.X, CellNew.Y].CurrentUnit = unit; unit.Step(CellNew.X, CellNew.Y); if (!unit.isDeadUnit) { if (CheckDead(unit)) { GameField[CellNew.X, CellNew.Y].CurrentUnit = null; return(true); } else { if (HumanTeam.Contains(unit)) { for (int X = 0; X < 5; X++) { if (GameField[curX, curY] == GameField[X, 0]) { foreach (var item in HumanTeam) { if (item.Killer && item.isDeadUnit) { item.isDeadUnit = false; GameField[item.StartPosition().X, item.StartPosition().Y].CurrentUnit = item; break; } } } } return(true); } if (ComputerTeam.Contains(unit)) { for (int X = 0; X < 5; X++) { if (GameField[curX, curY] == GameField[X, 4]) { foreach (var item in ComputerTeam) { if (item.Killer && item.isDeadUnit) { item.isDeadUnit = false; GameField[item.StartPosition().X, item.StartPosition().Y].CurrentUnit = item; break; } } } } return(true); } } } if (riseEvent) { UpdateGameState?.Invoke(this, EventArgs.Empty); } return(true); } else { return(false); } } // двигает юнита