-
Notifications
You must be signed in to change notification settings - Fork 147
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Mirror: Criminal record hud icons (#144)
## Mirror of PR #25192: [Criminal record hud icons](space-wizards/space-station-14#25192) from <img src="https://avatars.githubusercontent.com/u/10567778?v=4" alt="space-wizards" width="22"/> [space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14) ###### `60b9d89e4dbdd8aaad4992a105628297d9480617` PR opened by <img src="https://avatars.githubusercontent.com/u/137322659?v=4" width="16"/><a href="https://github.com/Arendian"> Arendian</a> at 2024-02-13 19:39:59 UTC PR merged by <img src="https://avatars.githubusercontent.com/u/19864447?v=4" width="16"/><a href="https://github.com/web-flow"> web-flow</a> at 2024-03-11 03:12:52 UTC --- PR changed 19 files with 230 additions and 40 deletions. The PR had the following labels: - Changes: UI - Changes: Sprites - Status: Needs Review --- <details open="true"><summary><h1>Original Body</h1></summary> > <!-- Please read these guidelines before opening your PR: https://docs.spacestation14.io/en/getting-started/pr-guideline --> > <!-- The text between the arrows are comments - they will not be visible on your PR. --> > > ## About the PR > <!-- What did you change in this PR? --> > Added three more statuses to the criminal record console: Paroled, Suspect, Discharged. > Entities now have a hud icon based on the criminal record linked to the name they are currently showing. > If "Urist McHands" is wanted, anyone that currently shows as being "Urist McHands", even when their real name is not Urist McHands, will show the relevant hud icon to entities wearing a security hud. If Urist McHands is disguised as someone without a criminal record or has no name(middle-aged captain man etc.), they won't show an icon. > > ## Why / Balance > <!-- Why was it changed? Link any discussions or issues here. Please discuss how this would affect game balance. --> > Icons showing on sechuds will make sechuds more usefull, it will (hopefully) improve security coordination by allowing officers to more easily see who they need to keep track of. > It also gives warden something extra to do. > > ## Technical details > <!-- If this is a code change, summarize at high level how your new code works. This makes it easier to review. --> > > When a criminal record is changed, every entity with an IdentityComponent will have their name checked to see if it equals the name of the changed criminal record, if it's equal the person will get the CriminalRecordComponent which holds the icon that needs to be shown on the entity. > If a criminal record is removed, the CriminalRecordComponent will be removed from all entities that currently have the visible name associated with the criminal record. > > If an entity changes identity, all criminal records will be searched to see if the name has a criminal record attached to it. If the name has a record attached to it, the entity will get the CriminalRecordComponent and the corresponding criminal record hud icon until they change their identity again or the criminal record gets removed. > > ## Media > <!-- > PRs which make ingame changes (adding clothing, items, new features, etc) are required to have media attached that showcase the changes. > Small fixes/refactors are exempt. > Any media may be used in SS14 progress reports, with clear credit given. > > If you're unsure whether your PR will require media, ask a maintainer. > > Check the box below to confirm that you have in fact seen this (put an X in the brackets, like [X]): > --> > > https://github.com/space-wizards/space-station-14/assets/137322659/3c9422e6-897f-456f-b54b-8fdc053cb4e1 > > > - [X] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase > > **Changelog** > <!-- > Make players aware of new features and changes that could affect how they play the game by adding a Changelog entry. Please read the Changelog guidelines located at: https://docs.spacestation14.io/en/getting-started/pr-guideline#changelog > --> > > 🆑 Dygon > - add: The following criminal record statuses have been added: Suspect, Discharged, Paroled. > - add: Security huds now show an icon on entities that have a visible name linked to a criminal record. > </details> Co-authored-by: Arendian <[email protected]>
- Loading branch information
1 parent
3daf76b
commit 375b1c0
Showing
19 changed files
with
230 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 47 additions & 3 deletions
50
Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,52 @@ | ||
using Content.Shared.IdentityManagement; | ||
using Content.Shared.IdentityManagement.Components; | ||
using Content.Shared.Security; | ||
using Content.Shared.Security.Components; | ||
|
||
namespace Content.Shared.CriminalRecords.Systems; | ||
|
||
/// <summary> | ||
/// Nothing is predicted just exists for access. | ||
/// </summary> | ||
public abstract class SharedCriminalRecordsConsoleSystem : EntitySystem | ||
{ | ||
/// <summary> | ||
/// Any entity that has a the name of the record that was just changed as their visible name will get their icon | ||
/// updated with the new status, if the record got removed their icon will be removed too. | ||
/// </summary> | ||
public void UpdateCriminalIdentity(string name, SecurityStatus status) | ||
{ | ||
var query = EntityQueryEnumerator<IdentityComponent>(); | ||
|
||
while (query.MoveNext(out var uid, out var identity)) | ||
{ | ||
if (!Identity.Name(uid, EntityManager).Equals(name)) | ||
continue; | ||
|
||
if (status == SecurityStatus.None) | ||
RemComp<CriminalRecordComponent>(uid); | ||
else | ||
SetCriminalIcon(name, status, uid); | ||
} | ||
} | ||
|
||
/// <summary> | ||
/// Decides the icon that should be displayed on the entity based on the security status | ||
/// </summary> | ||
public void SetCriminalIcon(string name, SecurityStatus status, EntityUid characterUid) | ||
{ | ||
EnsureComp<CriminalRecordComponent>(characterUid, out var record); | ||
|
||
var previousIcon = record.StatusIcon; | ||
|
||
record.StatusIcon = status switch | ||
{ | ||
SecurityStatus.Paroled => "SecurityIconParoled", | ||
SecurityStatus.Wanted => "SecurityIconWanted", | ||
SecurityStatus.Detained => "SecurityIconIncarcerated", | ||
SecurityStatus.Discharged => "SecurityIconDischarged", | ||
SecurityStatus.Suspected => "SecurityIconSuspected", | ||
_ => record.StatusIcon | ||
}; | ||
|
||
if(previousIcon != record.StatusIcon) | ||
Dirty(characterUid, record); | ||
} | ||
} |
3 changes: 1 addition & 2 deletions
3
Content.Shared/IdentityManagement/Components/IdentityComponent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
Content.Shared/Security/Components/CriminalRecordComponent.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
using Content.Shared.StatusIcon; | ||
using Robust.Shared.GameStates; | ||
using Robust.Shared.Prototypes; | ||
|
||
namespace Content.Shared.Security.Components; | ||
|
||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] | ||
public sealed partial class CriminalRecordComponent : Component | ||
{ | ||
/// <summary> | ||
/// The icon that should be displayed based on the criminal status of the entity. | ||
/// </summary> | ||
[DataField, AutoNetworkedField] | ||
public ProtoId<StatusIconPrototype> StatusIcon = "SecurityIconWanted"; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.