// Copyright (c) Strange Loop Games. All rights reserved.
// See LICENSE file in the project root for full license information.
// <auto-generated from FormsTemplate.tt/>

namespace Eco.Mods.TechTree
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using Eco.Gameplay.Blocks;
    using Eco.Gameplay.Components;
    using Eco.Gameplay.DynamicValues;
    using Eco.Gameplay.Items;
    using Eco.Gameplay.Objects;
    using Eco.Gameplay.Players;
    using Eco.Gameplay.Skills;
    using Eco.Gameplay.Systems.TextLinks;
    using Eco.Shared.Serialization;
    using Eco.Shared.Utils;
    using Eco.World;
    using Eco.World.Water;
    using Eco.World.Blocks;
    using Eco.Gameplay.Pipes;
    using Tag = Eco.Core.Items.TagAttribute;

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(CubeFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassCubeBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(FloorFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassFloorBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofCubeFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofCubeBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(WallFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassWallBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(ColumnFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassColumnBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(WindowFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassWindowBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(WindowGrillesFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassWindowGrillesBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(DoubleWindowFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassDoubleWindowBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofPeakSetFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofPeakSetBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(FramedGlassItem); } }
    }





    [RotatedVariants(typeof(FramedGlassStairsBlock), typeof(FramedGlassStairs90Block), typeof(FramedGlassStairs180Block), typeof(FramedGlassStairs270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(StairsFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassStairsBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassStairs90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassStairs180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassStairs270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassRoofSideBlock), typeof(FramedGlassRoofSide90Block), typeof(FramedGlassRoofSide180Block), typeof(FramedGlassRoofSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofSideFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassRoofTurnBlock), typeof(FramedGlassRoofTurn90Block), typeof(FramedGlassRoofTurn180Block), typeof(FramedGlassRoofTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofTurnFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassRoofCornerBlock), typeof(FramedGlassRoofCorner90Block), typeof(FramedGlassRoofCorner180Block), typeof(FramedGlassRoofCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofCornerFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassRoofPeakBlock), typeof(FramedGlassRoofPeak90Block), typeof(FramedGlassRoofPeak180Block), typeof(FramedGlassRoofPeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(RoofPeakFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassRoofPeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofPeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofPeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassRoofPeak270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassBasicSlopeSideBlock), typeof(FramedGlassBasicSlopeSide90Block), typeof(FramedGlassBasicSlopeSide180Block), typeof(FramedGlassBasicSlopeSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(BasicSlopeSideFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassBasicSlopeCornerBlock), typeof(FramedGlassBasicSlopeCorner90Block), typeof(FramedGlassBasicSlopeCorner180Block), typeof(FramedGlassBasicSlopeCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(BasicSlopeCornerFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassBasicSlopeTurnBlock), typeof(FramedGlassBasicSlopeTurn90Block), typeof(FramedGlassBasicSlopeTurn180Block), typeof(FramedGlassBasicSlopeTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(BasicSlopeTurnFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopeTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassBasicSlopePointBlock), typeof(FramedGlassBasicSlopePoint90Block), typeof(FramedGlassBasicSlopePoint180Block), typeof(FramedGlassBasicSlopePoint270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(BasicSlopePointFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopePointBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopePoint90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopePoint180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassBasicSlopePoint270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassUnderSlopeSideBlock), typeof(FramedGlassUnderSlopeSide90Block), typeof(FramedGlassUnderSlopeSide180Block), typeof(FramedGlassUnderSlopeSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(UnderSlopeSideFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassUnderSlopeCornerBlock), typeof(FramedGlassUnderSlopeCorner90Block), typeof(FramedGlassUnderSlopeCorner180Block), typeof(FramedGlassUnderSlopeCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(UnderSlopeCornerFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassUnderSlopeTurnBlock), typeof(FramedGlassUnderSlopeTurn90Block), typeof(FramedGlassUnderSlopeTurn180Block), typeof(FramedGlassUnderSlopeTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(UnderSlopeTurnFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopeTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassUnderSlopePeakBlock), typeof(FramedGlassUnderSlopePeak90Block), typeof(FramedGlassUnderSlopePeak180Block), typeof(FramedGlassUnderSlopePeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(UnderSlopePeakFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopePeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopePeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopePeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderSlopePeak270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(FramedGlassUnderInnerPeakBlock), typeof(FramedGlassUnderInnerPeak90Block), typeof(FramedGlassUnderInnerPeak180Block), typeof(FramedGlassUnderInnerPeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [IsForm(typeof(UnderInnerPeakFormType), typeof(FramedGlassItem))]
    [Tag("Constructable")]
    public partial class FramedGlassUnderInnerPeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderInnerPeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderInnerPeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(4)]
    [Tag("Constructable")]
    public partial class FramedGlassUnderInnerPeak270Block : Block, IWaterLoggedBlock
    { }

}