* Add option to adminfax for locking papers.
* Replace dummy control with margin
_window.OnClose += () => SendMessage(new AdminFaxEuiMsg.Close());
_window.OnFollowFax += entity => SendMessage(new AdminFaxEuiMsg.Follow(entity));
_window.OnMessageSend += args => SendMessage(new AdminFaxEuiMsg.Send(args.entity, args.title,
- args.stampedBy, args.message, args.stampSprite, args.stampColor));
+ args.stampedBy, args.message, args.stampSprite, args.stampColor, args.locked));
}
public override void Opened()
</BoxContainer>
<Label Text="{Loc admin-fax-stamp-color}" />
<ColorSelectorSliders Margin="12 0 0 0" Name="StampColorSelector" Color="#BB3232"/>
- <Control MinHeight="10" />
- <Button Name="SendButton" Text="{Loc admin-fax-send}"></Button>
+ <CheckBox Name="LockPageCheckbox" Text="{Loc admin-fax-lock-page}" ToolTip="{Loc admin-fax-lock-page-tooltip}"/>
+ <Button Name="SendButton" Text="{Loc admin-fax-send}" Margin="0 10 0 0" />
</BoxContainer>
</DefaultWindow>
{
private const string StampsRsiPath = "/Textures/Objects/Misc/bureaucracy.rsi";
- public Action<(NetEntity entity, string title, string stampedBy, string message, string stampSprite, Color stampColor)>? OnMessageSend;
+ public Action<(NetEntity entity, string title, string stampedBy, string message, string stampSprite, Color stampColor, bool locked)>? OnMessageSend;
public Action<NetEntity>? OnFollowFax;
[Dependency] private readonly IResourceCache _resCache = default!;
var from = FromEdit.Text;
var stampColor = StampColorSelector.Color;
- OnMessageSend?.Invoke((faxEntity.Value, title, from, message, stamp, stampColor));
+ var locked = LockPageCheckbox.Pressed;
+ OnMessageSend?.Invoke((faxEntity.Value, title, from, message, stamp, stampColor, locked));
}
}
+using Content.Server.Construction.Conditions;
using Content.Server.DeviceNetwork.Components;
using Content.Server.EUI;
using Content.Shared.Eui;
case AdminFaxEuiMsg.Send sendData:
{
var printout = new FaxPrintout(sendData.Content, sendData.Title, null, null, sendData.StampState,
- new() { new StampDisplayInfo { StampedName = sendData.From, StampedColor = sendData.StampColor } });
+ new() { new StampDisplayInfo { StampedName = sendData.From, StampedColor = sendData.StampColor } },
+ locked: sendData.Locked);
_faxSystem.Receive(_entityManager.GetEntity(sendData.Target), printout);
break;
}
public const string FaxPaperStampStateData = "fax_data_stamp_state";
public const string FaxPaperStampedByData = "fax_data_stamped_by";
public const string FaxSyndicateData = "fax_data_i_am_syndicate";
+ public const string FaxPaperLockedData = "fax_data_locked";
}
args.Data.TryGetValue(FaxConstants.FaxPaperStampStateData, out string? stampState);
args.Data.TryGetValue(FaxConstants.FaxPaperStampedByData, out List<StampDisplayInfo>? stampedBy);
args.Data.TryGetValue(FaxConstants.FaxPaperPrototypeData, out string? prototypeId);
+ args.Data.TryGetValue(FaxConstants.FaxPaperLockedData, out bool? locked);
- var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy);
+ var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy, locked ?? false);
Receive(uid, printout, args.SenderAddress);
break;
labelComponent?.CurrentLabel,
metadata.EntityPrototype?.ID ?? DefaultPaperPrototypeId,
paper.StampState,
- paper.StampedBy);
+ paper.StampedBy,
+ paper.EditingDisabled);
component.PrintingQueue.Enqueue(printout);
component.SendTimeoutRemaining += component.SendTimeout;
{ FaxConstants.FaxPaperNameData, nameMod?.BaseName ?? metadata.EntityName },
{ FaxConstants.FaxPaperLabelData, labelComponent?.CurrentLabel },
{ FaxConstants.FaxPaperContentData, paper.Content },
+ { FaxConstants.FaxPaperLockedData, paper.EditingDisabled },
};
if (metadata.EntityPrototype != null)
_paperSystem.TryStamp(printed, stamp, printout.StampState);
}
}
+
+ paper.EditingDisabled = printout.Locked;
}
_metaData.SetEntityName(printed, printout.Name);
using Content.Shared.Paper;
-using Robust.Shared.GameStates;
namespace Content.Server.Paper;
/// </summary>
[DataField("stampState")]
public string? StampState { get; set; }
+
+ [DataField]
+ public bool EditingDisabled = false;
}
var editable = paperComp.StampedBy.Count == 0 || _tagSystem.HasTag(args.Used, "WriteIgnoreStamps");
if (_tagSystem.HasTag(args.Used, "Write") && editable)
{
+ if (paperComp.EditingDisabled)
+ {
+ var paperEditingDisabledMessage = Loc.GetString("paper-tamper-proof-modified-message");
+ _popupSystem.PopupEntity(paperEditingDisabledMessage, uid, args.User);
+
+ args.Handled = true;
+ return;
+ }
var writeEvent = new PaperWriteEvent(uid, args.User);
RaiseLocalEvent(args.Used, ref writeEvent);
public string Content { get; }
public string StampState { get; }
public Color StampColor { get; }
+ public bool Locked { get; }
- public Send(NetEntity target, string title, string from, string content, string stamp, Color stampColor)
+ public Send(NetEntity target, string title, string from, string content, string stamp, Color stampColor, bool locked)
{
Target = target;
Title = title;
Content = content;
StampState = stamp;
StampColor = stampColor;
+ Locked = locked;
}
}
}
[DataField("stampedBy")]
public List<StampDisplayInfo> StampedBy { get; private set; } = new();
+ [DataField]
+ public bool Locked { get; private set; }
+
private FaxPrintout()
{
}
- public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List<StampDisplayInfo>? stampedBy = null)
+ public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List<StampDisplayInfo>? stampedBy = null, bool locked = false)
{
Content = content;
Name = name;
PrototypeId = prototypeId ?? "";
StampState = stampState;
StampedBy = stampedBy ?? new List<StampDisplayInfo>();
+ Locked = locked;
}
}
admin-fax-stamp = Stamp icon:
admin-fax-stamp-color = Stamp color:
admin-fax-send = Send
+admin-fax-lock-page = Lock Page
+admin-fax-lock-page-tooltip = Lock the paper such that it cannot be edited even by things such as cybersun pens.
paper-component-action-stamp-paper-self = You stamp {THE($target)} with {THE($stamp)}.
paper-ui-save-button = Save ({$keybind})
+
+paper-tamper-proof-modified-message = This page was written using tamper-proof ink.