コード例 #1
0
        public bool CanBuildTower(Vector2 pos, Vector2 size)
        {
            if (pos.X < 1 || (size.X > 1 ? pos.X >= 30 : pos.X >= 31))
            {
                return(false);
            }
            bool freePlace = true;
            var  newPoints = new List <Vector2>();
            var  tmpGrid   = (byte[, ])LevelGrid.Clone();

            for (var i = (int)pos.X; i < pos.X + size.X; i++)
            {
                for (var j = (int)pos.Y; j < pos.Y + size.Y; j++)
                {
                    if (GetField(i, j) == 0)
                    {
                        freePlace = false;
                    }
                    SetField(0, i, j);
                    newPoints.Add(new Vector2(i, j));
                }
            }
            bool wayAvailable = IsWayAvailable(Vector2.Zero) && freePlace;

            if (wayAvailable)
            {
                wayAvailable = GamePlayScreen.CheckCreepWay(newPoints);
            }
            for (int i = 0; i < GridCount.X; i++)
            {
                for (int j = 0; j < GridCount.Y; j++)
                {
                    LevelGrid[i, j] = tmpGrid[i, j];
                }
            }
            return(wayAvailable);
        }