Spawn menu page for Dupes. It builds UI sections for Workshop (popular/newest), categories from DupeCategory enum, and local dupes, and sets a custom footer. Also declares DupeCategory and DupeMovement enums with icon attributes on categories.
using Sandbox.UI;
/// <summary>
/// This component has a kill icon that can be used in the killfeed, or somewhere else.
/// </summary>
[Title( "Dupes" ), Order( 3000 ), Icon( "✌️" )]
public class DupesPage : BaseSpawnMenu
{
protected override void Rebuild()
{
AddHeader( "Workshop" );
AddOption( "🎖️", "Popular Dupes", () => new DupesWorkshop() { SortOrder = WorkshopSortMode.Popular } );
AddOption( "🐣", "Newest Dupes", () => new DupesWorkshop() { SortOrder = WorkshopSortMode.Newest } );
AddHeader( "Categories" );
foreach ( var entry in TypeLibrary.GetEnumDescription( typeof( DupeCategory ) ) )
{
AddOption( entry.Icon, entry.Title, () => new DupesWorkshop()
{
SortOrder = WorkshopSortMode.Popular,
Category = entry.Name.ToString()
} );
}
AddGrow();
AddHeader( "Local" );
AddOption( "📂", "Local Dupes", () => new DupesLocal() );
}
protected override void OnMenuFooter( Panel footer )
{
footer.AddChild<DupesFooter>();
}
}
public enum DupeCategory
{
[Icon( "🚗" )]
Vehicle,
[Icon( "🤖" )]
Robot,
[Icon( "✈️" )]
Plane,
[Icon( "🕺🏼" )]
Pose,
[Icon( "🏹" )]
Weapon,
[Icon( "🖼️" )]
Art,
[Icon( "🏠" )]
Scene,
[Icon( "🎳" )]
Game,
[Icon( "🛸" )]
Spaceship,
[Icon( "🎰" )]
Machine,
[Icon( "🧸" )]
Toys,
[Icon( "🪤" )]
Trap,
[Icon( "⛵" )]
Boat,
[Icon( "📂" )]
Other
}
public enum DupeMovement
{
Static,
Wheeled,
Flying,
Walking,
Water,
Tracked
}