Files
crystall-punk-14/Content.Shared/_CP14/Workbench/CP14WorkbenchUI.cs
Tornado Tech 1b0bf2ad18 Added base workbench window (#372)
* Added base workbench window

* Fixed serialization errors

* Created base UI layout

* Updated ui

* Updated UI after crafting
2024-08-06 14:25:59 +03:00

64 lines
1.7 KiB
C#

using Content.Shared._CP14.Workbench.Prototypes;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared._CP14.Workbench;
[Serializable, NetSerializable]
public enum CP14WorkbenchUiKey
{
Key,
}
[Serializable, NetSerializable]
public sealed class CP14WorkbenchUiCraftMessage : BoundUserInterfaceMessage
{
public readonly ProtoId<CP14WorkbenchRecipePrototype> Recipe;
public CP14WorkbenchUiCraftMessage(ProtoId<CP14WorkbenchRecipePrototype> recipe)
{
Recipe = recipe;
}
}
[Serializable, NetSerializable]
public sealed class CP14WorkbenchUiRecipesState : BoundUserInterfaceState
{
// It's list (not hashset) BECAUSE CP14WorkbenchComponent contains list of recipes (WHY???)
public readonly List<CP14WorkbenchUiRecipesEntry> Recipes;
public CP14WorkbenchUiRecipesState(List<CP14WorkbenchUiRecipesEntry> recipes)
{
Recipes = recipes;
}
}
[Serializable, NetSerializable]
public readonly struct CP14WorkbenchUiRecipesEntry : IEquatable<CP14WorkbenchUiRecipesEntry>
{
public readonly ProtoId<CP14WorkbenchRecipePrototype> ProtoId;
public readonly bool Craftable;
public CP14WorkbenchUiRecipesEntry(ProtoId<CP14WorkbenchRecipePrototype> protoId, bool craftable)
{
ProtoId = protoId;
Craftable = craftable;
}
public override bool Equals(object? obj)
{
return obj is CP14WorkbenchUiRecipesEntry other && Equals(other);
}
public bool Equals(CP14WorkbenchUiRecipesEntry other)
{
return ProtoId.Id == other.ProtoId.Id;
}
public override int GetHashCode()
{
return HashCode.Combine(ProtoId, Craftable);
}
}