Example #1
0
        void BoardInit()
        {
            for (int i = 0; i < boardSize.y; i++)
            {
                for (int j = 0; j < boardSize.x; j++)
                {
                    TileData       myTile     = new TileData();
                    TwoDCoordinate coordinate = new TwoDCoordinate((j * 2), (i * 2));
                    myTile.coordinates = coordinate;

                    if (i == 0 || i == boardSize.y - 1)
                    {
                        if (boardSize.x % 2 == 1)
                        {
                            if (j == boardSize.x / 2)
                            {
                                myTile.isConnected = true;

                                if (i == 0)
                                {
                                    myTile.AddTeam(TeamEnum.Team1);
                                }
                                if (i == boardSize.y - 1)
                                {
                                    myTile.AddTeam(TeamEnum.Team2);
                                }
                            }
                        }
                    }

                    tileData.Add(myTile);
                }
            }
        }
Example #2
0
        bool CanPlace(DiceUnfoldData diceUnfoldData, TwoDCoordinate objPos, Rotation rotation, TeamEnum team)
        {
            bool canPlace = false;

            List <TileData> myTiles = GetMyTiles(diceUnfoldData, objPos, rotation);

            List <TileData> tilesToCheck = new List <TileData>();

            foreach (TileData myTile in myTiles)
            {
                foreach (TileData tile in tileData)
                {
                    if (tile.coordinates.x == myTile.coordinates.x && tile.coordinates.y == myTile.coordinates.y && !tile.isFilled)
                    {
                        tilesToCheck.Add(tile);
                        canPlace = true;
                        break;
                    }
                    else
                    {
                        canPlace = false;
                    }
                }
                if (!canPlace)
                {
                    break;
                }
            }
            if (canPlace)
            {
                foreach (TileData tile in tilesToCheck)
                {
                    if (tile.isConnected == true)
                    {
                        canPlace = true;
                        break;
                    }
                    else
                    {
                        canPlace = false;
                    }
                }
            }
            if (canPlace)
            {
                foreach (TileData tile in tilesToCheck)
                {
                    if (tile.DoesTeamExist(team))
                    {
                        canPlace = true;
                        break;
                    }
                    else
                    {
                        canPlace = false;
                    }
                }
            }
            return(canPlace);
        }
Example #3
0
        public static float FlyDistance(TwoDCoordinate first, TwoDCoordinate second)
        {
            int xDiff = first.x - second.x;
            int yDiff = first.y - second.y;

            if (xDiff < 0)
            {
                xDiff *= -1;
            }

            if (yDiff < 0)
            {
                yDiff *= -1;
            }

            if (yDiff == 0)
            {
                return(xDiff);
            }
            if (xDiff == 0)
            {
                return(yDiff);
            }

            return(MathF.Sqrt((xDiff * xDiff) + (yDiff * yDiff)));
        }
Example #4
0
        public void PlaceBox(DiceUnfoldData diceUnfoldData, TwoDCoordinate objPos, Rotation rotation, TeamEnum team)
        {
            if (CanPlace(diceUnfoldData, objPos, rotation, team))
            {
                List <TileData> myTiles = GetMyTiles(diceUnfoldData, objPos, rotation);

                List <TileData> connectedTiles = new List <TileData>();

                foreach (TileData myTile in myTiles)
                {
                    TileData tile1 = new TileData();
                    tile1.coordinates = new TwoDCoordinate(myTile.coordinates.x + 2, myTile.coordinates.y);
                    connectedTiles.Add(tile1);

                    TileData tile2 = new TileData();
                    tile2.coordinates = new TwoDCoordinate(myTile.coordinates.x - 2, myTile.coordinates.y);
                    connectedTiles.Add(tile2);

                    TileData tile3 = new TileData();
                    tile3.coordinates = new TwoDCoordinate(myTile.coordinates.x, myTile.coordinates.y - 2);
                    connectedTiles.Add(tile3);

                    TileData tile4 = new TileData();
                    tile4.coordinates = new TwoDCoordinate(myTile.coordinates.x, myTile.coordinates.y + 2);
                    connectedTiles.Add(tile4);
                }

                foreach (TileData myTile in myTiles)
                {
                    foreach (TileData tile in tileData)
                    {
                        if (tile.coordinates.x == myTile.coordinates.x && tile.coordinates.y == myTile.coordinates.y && !tile.isFilled)
                        {
                            tile.isFilled    = true;
                            tile.isConnected = true;
                            tile.AddTeam(team);
                            break;
                        }
                    }
                }

                foreach (TileData myTile in connectedTiles)
                {
                    foreach (TileData tile in tileData)
                    {
                        if (tile.coordinates.x == myTile.coordinates.x && tile.coordinates.y == myTile.coordinates.y)
                        {
                            tile.isConnected = true;
                            tile.AddTeam(team);
                            break;
                        }
                    }
                }

                pathFinder.UpdateGrid(tileData, boardSize);
            }
        }
Example #5
0
 public Board(TwoDCoordinate _boardSize)
 {
     tileData   = new List <TileData>();
     pathFinder = new PathFinder();
     boardSize  = _boardSize;
     BoardInit();
     pathFinder.SetGrid(tileData, boardSize);
     battleCalculator  = new BattleCalculator();
     unfoldDataManager = new DiceUnfoldDataManager();
     agents            = new List <Agent>();
 }
Example #6
0
 public TileData GetTile(TwoDCoordinate pos)
 {
     foreach (TileData tile in tileData)
     {
         if (tile.coordinates.x == pos.x && tile.coordinates.y == pos.y)
         {
             return(tile);
         }
     }
     return(null);
 }
Example #7
0
        public static int Distance(TwoDCoordinate first, TwoDCoordinate second)
        {
            int xDiff = first.x - second.x;
            int yDiff = first.y - second.y;

            if (xDiff < 0)
            {
                xDiff *= -1;
            }

            if (yDiff < 0)
            {
                yDiff *= -1;
            }

            return(xDiff + yDiff);
        }
Example #8
0
 public void PlacePortal(TwoDCoordinate startPos, TwoDCoordinate endPos)
 {
     foreach (TileData tile in tileData)
     {
         if (tile.coordinates.x == startPos.x * 2 && tile.coordinates.y == startPos.y * 2)
         {
             tile.hasPortal = true;
             tile.portalX   = endPos.x;
             tile.portalY   = endPos.y;
         }
         if (tile.coordinates.x == endPos.x * 2 && tile.coordinates.y == endPos.y * 2)
         {
             tile.hasPortal = true;
             tile.portalX   = startPos.x;
             tile.portalY   = startPos.y;
         }
     }
     pathFinder.UpdateGrid(tileData, boardSize);
 }
Example #9
0
        List <TileData> GetMyTiles(DiceUnfoldData diceUnfoldData, TwoDCoordinate objPos, Rotation rotation)
        {
            List <TileData> myTiles = new List <TileData>();

            foreach (TwoDCoordinate item in diceUnfoldData.myCoordinates)
            {
                TileData myTile = new TileData();
                myTile.coordinates = new TwoDCoordinate(-1, -1);

                TwoDCoordinate pos = new TwoDCoordinate(2 * item.x, -2 * item.y);

                if (rotation == Rotation.Zero)
                {
                    myTile.coordinates.x = objPos.x + pos.x;
                    myTile.coordinates.y = objPos.y + pos.y;
                }
                else if (rotation == Rotation.Ninety)
                {
                    myTile.coordinates.x = objPos.x + pos.y;
                    myTile.coordinates.y = objPos.y - pos.x;
                }
                else if (rotation == Rotation.OneEighty)
                {
                    myTile.coordinates.x = objPos.x - pos.x;
                    myTile.coordinates.y = objPos.y - pos.y;
                }
                else if (rotation == Rotation.TwoSeventy)
                {
                    myTile.coordinates.x = objPos.x - pos.y;
                    myTile.coordinates.y = objPos.y + pos.x;
                }
                myTile.isFilled = false;
                myTiles.Add(myTile);
            }
            return(myTiles);
        }