Esempio n. 1
0
 public void SetTileProp(int type, int toType, byte bits, int specifiedIndex = -1, UVRotateType rotateType = UVRotateType.None)
 {
     this.type           = type;
     this.toType         = toType;
     this.bits           = bits;
     this.specifiedIndex = specifiedIndex;
     this.rotateType     = rotateType;
 }
Esempio n. 2
0
    void PaintNormalTile(PATile tile, int t, int specifiedIndex = -1, UVRotateType rotateType = UVRotateType.None)
    {
        if (tile == null)
        {
            return;
        }

        tile.SetTileProp(t, t, 0, specifiedIndex, rotateType);
        UpdateTileUV(tile);
    }
Esempio n. 3
0
 public void Reset()
 {
     ResetQtrTiles();
     specifiedIndex = -1;
     rotateType     = UVRotateType.None;
     element.Reset();
     decalTilesetIndex = -1;
     //distance = -1;
     affectShuijing = null;
 }
Esempio n. 4
0
 void PaintTileDecal(PATile tile, UVRotateType rotateType = UVRotateType.None)
 {
     PaintNormalTile(tile, 0, tile.decalTilesetIndex, rotateType);
 }
Esempio n. 5
0
    public void PaintATileDecal(PATile tile)
    {
        if (tile == null || tile.decalTilesetIndex != -1)
        {
            return;
        }

        //融合处不能贴花
        if (!tile.IsElementFull())
        {
            return;
        }

        PATile[] nTiles          = GetNeighboringTilesNxN(tile, 1);
        PATile   leftTile        = nTiles[1];
        PATile   topTile         = nTiles[3];
        PATile   rightTile       = nTiles[5];
        PATile   rightBottomTile = nTiles[6];
        PATile   bottomTile      = nTiles[7];

        foreach (var config in ConfigDataBase.instance.DecalConfigAsset.configs)
        {
            if (tile.decalTilesetIndex != -1)
            {
                return;
            }
            if (config.elementType != (int)tile.element.GetDecalSuitTileType())
            {
                continue;
            }
            if (!config.elementValue.Contains(tile.element.GetMaxElementValue()))
            {
                continue;
            }
            TileSetType tileSetType = (TileSetType)config.tileSetType;
            if (tile.tileSetType != tileSetType)
            {
                continue;
            }
            //float rate = (config.maxRate - tile.distance * config.atten);
            int rate        = config.rate;
            int randomValue = RandomManager.instance.Range(0, 1000);
            if (20 < randomValue)
            {
                continue;
            }
            //int randomRotate = RandomManager.instance.Range(0,4);
            //UVRotateType rotateType = (UVRotateType)randomRotate;
            UVRotateType rotateType = UVRotateType._90;
            if (config.decalType == (int)TileDecalType.Decal_2)
            {
                if (config.tileSetIndex.Count != 2)
                {
                    Debug.LogError("config.tileSetIndex.Count != 2");
                    continue;
                }
                if (rotateType == UVRotateType._90)
                {
                    if (rightTile == null || rightTile.decalTilesetIndex != -1 || !rightTile.IsElementFull())
                    {
                        continue;
                    }
                    if (rightTile.tileSetType != tileSetType)
                    {
                        continue;
                    }

                    tile.decalTilesetIndex      = config.tileSetIndex[0];
                    rightTile.decalTilesetIndex = config.tileSetIndex[1];
                    PaintTileDecal(rightTile, rotateType);
                }
                else if (rotateType == UVRotateType.None)
                {
                    if (topTile == null || topTile.decalTilesetIndex != -1 || !topTile.IsElementFull())
                    {
                        continue;
                    }
                    if (topTile.tileSetType != tileSetType)
                    {
                        continue;
                    }
                    tile.decalTilesetIndex    = config.tileSetIndex[0];
                    topTile.decalTilesetIndex = config.tileSetIndex[1];
                    PaintTileDecal(topTile, rotateType);
                }
                else if (rotateType == UVRotateType._180)
                {
                    if (bottomTile == null || bottomTile.decalTilesetIndex != -1 || !bottomTile.IsElementFull())
                    {
                        continue;
                    }
                    if (bottomTile.tileSetType != tileSetType)
                    {
                        continue;
                    }
                    tile.decalTilesetIndex       = config.tileSetIndex[0];
                    bottomTile.decalTilesetIndex = config.tileSetIndex[1];
                    PaintTileDecal(bottomTile, rotateType);
                }
                else if (rotateType == UVRotateType._270)
                {
                    if (leftTile == null || leftTile.decalTilesetIndex != -1)
                    {
                        continue;
                    }
                    if (leftTile.tileSetType != tileSetType)
                    {
                        continue;
                    }
                    tile.decalTilesetIndex     = config.tileSetIndex[0];
                    leftTile.decalTilesetIndex = config.tileSetIndex[1];
                    PaintTileDecal(leftTile, rotateType);
                }
                PaintTileDecal(tile, rotateType);
            }
            else if (config.decalType == (int)TileDecalType.Decal_4)
            {
                if (rightTile == null || rightTile.decalTilesetIndex != -1 || !rightTile.IsElementFull() ||
                    rightBottomTile == null || rightBottomTile.decalTilesetIndex != -1 || !rightBottomTile.IsElementFull() ||
                    bottomTile == null || bottomTile.decalTilesetIndex != -1 || !bottomTile.IsElementFull())
                {
                    continue;
                }
                if (rightTile.tileSetType != tileSetType)
                {
                    continue;
                }
                if (rightBottomTile.tileSetType != tileSetType)
                {
                    continue;
                }
                if (bottomTile.tileSetType != tileSetType)
                {
                    continue;
                }

                if (config.tileSetIndex.Count != 4)
                {
                    Debug.LogError("config.tileSetIndex.Count != 4");
                    continue;
                }

                if (rotateType == UVRotateType._90)
                {
                    tile.decalTilesetIndex            = config.tileSetIndex[0];
                    rightTile.decalTilesetIndex       = config.tileSetIndex[1];
                    bottomTile.decalTilesetIndex      = config.tileSetIndex[2];
                    rightBottomTile.decalTilesetIndex = config.tileSetIndex[3];
                }
                else if (rotateType == UVRotateType.None)
                {
                    tile.decalTilesetIndex            = config.tileSetIndex[1];
                    rightTile.decalTilesetIndex       = config.tileSetIndex[3];
                    bottomTile.decalTilesetIndex      = config.tileSetIndex[0];
                    rightBottomTile.decalTilesetIndex = config.tileSetIndex[2];
                }
                else if (rotateType == UVRotateType._270)
                {
                    tile.decalTilesetIndex            = config.tileSetIndex[3];
                    rightTile.decalTilesetIndex       = config.tileSetIndex[2];
                    bottomTile.decalTilesetIndex      = config.tileSetIndex[1];
                    rightBottomTile.decalTilesetIndex = config.tileSetIndex[0];
                }
                else if (rotateType == UVRotateType._180)
                {
                    tile.decalTilesetIndex            = config.tileSetIndex[2];
                    rightTile.decalTilesetIndex       = config.tileSetIndex[0];
                    bottomTile.decalTilesetIndex      = config.tileSetIndex[3];
                    rightBottomTile.decalTilesetIndex = config.tileSetIndex[1];
                }
                PaintTileDecal(tile, rotateType);
                PaintTileDecal(rightTile, rotateType);
                PaintTileDecal(bottomTile, rotateType);
                PaintTileDecal(rightBottomTile, rotateType);
            }
            else
            {
                if (config.tileSetIndex.Count != 1)
                {
                    Debug.LogError("config.tileSetIndex.Count != 1");
                    continue;
                }
                tile.decalTilesetIndex = config.tileSetIndex[0];
                PaintTileDecal(tile, rotateType);
            }
        }
    }