Ejemplo n.º 1
0
    private void IncreseGlobalInfluence()
    {
        ChangeTileState tileFunc = ChangeGlobalInfluenceInTile;

        foreach (var buildingPos in Capitals)
        {
            if (GameFieldTiles.instance.tiles[buildingPos].GameFieldTileType == GameTile.TileType.Structure && GameFieldTiles.instance.tiles[buildingPos].StructType == GameTile.StructureType.Capital)
            {
                ChangelInfluenceByBuilding(buildingPos, GameFieldTiles.instance.tiles[buildingPos].BuildingLvl + 3, GameFieldTiles.instance.tiles[buildingPos].OwnerId, tileFunc);
            }
        }
        foreach (var buildingPos in InvadeBuildings)
        {
            if (GameFieldTiles.instance.tiles[buildingPos].GameFieldTileType == GameTile.TileType.Structure && GameFieldTiles.instance.tiles[buildingPos].StructType == GameTile.StructureType.InvadeBld)
            {
                ChangelInfluenceByBuilding(buildingPos, GameFieldTiles.instance.tiles[buildingPos].BuildingLvl + 1, GameFieldTiles.instance.tiles[buildingPos].OwnerId, tileFunc);
            }
        }
    }
Ejemplo n.º 2
0
    private void ExpandBorders()
    {
        ChangeTileState tileFunc = ExpandBordersInTile;

        foreach (var buildingPos in Capitals)
        {
            if (GameFieldTiles.instance.tiles[buildingPos].GameFieldTileType == GameTile.TileType.Structure && GameFieldTiles.instance.tiles[buildingPos].StructType == GameTile.StructureType.Capital)
            {
                ChangelInfluenceByBuilding(buildingPos, GameFieldTiles.instance.tiles[buildingPos].BuildingLvl + 3, GameFieldTiles.instance.tiles[buildingPos].OwnerId, tileFunc);
            }
        }
        foreach (var buildingPos in OcupyBuildings)
        {
            if (GameFieldTiles.instance.tiles[buildingPos].GameFieldTileType == GameTile.TileType.Structure && GameFieldTiles.instance.tiles[buildingPos].StructType == GameTile.StructureType.OcupyBld)
            {
                ChangelInfluenceByBuilding(buildingPos, GameFieldTiles.instance.tiles[buildingPos].BuildingLvl + 1, GameFieldTiles.instance.tiles[buildingPos].OwnerId, tileFunc);
            }
        }
    }
Ejemplo n.º 3
0
 private void ChangelInfluenceByBuilding(Vector3Int tilePos, int influenceValue, int playerId, ChangeTileState tileFunc)
 {
     BfQueue.Clear();
     BfQueue.Enqueue(tilePos);
     VisitedFields.Clear();
     VisitedFields.Add(tilePos);
     while (BfQueue.Count != 0)
     {
         Vector3Int currentField         = BfQueue.Dequeue();
         int        distanceFromBuilding = GameFieldTiles.instance.TileDistance(tilePos, currentField);
         GameTile   gameTile             = GameFieldTiles.instance.tiles[currentField];
         if (gameTile.GameFieldTileType == GameTile.TileType.Border)
         {
             continue;
         }
         tileFunc(gameTile, influenceValue - distanceFromBuilding + 1, playerId);
         if (distanceFromBuilding < influenceValue)
         {
             for (int i = 0; i < 6; i++)
             {
                 Vector3Int nextField = GameFieldTiles.instance.OddrOffsetNeighbor(currentField, i);
                 if (!VisitedFields.Contains(nextField))
                 {
                     //Debug.Log("added: " + nextField);
                     VisitedFields.Add(nextField);
                     BfQueue.Enqueue(nextField);
                 }
             }
         }
     }
 }