Пример #1
0
    private void SetFOWCell(HexCell cell)
    {
        Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates);

        switch (cell.FOWMode)
        {
        case FOWMode.Hidden:
            hiddenTilemap.SetTile(tilemapPosition, hidden);
            outOfViewTilemap.SetTile(tilemapPosition, outOfView);
            if (cell.Unit)
            {
                cell.Unit.ShowUnit(false);
            }
            break;

        case FOWMode.Viewed:
            hiddenTilemap.SetTile(tilemapPosition, null);
            outOfViewTilemap.SetTile(tilemapPosition, outOfView);
            if (cell.Unit)
            {
                cell.Unit.ShowUnit(false);
            }
            break;

        case FOWMode.InView:
            hiddenTilemap.SetTile(tilemapPosition, null);
            outOfViewTilemap.SetTile(tilemapPosition, null);
            if (cell.Unit)
            {
                cell.Unit.ShowUnit(true);
            }
            break;
        }
    }
Пример #2
0
    Stronghold AddStronghold(HexCell cell, SetupData setupData)
    {
        Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates);

        cell.HasStronghold = true;
        string strongholdName = setupData.strongholdNames[0];

        if (setupData.strongholdNames.Count > 1)
        {
            setupData.strongholdNames.RemoveAt(0);
        }


        Stronghold newStronghold = new Stronghold(strongholdName, cell, setupData.difficultySettings, worldUIView.EnablePOIInteraction);

        cell.PointOfInterest = newStronghold;

        List <HexDirection> openwaterConnections = new List <HexDirection>();

        for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++)
        {
            HexCell neighbor = cell.GetNeighbor(d);
            if (neighbor && neighbor.IsOcean)
            {
                openwaterConnections.Add(d);
            }
        }
        HexDirection dir = Utility.ReturnRandom(openwaterConnections);

        featuresTilemap.SetTile(tilemapPosition, strongholdTiles[(int)dir]);
        return(newStronghold);
    }
Пример #3
0
    Harbor AddHarbor(HexCell cell, SetupData setupData)
    {
        Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates);

        cell.HasHarbor = true;
        string harborName = setupData.islandNames[0];

        if (setupData.islandNames.Count > 1)
        {
            setupData.islandNames.RemoveAt(0);
        }

        bool hasTavern   = setupData.harborTavernChance > HexMetrics.SampleHashGrid(cell.Position).b;
        bool hasMerchant = setupData.harborMerchantChance > HexMetrics.SampleHashGrid(cell.Position).c;

        Harbor newHarbor = new Harbor(harborName, cell, worldUIView.EnablePOIInteraction, hasMerchant, hasTavern);

        cell.PointOfInterest = newHarbor;

        List <HexDirection> openwaterConnections = new List <HexDirection>();

        for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++)
        {
            HexCell neighbor = cell.GetNeighbor(d);
            if (neighbor && neighbor.IsOcean)
            {
                openwaterConnections.Add(d);
            }
        }
        HexDirection dir = Utility.ReturnRandom(openwaterConnections);

        featuresTilemap.SetTile(tilemapPosition, harborTiles[(int)dir]);
        return(newHarbor);
    }
Пример #4
0
    /// <summary>
    /// Paints terrain on the tilemap
    /// </summary>
    /// <param name="cell"></param>
    private void SetTerrainCellVisual(HexCell cell)
    {
        Vector3Int tilemapPosition = HexCoordinates.CoordinatesToTilemapCoordinates(cell.coordinates);

        TileBase tile;
        int      cellBitmask = cell.Bitmask;

        if (cell.IsShore) //Edge of islands
        {
            tile = edgeTiles[cell.Bitmask];
        }
        else if (cell.IsOcean) //Ocean tile
        {
            //tile = Utility.ReturnRandom(oceanTiles); //For now ignore ocean tiles
            tile = null;
        }
        else //If over 62 (full land tile with all neighbors also landtiles)
        {
            tile = Utility.ReturnRandom(landTiles);
        }

        terrainTilemap.SetTile(tilemapPosition, tile);
    }