feat: смена значков в консоли ID карт

This commit is contained in:
Remuchi
2024-01-24 15:15:13 +07:00
parent cf8709f1ea
commit e09cc7b802
5 changed files with 213 additions and 28 deletions

View File

@@ -42,7 +42,9 @@ namespace Content.Client.Access.UI
}; };
_window.CrewManifestButton.OnPressed += _ => SendMessage(new CrewManifestOpenUiMessage()); _window.CrewManifestButton.OnPressed += _ => SendMessage(new CrewManifestOpenUiMessage());
_window.PrivilegedIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(PrivilegedIdCardSlotId)); _window.PrivilegedIdButton.OnPressed +=
_ => SendMessage(new ItemSlotButtonPressedEvent(PrivilegedIdCardSlotId));
_window.TargetIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(TargetIdCardSlotId)); _window.TargetIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(TargetIdCardSlotId));
_window.OnClose += Close; _window.OnClose += Close;
@@ -65,7 +67,12 @@ namespace Content.Client.Access.UI
_window?.UpdateState(castState); _window?.UpdateState(castState);
} }
public void SubmitData(string newFullName, string newJobTitle, List<string> newAccessList, string newJobPrototype) public void SubmitData(
string newFullName,
string newJobTitle,
List<string> newAccessList,
string newJobPrototype,
string? newJobIcon)
{ {
if (newFullName.Length > MaxFullNameLength) if (newFullName.Length > MaxFullNameLength)
newFullName = newFullName[..MaxFullNameLength]; newFullName = newFullName[..MaxFullNameLength];
@@ -77,7 +84,8 @@ namespace Content.Client.Access.UI
newFullName, newFullName,
newJobTitle, newJobTitle,
newAccessList, newAccessList,
newJobPrototype)); newJobPrototype,
newJobIcon));
} }
} }
} }

View File

@@ -1,14 +1,14 @@
<DefaultWindow xmlns="https://spacestation14.io" <DefaultWindow xmlns="https://spacestation14.io"
MinSize="650 290"> MinSize="650 290">
<BoxContainer Orientation="Vertical"> <BoxContainer Orientation="Vertical">
<GridContainer Columns="2"> <GridContainer Columns="2">
<GridContainer Columns="3" HorizontalExpand="True"> <GridContainer Columns="3" HorizontalExpand="True">
<Label Text="{Loc 'id-card-console-window-privileged-id'}" /> <Label Text="{Loc 'id-card-console-window-privileged-id'}" />
<Button Name="PrivilegedIdButton" Access="Public"/> <Button Name="PrivilegedIdButton" Access="Public" />
<Label Name="PrivilegedIdLabel" /> <Label Name="PrivilegedIdLabel" />
<Label Text="{Loc 'id-card-console-window-target-id'}" /> <Label Text="{Loc 'id-card-console-window-target-id'}" />
<Button Name="TargetIdButton" Access="Public"/> <Button Name="TargetIdButton" Access="Public" />
<Label Name="TargetIdLabel" /> <Label Name="TargetIdLabel" />
</GridContainer> </GridContainer>
<BoxContainer Orientation="Vertical"> <BoxContainer Orientation="Vertical">
@@ -35,5 +35,13 @@
<!-- Access level buttons are added here by the C# code --> <!-- Access level buttons are added here by the C# code -->
</GridContainer> </GridContainer>
<!-- WD EDIT -->
<GridContainer Name="CurrentJobIcon" Columns="2">
<Label Text="Текущая выбранная иконка для роли: " />
</GridContainer>
<GridContainer Name="JobIconsGrid" Columns="10" HorizontalAlignment="Center">
<!-- Job icon buttons are generated in the code -->
</GridContainer>
<!-- WD EDIT END -->
</BoxContainer> </BoxContainer>
</DefaultWindow> </DefaultWindow>

View File

@@ -1,12 +1,16 @@
using System.Linq; using System.Linq;
using System.Numerics;
using Content.Shared.Access; using Content.Shared.Access;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems; using Content.Shared.Access.Systems;
using Content.Shared.Roles; using Content.Shared.Roles;
using Robust.Client.AutoGenerated; using Robust.Client.AutoGenerated;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML; using Robust.Client.UserInterface.XAML;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
using static Content.Shared.Access.Components.IdCardConsoleComponent; using static Content.Shared.Access.Components.IdCardConsoleComponent;
namespace Content.Client.Access.UI namespace Content.Client.Access.UI
@@ -16,18 +20,24 @@ namespace Content.Client.Access.UI
{ {
[Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly IResourceCache _resource = default!; //WD-EDIT
[Dependency] private readonly IEntityManager _entityManager = default!; //WD-EDIT
private readonly ISawmill _logMill = default!; private readonly ISawmill _logMill = default!;
private readonly IdCardConsoleBoundUserInterface _owner; private readonly IdCardConsoleBoundUserInterface _owner;
private readonly Dictionary<string, Button> _accessButtons = new(); private readonly Dictionary<string, Button> _accessButtons = new();
private readonly Dictionary<string, TextureButton> _jobIconButtons = new(); //WD-EDIT
private readonly List<string> _jobPrototypeIds = new(); private readonly List<string> _jobPrototypeIds = new();
private string? _lastFullName; private string? _lastFullName;
private string? _lastJobTitle; private string? _lastJobTitle;
private string? _lastJobProto; private string? _lastJobProto;
private string? _lastJobIcon; //WD-EDIT
public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeManager prototypeManager, public IdCardConsoleWindow(
IdCardConsoleBoundUserInterface owner,
IPrototypeManager prototypeManager,
List<ProtoId<AccessLevelPrototype>> accessLevels) List<ProtoId<AccessLevelPrototype>> accessLevels)
{ {
RobustXamlLoader.Load(this); RobustXamlLoader.Load(this);
@@ -41,6 +51,7 @@ namespace Content.Client.Access.UI
{ {
FullNameSaveButton.Disabled = FullNameSaveButton.Text == _lastFullName; FullNameSaveButton.Disabled = FullNameSaveButton.Text == _lastFullName;
}; };
FullNameSaveButton.OnPressed += _ => SubmitData(); FullNameSaveButton.OnPressed += _ => SubmitData();
JobTitleLineEdit.OnTextEntered += _ => SubmitData(); JobTitleLineEdit.OnTextEntered += _ => SubmitData();
@@ -48,6 +59,7 @@ namespace Content.Client.Access.UI
{ {
JobTitleSaveButton.Disabled = JobTitleLineEdit.Text == _lastJobTitle; JobTitleSaveButton.Disabled = JobTitleLineEdit.Text == _lastJobTitle;
}; };
JobTitleSaveButton.OnPressed += _ => SubmitData(); JobTitleSaveButton.OnPressed += _ => SubmitData();
var jobs = _prototypeManager.EnumeratePrototypes<JobPrototype>().ToList(); var jobs = _prototypeManager.EnumeratePrototypes<JobPrototype>().ToList();
@@ -69,7 +81,7 @@ namespace Content.Client.Access.UI
foreach (var access in accessLevels) foreach (var access in accessLevels)
{ {
if (!prototypeManager.TryIndex<AccessLevelPrototype>(access, out var accessLevel)) if (!prototypeManager.TryIndex(access, out var accessLevel))
{ {
_logMill.Error($"Unable to find accesslevel for {access}"); _logMill.Error($"Unable to find accesslevel for {access}");
continue; continue;
@@ -78,19 +90,50 @@ namespace Content.Client.Access.UI
var newButton = new Button var newButton = new Button
{ {
Text = GetAccessLevelName(accessLevel), Text = GetAccessLevelName(accessLevel),
ToggleMode = true, ToggleMode = true
}; };
_accessButtons.Add(accessLevel.ID, newButton); _accessButtons.Add(accessLevel.ID, newButton);
newButton.OnPressed += _ => SubmitData(); newButton.OnPressed += _ => SubmitData();
buttonsToAdd.Add(newButton); buttonsToAdd.Add(newButton);
} }
buttonsToAdd.Sort((x,y) => string.Compare(x.Text, y.Text, StringComparison.Ordinal)); buttonsToAdd.Sort((x, y) => string.Compare(x.Text, y.Text, StringComparison.Ordinal));
foreach (var button in buttonsToAdd) foreach (var button in buttonsToAdd)
{ {
AccessLevelGrid.AddChild(button); AccessLevelGrid.AddChild(button);
} }
//WD-EDIT
if (!_entityManager.TryGetComponent<IdCardConsoleComponent>(owner.Owner, out var idConsoleComponent))
return;
var path = new ResPath("/Textures/Interface/Misc/job_icons.rsi");
_resource.TryGetResource(path, out RSIResource? rsi);
if (rsi == null)
return;
foreach (var jobIcon in idConsoleComponent.JobIcons)
{
var newButton = new TextureButton
{
TextureNormal = rsi.RSI.TryGetState(jobIcon, out var state) ? state.Frame0
: rsi.RSI.TryGetState("CustomId", out var customState) ? customState.Frame0
: null,
Scale = new Vector2(5, 5)
};
_jobIconButtons.Add(jobIcon, newButton);
newButton.OnPressed += _ =>
{
_lastJobIcon = jobIcon;
SubmitData();
};
JobIconsGrid.AddChild(newButton);
}
//WD-EDIT
} }
private static string GetAccessLevelName(AccessLevelPrototype prototype) private static string GetAccessLevelName(AccessLevelPrototype prototype)
@@ -149,6 +192,7 @@ namespace Content.Client.Access.UI
} }
} }
_lastJobIcon = job.Icon;
SubmitData(); SubmitData();
} }
@@ -195,11 +239,11 @@ namespace Content.Client.Access.UI
foreach (var (accessName, button) in _accessButtons) foreach (var (accessName, button) in _accessButtons)
{ {
button.Disabled = !interfaceEnabled; button.Disabled = !interfaceEnabled;
if (interfaceEnabled) if (!interfaceEnabled)
{ continue;
button.Pressed = state.TargetIdAccessList?.Contains(accessName) ?? false;
button.Disabled = (!state.AllowedModifyAccessList?.Contains(accessName)) ?? true; button.Pressed = state.TargetIdAccessList?.Contains(accessName) ?? false;
} button.Disabled = !state.AllowedModifyAccessList?.Contains(accessName) ?? true;
} }
var jobIndex = _jobPrototypeIds.IndexOf(state.TargetIdJobPrototype); var jobIndex = _jobPrototypeIds.IndexOf(state.TargetIdJobPrototype);
@@ -208,6 +252,37 @@ namespace Content.Client.Access.UI
JobPresetOptionButton.SelectId(jobIndex); JobPresetOptionButton.SelectId(jobIndex);
} }
//WD-EDIT
if (_resource.TryGetResource(new ResPath("/Textures/Interface/Misc/job_icons.rsi"), out RSIResource? rsi))
{
CurrentJobIcon.RemoveAllChildren();
var newLabel = new Label
{
Text = "Текущая выбранная иконка для роли: "
};
CurrentJobIcon.AddChild(newLabel);
var newIcon = new TextureRect
{
Texture = rsi.RSI.TryGetState(state.TargetIdJobIcon?.Replace("JobIcon", ""), out var iconState)
? iconState.Frame0
: rsi.RSI.TryGetState("CustomId", out var customState)
? customState.Frame0
: null,
TextureScale = new Vector2(4, 4)
};
CurrentJobIcon.AddChild(newIcon);
}
foreach (var (jobIcon, button) in _jobIconButtons)
{
button.Disabled = !interfaceEnabled;
button.Pressed = state.TargetIdJobIcon == jobIcon;
}
//WD-EDIT
_lastFullName = state.TargetIdFullName; _lastFullName = state.TargetIdFullName;
_lastJobTitle = state.TargetIdJobTitle; _lastJobTitle = state.TargetIdJobTitle;
_lastJobProto = state.TargetIdJobPrototype; _lastJobProto = state.TargetIdJobPrototype;
@@ -217,14 +292,15 @@ namespace Content.Client.Access.UI
{ {
// Don't send this if it isn't dirty. // Don't send this if it isn't dirty.
var jobProtoDirty = _lastJobProto != null && var jobProtoDirty = _lastJobProto != null &&
_jobPrototypeIds[JobPresetOptionButton.SelectedId] != _lastJobProto; _jobPrototypeIds[JobPresetOptionButton.SelectedId] != _lastJobProto;
_owner.SubmitData( _owner.SubmitData(
FullNameLineEdit.Text, FullNameLineEdit.Text,
JobTitleLineEdit.Text, JobTitleLineEdit.Text,
// Iterate over the buttons dictionary, filter by `Pressed`, only get key from the key/value pair // Iterate over the buttons dictionary, filter by `Pressed`, only get key from the key/value pair
_accessButtons.Where(x => x.Value.Pressed).Select(x => x.Key).ToList(), _accessButtons.Where(x => x.Value.Pressed).Select(x => x.Key).ToList(),
jobProtoDirty ? _jobPrototypeIds[JobPresetOptionButton.SelectedId] : string.Empty); jobProtoDirty ? _jobPrototypeIds[JobPresetOptionButton.SelectedId] : string.Empty,
_lastJobIcon);
} }
} }
} }

View File

@@ -45,7 +45,8 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
if (args.Session.AttachedEntity is not { Valid: true } player) if (args.Session.AttachedEntity is not { Valid: true } player)
return; return;
TryWriteToTargetId(uid, args.FullName, args.JobTitle, args.AccessList, args.JobPrototype, player, component); TryWriteToTargetId(uid, args.FullName, args.JobTitle, args.AccessList, args.JobPrototype, args.SelectedIcon,
player, component);
UpdateUserInterface(uid, component, args); UpdateUserInterface(uid, component, args);
} }
@@ -77,7 +78,8 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
possibleAccess, possibleAccess,
string.Empty, string.Empty,
privilegedIdName, privilegedIdName,
string.Empty); string.Empty,
"JobIconNoId"); // WD EDIt
} }
else else
{ {
@@ -85,12 +87,16 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
var targetAccessComponent = EntityManager.GetComponent<AccessComponent>(targetId); var targetAccessComponent = EntityManager.GetComponent<AccessComponent>(targetId);
var jobProto = string.Empty; var jobProto = string.Empty;
var jobIcon = string.Empty; //WD-EDIT
if (_station.GetOwningStation(uid) is { } station if (_station.GetOwningStation(uid) is { } station
&& EntityManager.TryGetComponent<StationRecordKeyStorageComponent>(targetId, out var keyStorage) && EntityManager.TryGetComponent<StationRecordKeyStorageComponent>(targetId, out var keyStorage)
&& keyStorage.Key != null && keyStorage.Key != null
&& _record.TryGetRecord<GeneralStationRecord>(station, keyStorage.Key.Value, out var record)) && _record.TryGetRecord<GeneralStationRecord>(station, keyStorage.Key.Value, out var record))
{ {
jobProto = record.JobPrototype; jobProto = record.JobPrototype;
jobIcon = record.JobIcon;
Dirty(targetId, targetIdComponent);
} }
newState = new IdCardConsoleBoundUserInterfaceState( newState = new IdCardConsoleBoundUserInterfaceState(
@@ -103,7 +109,9 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
possibleAccess, possibleAccess,
jobProto, jobProto,
privilegedIdName, privilegedIdName,
EntityManager.GetComponent<MetaDataComponent>(targetId).EntityName); EntityManager.GetComponent<MetaDataComponent>(targetId).EntityName,
jobIcon
);
} }
_userInterface.TrySetUiState(uid, IdCardConsoleUiKey.Key, newState); _userInterface.TrySetUiState(uid, IdCardConsoleUiKey.Key, newState);
@@ -113,11 +121,14 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
/// Called whenever an access button is pressed, adding or removing that access from the target ID card. /// Called whenever an access button is pressed, adding or removing that access from the target ID card.
/// Writes data passed from the UI into the ID stored in <see cref="IdCardConsoleComponent.TargetIdSlot"/>, if present. /// Writes data passed from the UI into the ID stored in <see cref="IdCardConsoleComponent.TargetIdSlot"/>, if present.
/// </summary> /// </summary>
private void TryWriteToTargetId(EntityUid uid, /// WD-INFO: Also called when icon is changed, to update it on ID.
private void TryWriteToTargetId(
EntityUid uid,
string newFullName, string newFullName,
string newJobTitle, string newJobTitle,
List<string> newAccessList, List<string> newAccessList,
string newJobProto, string newJobProto,
string? newJobIcon,
EntityUid player, EntityUid player,
IdCardConsoleComponent? component = null) IdCardConsoleComponent? component = null)
{ {
@@ -127,6 +138,13 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
if (component.TargetIdSlot.Item is not { Valid: true } targetId || !PrivilegedIdIsAuthorized(uid, component)) if (component.TargetIdSlot.Item is not { Valid: true } targetId || !PrivilegedIdIsAuthorized(uid, component))
return; return;
//WD-EDIT
if (TryComp<IdCardComponent>(targetId, out var idCardComponent) && newJobIcon != null)
{
idCardComponent.JobIcon = newJobIcon;
}
//WD-EDIT
_idCard.TryChangeFullName(targetId, newFullName, player: player); _idCard.TryChangeFullName(targetId, newFullName, player: player);
_idCard.TryChangeJobTitle(targetId, newJobTitle, player: player); _idCard.TryChangeJobTitle(targetId, newJobTitle, player: player);
@@ -148,7 +166,10 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
var privilegedId = component.PrivilegedIdSlot.Item; var privilegedId = component.PrivilegedIdSlot.Item;
if (oldTags.SequenceEqual(newAccessList)) if (oldTags.SequenceEqual(newAccessList))
{
UpdateStationRecord(uid, targetId, newFullName, newJobTitle, job, newJobIcon); //WD-EDIT
return; return;
}
// I hate that C# doesn't have an option for this and don't desire to write this out the hard way. // I hate that C# doesn't have an option for this and don't desire to write this out the hard way.
// var difference = newAccessList.Difference(oldTags); // var difference = newAccessList.Difference(oldTags);
@@ -170,7 +191,7 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
_adminLogger.Add(LogType.Action, LogImpact.Medium, _adminLogger.Add(LogType.Action, LogImpact.Medium,
$"{ToPrettyString(player):player} has modified {ToPrettyString(targetId):entity} with the following accesses: [{string.Join(", ", addedTags.Union(removedTags))}] [{string.Join(", ", newAccessList)}]"); $"{ToPrettyString(player):player} has modified {ToPrettyString(targetId):entity} with the following accesses: [{string.Join(", ", addedTags.Union(removedTags))}] [{string.Join(", ", newAccessList)}]");
UpdateStationRecord(uid, targetId, newFullName, newJobTitle, job); UpdateStationRecord(uid, targetId, newFullName, newJobTitle, job, newJobIcon);
} }
/// <summary> /// <summary>
@@ -191,7 +212,13 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
return privilegedId != null && _accessReader.IsAllowed(privilegedId.Value, uid, reader); return privilegedId != null && _accessReader.IsAllowed(privilegedId.Value, uid, reader);
} }
private void UpdateStationRecord(EntityUid uid, EntityUid targetId, string newFullName, string newJobTitle, JobPrototype? newJobProto) private void UpdateStationRecord(
EntityUid uid,
EntityUid targetId,
string newFullName,
string newJobTitle,
JobPrototype? newJobProto,
string? newJobIcon) // WD EDIT
{ {
if (_station.GetOwningStation(uid) is not { } station if (_station.GetOwningStation(uid) is not { } station
|| !EntityManager.TryGetComponent<StationRecordKeyStorageComponent>(targetId, out var keyStorage) || !EntityManager.TryGetComponent<StationRecordKeyStorageComponent>(targetId, out var keyStorage)
@@ -210,6 +237,9 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
record.JobIcon = newJobProto.Icon; record.JobIcon = newJobProto.Icon;
} }
if (!string.IsNullOrWhiteSpace(newJobIcon))
record.JobIcon = newJobIcon;
_record.Synchronize(station); _record.Synchronize(station);
} }
} }

View File

@@ -29,13 +29,20 @@ public sealed partial class IdCardConsoleComponent : Component
public readonly string JobTitle; public readonly string JobTitle;
public readonly List<string> AccessList; public readonly List<string> AccessList;
public readonly string JobPrototype; public readonly string JobPrototype;
public readonly string? SelectedIcon; //WD-EDIT
public WriteToTargetIdMessage(string fullName, string jobTitle, List<string> accessList, string jobPrototype) public WriteToTargetIdMessage(
string fullName,
string jobTitle,
List<string> accessList,
string jobPrototype,
string? selectedIcon) //WD-EDIT (selectedIcon)
{ {
FullName = fullName; FullName = fullName;
JobTitle = jobTitle; JobTitle = jobTitle;
AccessList = accessList; AccessList = accessList;
JobPrototype = jobPrototype; JobPrototype = jobPrototype;
SelectedIcon = "JobIcon" + selectedIcon;
} }
} }
@@ -72,9 +79,61 @@ public sealed partial class IdCardConsoleComponent : Component
"Salvage", "Salvage",
"Security", "Security",
"Service", "Service",
"Theatre", "Theatre"
}; };
//WD-EDIT
[DataField("jobIcons")]
public List<string> JobIcons = new()
{
"AtmosphericTechnician",
"Bartender",
"Botanist",
"Boxer",
"Brigmedic",
"Captain",
"CargoTechnician",
"Chaplain",
"Chef",
"Chemist",
"ChiefEngineer",
"ChiefMedicalOfficer",
"Clown",
"Detective",
"Geneticist",
"HeadOfPersonnel",
"HeadOfSecurity",
"Janitor",
"Lawyer",
"Librarian",
"MedicalDoctor",
"MedicalIntern",
"Mime",
"Musician",
"Paramedic",
"Passenger",
"Psychologist",
"QuarterMaster",
"Reporter",
"ResearchAssistant",
"ResearchDirector",
"Roboticist",
"Scientist",
"SecurityCadet",
"SecurityOfficer",
"SeniorEngineer",
"SeniorOfficer",
"SeniorResearcher",
"ServiceWorker",
"ShaftMiner",
"StationEngineer",
"TechnicalAssistant",
"Virologist",
"Warden",
"Zookeeper"
};
// WD EDIT END
[Serializable, NetSerializable] [Serializable, NetSerializable]
public sealed class IdCardConsoleBoundUserInterfaceState : BoundUserInterfaceState public sealed class IdCardConsoleBoundUserInterfaceState : BoundUserInterfaceState
{ {
@@ -88,8 +147,10 @@ public sealed partial class IdCardConsoleComponent : Component
public readonly string[]? TargetIdAccessList; public readonly string[]? TargetIdAccessList;
public readonly string[]? AllowedModifyAccessList; public readonly string[]? AllowedModifyAccessList;
public readonly string TargetIdJobPrototype; public readonly string TargetIdJobPrototype;
public readonly string? TargetIdJobIcon; //WD-EDIT
public IdCardConsoleBoundUserInterfaceState(bool isPrivilegedIdPresent, public IdCardConsoleBoundUserInterfaceState(
bool isPrivilegedIdPresent,
bool isPrivilegedIdAuthorized, bool isPrivilegedIdAuthorized,
bool isTargetIdPresent, bool isTargetIdPresent,
string? targetIdFullName, string? targetIdFullName,
@@ -98,7 +159,8 @@ public sealed partial class IdCardConsoleComponent : Component
string[]? allowedModifyAccessList, string[]? allowedModifyAccessList,
string targetIdJobPrototype, string targetIdJobPrototype,
string privilegedIdName, string privilegedIdName,
string targetIdName) string targetIdName,
string? targetIdJobIcon) // #WD EDIT (targetIdJobIcon)
{ {
IsPrivilegedIdPresent = isPrivilegedIdPresent; IsPrivilegedIdPresent = isPrivilegedIdPresent;
IsPrivilegedIdAuthorized = isPrivilegedIdAuthorized; IsPrivilegedIdAuthorized = isPrivilegedIdAuthorized;
@@ -110,12 +172,13 @@ public sealed partial class IdCardConsoleComponent : Component
TargetIdJobPrototype = targetIdJobPrototype; TargetIdJobPrototype = targetIdJobPrototype;
PrivilegedIdName = privilegedIdName; PrivilegedIdName = privilegedIdName;
TargetIdName = targetIdName; TargetIdName = targetIdName;
TargetIdJobIcon = targetIdJobIcon; //WD-EDIT
} }
} }
[Serializable, NetSerializable] [Serializable, NetSerializable]
public enum IdCardConsoleUiKey : byte public enum IdCardConsoleUiKey : byte
{ {
Key, Key
} }
} }