예제 #1
0
        } // двигает юнита

        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);
        }
예제 #2
0
 public bool CellFree(CellPoint CellNew)
 {
     return(GameField[CellNew.X, CellNew.Y].CurrentUnit == null);
 } // проверяет нет ли в поле для хода лучника
예제 #3
0
        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);
            }
        } // двигает юнита