예제 #1
0
    public Tilemap GetTilemap(TileChangeLayer layer)
    {
        switch (layer)
        {
        case TileChangeLayer.Base:
            return(baseTileMap);

        case TileChangeLayer.Floor:
            return(floorTileMap);

        case TileChangeLayer.Object:
            return(objectTileMap);

        case TileChangeLayer.Wall:
            return(wallTileMap);

        case TileChangeLayer.Window:
        case TileChangeLayer.WindowDamage:
            return(windowTileMap);

        case TileChangeLayer.BrokenGrill:                 //Broken grills go over floors so there is no collider on the grills layer
            return(floorTileMap);

        case TileChangeLayer.Grill:
            return(grillTileMap);
        }
        return(null);
    }
예제 #2
0
    private int GetLayerZLevel(TileChangeLayer layer)
    {
        switch (layer)
        {
        case TileChangeLayer.Base:
            return(0);

        case TileChangeLayer.Floor:
            return(0);

        case TileChangeLayer.Object:
            return(0);

        case TileChangeLayer.Wall:
            return(0);

        case TileChangeLayer.Window:
            return(0);

        case TileChangeLayer.WindowDamage:
            return(-1);

        case TileChangeLayer.BrokenGrill:
            return(-10);
        }
        return(0);
    }
예제 #3
0
 public void ChangeTile(string newTileName, Vector3Int tileCellPos, TileChangeLayer layer)
 {
     ActionChange(new TileChangeEntry
     {
         cellPosition  = tileCellPos,
         tileKey       = newTileName,
         layerToChange = layer
     });
 }
예제 #4
0
 private void RpcActionChange(Vector3 cellPos, string tileKey, TileChangeLayer layer)
 {
     ActionChange(new TileChangeEntry
     {
         cellPosition  = Vector3Int.RoundToInt(cellPos),
         tileKey       = tileKey,
         layerToChange = layer
     });
 }
    public void CmdCrowBarRemoveFloorTile(GameObject tileChangeRoot,
                                          TileChangeLayer layer, Vector3 cellPos, Vector3 worldPos)
    {
        TileChangeManager tm = tileChangeRoot.GetComponent <TileChangeManager>();

        if (tm == null)
        {
            Logger.LogError("TileChangeManager not found", Category.Construction);
            return;
        }

        tm.RemoveTile(Vector3Int.RoundToInt(cellPos), layer);

        CraftingManager.Construction.SpawnFloorTile(Vector3Int.RoundToInt(worldPos), tm.ObjectParent.transform);
        RpcPlayerSoundAtPos("Crowbar", transform.position, true);
    }
예제 #6
0
    public static bool ValidateTileKey(TileChangeLayer layer, string tileKey)
    {
        if (string.IsNullOrEmpty(tileKey))
        {
            return(true);
        }

        switch (layer)
        {
        case TileChangeLayer.Base:
        case TileChangeLayer.Floor:
            if (FloorAssets.ContainsKey(tileKey))
            {
                return(true);
            }
            break;

        case TileChangeLayer.Object:
        case TileChangeLayer.BrokenGrill:
            if (ObjectAssets.ContainsKey(tileKey))
            {
                return(true);
            }
            break;

        case TileChangeLayer.Wall:
            if (WallAssets.ContainsKey(tileKey))
            {
                return(true);
            }
            break;

        case TileChangeLayer.Window:
        case TileChangeLayer.WindowDamage:
            if (WindowAssets.ContainsKey(tileKey))
            {
                return(true);
            }
            break;
        }
        return(false);
    }
예제 #7
0
    public void RemoveTile(Vector3Int tileCellPos, TileChangeLayer layer)
    {
        ActionChange(new TileChangeEntry
        {
            cellPosition  = tileCellPos,
            tileKey       = "",
            layerToChange = layer
        });

        if (layer == TileChangeLayer.Window)
        {
            //Clear the crack effects if they exist:
            ActionChange(new TileChangeEntry
            {
                cellPosition  = tileCellPos,
                tileKey       = "",
                layerToChange = TileChangeLayer.WindowDamage
            });
        }
    }
예제 #8
0
    public static TileBase GetTile(TileChangeLayer layer, string tileKey)
    {
        switch (layer)
        {
        case TileChangeLayer.Base:
        case TileChangeLayer.Floor:
            if (FloorAssets.ContainsKey(tileKey))
            {
                return(FloorAssets[tileKey]);
            }
            break;

        case TileChangeLayer.Object:
        case TileChangeLayer.BrokenGrill:
            if (ObjectAssets.ContainsKey(tileKey))
            {
                return(ObjectAssets[tileKey]);
            }
            break;

        case TileChangeLayer.Wall:
            if (WallAssets.ContainsKey(tileKey))
            {
                return(WallAssets[tileKey]);
            }
            break;

        case TileChangeLayer.Window:
        case TileChangeLayer.WindowDamage:
            if (WindowAssets.ContainsKey(tileKey))
            {
                return(WindowAssets[tileKey]);
            }
            break;
        }
        return(null);
    }