Пример #1
0
    public bool ChangeTerrainTall(Vector2Int position, TerrainTall tall)
    {
        TerrainCell cell = getCell(position);

        cell.Tall = tall;

        return(true);
    }
Пример #2
0
    private void terrainViewFeatureOfPosition(Vector2Int position, out TerrainViewFeature terrainViewFeature, out TerrainTallFeature terrainTallFeature)
    {
        int x = position.x;
        int y = position.y;

        terrainViewFeature = new TerrainViewFeature(false, false, false, false, false, false, false, false, false);
        terrainTallFeature = new TerrainTallFeature(0, false, false, false, false);

        bool waterCenter = island.TerrainTypeOfCell(position) == TerrainType.Water;

        if (waterCenter)
        {
            bool waterFront      = island.TerrainTypeOfCell(new Vector2Int(x, y - 1)) == TerrainType.Water;
            bool waterLeft       = island.TerrainTypeOfCell(new Vector2Int(x - 1, y)) == TerrainType.Water;
            bool waterBack       = island.TerrainTypeOfCell(new Vector2Int(x, y + 1)) == TerrainType.Water;
            bool waterRight      = island.TerrainTypeOfCell(new Vector2Int(x + 1, y)) == TerrainType.Water;
            bool waterFrontLeft  = island.TerrainTypeOfCell(new Vector2Int(x - 1, y - 1)) == TerrainType.Water;
            bool waterBackLeft   = island.TerrainTypeOfCell(new Vector2Int(x - 1, y + 1)) == TerrainType.Water;
            bool waterBackRight  = island.TerrainTypeOfCell(new Vector2Int(x + 1, y + 1)) == TerrainType.Water;
            bool waterFrontRight = island.TerrainTypeOfCell(new Vector2Int(x + 1, y - 1)) == TerrainType.Water;

            terrainViewFeature.WaterCenter = waterCenter;
            terrainViewFeature.WaterF      = waterFront;
            terrainViewFeature.WaterL      = waterLeft;
            terrainViewFeature.WaterB      = waterBack;
            terrainViewFeature.WaterR      = waterRight;
            terrainViewFeature.WaterFL     = waterFront && waterLeft && waterFrontLeft;
            terrainViewFeature.WaterBL     = waterBack && waterLeft && waterBackLeft;
            terrainViewFeature.WaterBR     = waterBack && waterRight && waterBackRight;
            terrainViewFeature.WaterFR     = waterFront && waterRight && waterFrontRight;
        }

        TerrainTall tall      = island.TerrainTallOfCell(position);
        bool        tallFront = island.TerrainTallOfCell(new Vector2Int(x, y - 1)) < tall;
        bool        tallLeft  = island.TerrainTallOfCell(new Vector2Int(x - 1, y)) < tall;
        bool        tallBack  = island.TerrainTallOfCell(new Vector2Int(x, y + 1)) < tall;
        bool        tallRight = island.TerrainTallOfCell(new Vector2Int(x + 1, y)) < tall;

        terrainTallFeature.Front = tallFront;
        terrainTallFeature.Left  = tallLeft;
        terrainTallFeature.Back  = tallBack;
        terrainTallFeature.Right = tallRight;

        terrainTallFeature.Tall = (int)tall;

        return;
    }
Пример #3
0
    private void createTerrainTall(Vector2Int position)
    {
        TerrainTall terrainTall = island.TerrainTallOfCell(position);

        if (terrainTall == TerrainTall.Floor)
        {
            terrainTall = TerrainTall.Second;
        }
        else if (terrainTall == TerrainTall.Second)
        {
            terrainTall = TerrainTall.Floor;
        }

        bool result = island.ChangeTerrainTall(position, terrainTall);

        if (result)
        {
            TerrainViewFeature terrainViewFeature;
            TerrainTallFeature terrainTallFeature;

            terrainViewFeatureOfPosition(position, out terrainViewFeature, out terrainTallFeature);
            islandView.SetTerrainFeature(position, terrainViewFeature, terrainTallFeature);
        }
    }
Пример #4
0
 public TerrainCell(int x, int y)
 {
     cellPosition = new Vector2Int(x, y);
     tall         = TerrainTall.Floor;
     type         = TerrainType.Earth;
 }