* PaintableAirlockComponent and AirlockGroupPrototype have been replaced * Slightly redesigned SprayPainterSystem for greater versatility * Added handling of changes to the appearance of doors and storages * PaintableGroup prototypes have been created * Generating tabs with styles in the UI * Fix error with undiscovered layer * Slight improvement * Removed unnecessary property * The category for `PaintableGroup` was allocated to a separate prototype so that the engine itself would check if the category existed * Added canisters, but repainting doesn't work * Added localization to styles * Fix sprite changing * Added the ability to paint canisters * slight ui improvement * Fix yamllinter errors * Fix test * The UI now remembers which tab was open * Fix build (?) * Rename * Charges have been added to the spray painter * Added a charge texture for the spray painter * Now spray painter can paint decals * Increased number of charges * Spawning dummy objects has been replaced by PrototypeManager * added a signature about the painting of the object * fix * Code commenting * Fix upstream * Update Content.Shared/SprayPainter/Components/SprayPainterAmmo.cs Co-authored-by: pathetic meowmeow <uhhadd@gmail.com> * review * Now decals can only be painted if the corresponding tab in the menu is open. * Fixed a bug with pipe and decal tabs not being remembered * Update EntityStorageVisualizerSystem.cs * record * loc * Cleanup * Revert electrified visuals * more cleanup, fix charges, del ammo4 * no empty file, remove meta component * closet exceptions, storage visualizer fixes * enable/disable decal through alt-verb * Fix missed merge conflicts * fix snap offset, button event handlers * simpler order, fix snap loc string * Remove PaintableViz.BaseRSI, no decal item, A-Z * State-respecting UI, BUI updates, FTL fixes * revert DecalPlacerWindow changes * revert unwanted changes, cleanup function order * Limit SprayPainterAmmo write access to AmmoSystem * Remove PaintedSystem * spray paint ammo lathe recipe, youtool listing * category as a list, groups as subtabs * Restore inhand copyright in meta.json * empty spray painter, recipe produces an empty one * allow alpha on spray painter decals * add comments * paintable wall lockers * Restrict painting more objects * Suggested event changes, event cleanup * component comments, fix ammo inhands * uncleanable decals, dirty styles on mapinit * organize paintables, separate emergency/closet grp * fix categories newline at EOF * airlock group whitespace cleanup * realphabetize * Clean up EntityStorageViz merge conflict markers * Apply requested changes * Apply suggestions from sowelipililimute's review Co-authored-by: pathetic meowmeow <uhhadd@gmail.com> * betrayal most foul * Remove members from EntityPaintedEvent * No emerg. group, steelsec to secure, locker/closet * Enable repainting the medical wall locker * comments, no flags on PaintableVisuals * Remove locked variants from closets/wall closets * removable decals * off value consistency * can't paint away those bones * fix precedence * Remove AirlockDepartment, AirlockGroup protos Both unused. * whitelist consistency re: ammo component * add standing emergency closet styles * alphabetize the spray painter listings --------- Co-authored-by: Ertanic <black.ikra.14@gmail.com> Co-authored-by: Эдуард <36124833+Ertanic@users.noreply.github.com> Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
120 lines
3.2 KiB
C#
120 lines
3.2 KiB
C#
using Content.Shared.Decals;
|
|
using Content.Shared.DoAfter;
|
|
using Content.Shared.SprayPainter.Prototypes;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.SprayPainter;
|
|
|
|
[Serializable, NetSerializable]
|
|
public enum SprayPainterUiKey
|
|
{
|
|
Key,
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetDecalMessage(ProtoId<DecalPrototype> protoId) : BoundUserInterfaceMessage
|
|
{
|
|
public ProtoId<DecalPrototype> DecalPrototype = protoId;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetDecalColorMessage(Color? color) : BoundUserInterfaceMessage
|
|
{
|
|
public Color? Color = color;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetDecalSnapMessage(bool snap) : BoundUserInterfaceMessage
|
|
{
|
|
public bool Snap = snap;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetDecalAngleMessage(int angle) : BoundUserInterfaceMessage
|
|
{
|
|
public int Angle = angle;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterTabChangedMessage(int index, bool isSelectedTabWithDecals) : BoundUserInterfaceMessage
|
|
{
|
|
public readonly int Index = index;
|
|
public readonly bool IsSelectedTabWithDecals = isSelectedTabWithDecals;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetPaintableStyleMessage(string group, string style) : BoundUserInterfaceMessage
|
|
{
|
|
public readonly string Group = group;
|
|
public readonly string Style = style;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class SprayPainterSetPipeColorMessage(string? key) : BoundUserInterfaceMessage
|
|
{
|
|
public readonly string? Key = key;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed partial class SprayPainterDoAfterEvent : DoAfterEvent
|
|
{
|
|
/// <summary>
|
|
/// The prototype to use to repaint this object.
|
|
/// </summary>
|
|
[DataField]
|
|
public string Prototype;
|
|
|
|
/// <summary>
|
|
/// The group ID of the object being painted.
|
|
/// </summary>
|
|
[DataField]
|
|
public string Group;
|
|
|
|
/// <summary>
|
|
/// The cost, in charges, to paint this object.
|
|
/// </summary>
|
|
[DataField]
|
|
public int Cost;
|
|
|
|
public SprayPainterDoAfterEvent(string prototype, string group, int cost)
|
|
{
|
|
Prototype = prototype;
|
|
Group = group;
|
|
Cost = cost;
|
|
}
|
|
|
|
public override DoAfterEvent Clone() => this;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed partial class SprayPainterPipeDoAfterEvent : DoAfterEvent
|
|
{
|
|
/// <summary>
|
|
/// Color of the pipe to set.
|
|
/// </summary>
|
|
[DataField]
|
|
public Color Color;
|
|
|
|
public SprayPainterPipeDoAfterEvent(Color color)
|
|
{
|
|
Color = color;
|
|
}
|
|
|
|
public override DoAfterEvent Clone() => this;
|
|
}
|
|
|
|
/// <summary>
|
|
/// An action raised on an entity when it is spray painted.
|
|
/// </summary>
|
|
/// <param name="User">The entity painting this item.</param>
|
|
/// <param name="Tool">The entity used to paint this item.</param>
|
|
/// <param name="Prototype">The prototype used to generate the new painted appearance.</param>
|
|
/// <param name="Group">The group of the entity being painted (e.g. airlocks with glass, canisters).</param>
|
|
[ByRefEvent]
|
|
public partial record struct EntityPaintedEvent(
|
|
EntityUid? User,
|
|
EntityUid Tool,
|
|
EntProtoId Prototype,
|
|
ProtoId<PaintableGroupPrototype> Group);
|