using Content.Shared.IdentityManagement; using Content.Shared.IdentityManagement.Components; using Content.Shared.Psionics; using Content.Shared.Psionics.Components; /// /// EVERYTHING HERE IS A MODIFIED VERSION OF CRIMINAL RECORDS /// namespace Content.Shared.PsionicsRecords.Systems; public abstract class SharedPsionicsRecordsConsoleSystem : EntitySystem { /// /// Any entity that has 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. /// public void UpdatePsionicsIdentity(string name, PsionicsStatus status) { var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var identity)) { if (!Identity.Name(uid, EntityManager).Equals(name)) continue; if (status == PsionicsStatus.None) RemComp(uid); else SetPsionicsIcon(name, status, uid); } } /// /// Decides the icon that should be displayed on the entity based on the psionics status /// public void SetPsionicsIcon(string name, PsionicsStatus status, EntityUid characterUid) { EnsureComp(characterUid, out var record); var previousIcon = record.StatusIcon; record.StatusIcon = status switch { PsionicsStatus.Suspected => "PsionicsIconSuspected", PsionicsStatus.Registered => "PsionicsIconRegistered", PsionicsStatus.Abusing => "PsionicsIconAbusing", _ => record.StatusIcon }; if (previousIcon != record.StatusIcon) Dirty(characterUid, record); } }