News UI overhaul and PDA notifications (#19610)
This commit is contained in:
@@ -199,9 +199,13 @@ public sealed class CartridgeLoaderSystem : SharedCartridgeLoaderSystem
|
||||
return false;
|
||||
|
||||
var installedProgram = Spawn(prototype, new EntityCoordinates(loaderUid, 0, 0));
|
||||
if (!TryComp(installedProgram, out CartridgeComponent? cartridge))
|
||||
return false;
|
||||
|
||||
_containerSystem.Insert(installedProgram, container);
|
||||
|
||||
UpdateCartridgeInstallationStatus(installedProgram, deinstallable ? InstallationStatus.Installed : InstallationStatus.Readonly);
|
||||
UpdateCartridgeInstallationStatus(installedProgram, deinstallable ? InstallationStatus.Installed : InstallationStatus.Readonly, cartridge);
|
||||
cartridge.LoaderUid = loaderUid;
|
||||
|
||||
RaiseLocalEvent(installedProgram, new CartridgeAddedEvent(loaderUid));
|
||||
UpdateUserInterfaceState(loaderUid, loader);
|
||||
@@ -223,11 +227,14 @@ public sealed class CartridgeLoaderSystem : SharedCartridgeLoaderSystem
|
||||
if (!GetInstalled(loaderUid).Contains(programUid))
|
||||
return false;
|
||||
|
||||
if (TryComp(programUid, out CartridgeComponent? cartridge))
|
||||
cartridge.LoaderUid = null;
|
||||
|
||||
if (loader.ActiveProgram == programUid)
|
||||
loader.ActiveProgram = null;
|
||||
|
||||
loader.BackgroundPrograms.Remove(programUid);
|
||||
EntityManager.QueueDeleteEntity(programUid);
|
||||
QueueDel(programUid);
|
||||
UpdateUserInterfaceState(loaderUid, loader);
|
||||
return true;
|
||||
}
|
||||
@@ -308,6 +315,18 @@ public sealed class CartridgeLoaderSystem : SharedCartridgeLoaderSystem
|
||||
loader.BackgroundPrograms.Remove(cartridgeUid);
|
||||
}
|
||||
|
||||
public void SendNotification(EntityUid loaderUid, string header, string message, CartridgeLoaderComponent? loader = default!)
|
||||
{
|
||||
if (!Resolve(loaderUid, ref loader))
|
||||
return;
|
||||
|
||||
if (!loader.NotificationsEnabled)
|
||||
return;
|
||||
|
||||
var args = new CartridgeLoaderNotificationSentEvent(header, message);
|
||||
RaiseLocalEvent(loaderUid, ref args);
|
||||
}
|
||||
|
||||
protected override void OnItemInserted(EntityUid uid, CartridgeLoaderComponent loader, EntInsertedIntoContainerMessage args)
|
||||
{
|
||||
if (args.Container.ID != InstalledContainerId && args.Container.ID != loader.CartridgeSlot.ID)
|
||||
@@ -434,13 +453,10 @@ public sealed class CartridgeLoaderSystem : SharedCartridgeLoaderSystem
|
||||
UpdateUiState(loaderUid, null, loader);
|
||||
}
|
||||
|
||||
private void UpdateCartridgeInstallationStatus(EntityUid cartridgeUid, InstallationStatus installationStatus, CartridgeComponent? cartridgeComponent = default!)
|
||||
private void UpdateCartridgeInstallationStatus(EntityUid cartridgeUid, InstallationStatus installationStatus, CartridgeComponent cartridgeComponent)
|
||||
{
|
||||
if (Resolve(cartridgeUid, ref cartridgeComponent))
|
||||
{
|
||||
cartridgeComponent.InstallationStatus = installationStatus;
|
||||
Dirty(cartridgeUid, cartridgeComponent);
|
||||
}
|
||||
cartridgeComponent.InstallationStatus = installationStatus;
|
||||
Dirty(cartridgeUid, cartridgeComponent);
|
||||
}
|
||||
|
||||
private bool HasProgram(EntityUid loader, EntityUid program, CartridgeLoaderComponent component)
|
||||
|
||||
Reference in New Issue
Block a user