]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Mail visual update (#37049)
authorScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Tue, 29 Apr 2025 22:55:47 +0000 (00:55 +0200)
committerGitHub <noreply@github.com>
Tue, 29 Apr 2025 22:55:47 +0000 (15:55 -0700)
Content.Shared/Delivery/DeliveryModifierSystem.cs
Content.Shared/Delivery/DeliveryPriorityComponent.cs
Content.Shared/Delivery/SharedDeliverySystem.cs
Resources/Locale/en-US/delivery/delivery-component.ftl
Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml

index 15a903537b7fedbae9b74c9d12c624ac17cf12f4..2b071b18cfb9106fbdb1e38473f2c3c0131dcd22 100644 (file)
@@ -25,6 +25,7 @@ public sealed partial class DeliveryModifierSystem : EntitySystem
         SubscribeLocalEvent<DeliveryRandomMultiplierComponent, GetDeliveryMultiplierEvent>(OnGetRandomMultiplier);
 
         SubscribeLocalEvent<DeliveryPriorityComponent, MapInitEvent>(OnPriorityMapInit);
+        SubscribeLocalEvent<DeliveryPriorityComponent, DeliveryUnlockedEvent>(OnPriorityDelivered);
         SubscribeLocalEvent<DeliveryPriorityComponent, ExaminedEvent>(OnPriorityExamine);
         SubscribeLocalEvent<DeliveryPriorityComponent, GetDeliveryMultiplierEvent>(OnGetPriorityMultiplier);
 
@@ -55,12 +56,23 @@ public sealed partial class DeliveryModifierSystem : EntitySystem
         Dirty(ent);
     }
 
+    private void OnPriorityDelivered(Entity<DeliveryPriorityComponent> ent, ref DeliveryUnlockedEvent args)
+    {
+        if (ent.Comp.Expired)
+            return;
+
+        ent.Comp.Delivered = true;
+        Dirty(ent);
+    }
+
     private void OnPriorityExamine(Entity<DeliveryPriorityComponent> ent, ref ExaminedEvent args)
     {
         var trueName = _nameModifier.GetBaseName(ent.Owner);
         var timeLeft = ent.Comp.DeliverUntilTime - _timing.CurTime;
 
-        if (_timing.CurTime < ent.Comp.DeliverUntilTime)
+        if (ent.Comp.Delivered)
+            args.PushMarkup(Loc.GetString("delivery-priority-delivered-examine", ("type", trueName)));
+        else if (_timing.CurTime < ent.Comp.DeliverUntilTime)
             args.PushMarkup(Loc.GetString("delivery-priority-examine", ("type", trueName), ("time", timeLeft.ToString("mm\\:ss"))));
         else
             args.PushMarkup(Loc.GetString("delivery-priority-expired-examine", ("type", trueName)));
@@ -122,7 +134,7 @@ public sealed partial class DeliveryModifierSystem : EntitySystem
 
         while (priorityQuery.MoveNext(out var uid, out var priorityData))
         {
-            if (priorityData.Expired)
+            if (priorityData.Expired || priorityData.Delivered)
                 continue;
 
             if (priorityData.DeliverUntilTime < curTime)
index dc06af6239fcf5fe6d76d7843a39347ac4a1aa68..835d1c9c00ae13c1917020418b68be073a761bbd 100644 (file)
@@ -23,6 +23,12 @@ public sealed partial class DeliveryPriorityComponent : Component
     [DataField]
     public float ExpiredMultiplierOffset = -0.1f;
 
+    /// <summary>
+    /// Whether this delivery was delivered on time.
+    /// </summary>
+    [DataField, AutoNetworkedField]
+    public bool Delivered;
+
     /// <summary>
     /// Whether this priority delivery has already ran out of time or not.
     /// </summary>
index db5b849c751e6a7e2b944fbe99db9e5ee247d749..175dfbe70d011446fa82a7df2ad66204855b9a9a 100644 (file)
@@ -237,9 +237,9 @@ public abstract class SharedDeliverySystem : EntitySystem
     {
         _appearance.SetData(uid, DeliveryVisuals.IsLocked, isLocked);
 
-        // If we're trying to unlock, always remove the priority tape
-        if (!isLocked)
-            _appearance.SetData(uid, DeliveryVisuals.PriorityState, DeliveryPriorityState.Off);
+        // If we're trying to unlock, mark priority as inactive
+        if (HasComp<DeliveryPriorityComponent>(uid))
+            _appearance.SetData(uid, DeliveryVisuals.PriorityState, DeliveryPriorityState.Inactive);
     }
 
     public void UpdatePriorityVisuals(Entity<DeliveryPriorityComponent> ent)
index 54f45a578de3c3d39a79649323700dd1604fb23b..c346b2a813b510e1c21c6e58d6a431c47be0ff4c 100644 (file)
@@ -24,7 +24,8 @@ delivery-teleporter-empty-verb = Take mail
 
 # modifiers
 delivery-priority-examine = This is a [color=orange]priority {$type}[/color]. You have [color=orange]{$time}[/color] left to deliver it to get a bonus.
-delivery-priority-expired-examine = This is a [color=orange]priority {$type}[/color]. It seems you ran out of time.
+delivery-priority-delivered-examine = This is a [color=orange]priority {$type}[/color]. It got delivered on time.
+delivery-priority-expired-examine = This is a [color=orange]priority {$type}[/color]. It ran out of time.
 
 delivery-fragile-examine = This is a [color=red]fragile {$type}[/color]. Deliver it intact for a bonus.
 delivery-fragile-broken-examine = This is a [color=red]fragile {$type}[/color]. It looks badly damaged.
index d1e9969bbbd65f0b0aa65e54b12fbb1314c3e623..a209f5c6f758b59bab1b459711b023a3e02122dc 100644 (file)
     - state: trash
       map: [ "enum.DeliveryVisualLayers.Trash" ]
       visible: false
-    - state: postmark
-    - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
-      offset: -0.21875, -0.25
+    - state: priority
+      map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
+      visible: false
+      shader: unshaded
     - state: fragile
       map: [ "enum.DeliveryVisualLayers.FragileStamp" ]
       visible: false
+    - state: postmark
+    - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
+      offset: -0.21875, -0.25
     - state: locked
       map: [ "enum.DeliveryVisualLayers.Lock" ]
-    - state: priority
-      map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
-      visible: false
-      shader: unshaded
     - state: broken
       map: [ "enum.DeliveryVisualLayers.Breakage" ]
       visible: false
     - state: trash
       map: [ "enum.DeliveryVisualLayers.Trash" ]
       visible: false
-    - state: postmark
-    - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
-      offset: -0.125, -0.0625
+    - state: priority
+      map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
+      visible: false
+      shader: unshaded
     - state: fragile
       map: [ "enum.DeliveryVisualLayers.FragileStamp" ]
       visible: false
+    - state: postmark
+    - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
+      offset: -0.125, -0.0625
     - state: locked
       map: [ "enum.DeliveryVisualLayers.Lock" ]
-    - state: priority
-      map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
-      visible: false
-      shader: unshaded
     - state: broken
       map: [ "enum.DeliveryVisualLayers.Breakage" ]
       visible: false