Mindshield outline flashes, (#25409)

* Add animation support to status icons

Animated like any other entity. Change the png to have all frames, add delays in meta.json, and you're good to go.

* Dirty "fix" for the crashing.

Still have no idea why files cannot be read without changing their path in the yaml.

* Sloth review ig

I still have no idea why it wont work with /Textures/ missing as a prefix.
This commit is contained in:
Golinth
2024-02-20 16:26:48 -06:00
committed by GitHub
parent f64a32990a
commit 79dc4e4d6f
8 changed files with 79 additions and 71 deletions

View File

@@ -5,6 +5,7 @@ using Robust.Client.Graphics;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using System.Numerics; using System.Numerics;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
namespace Content.Client.StatusIcon; namespace Content.Client.StatusIcon;
@@ -12,6 +13,7 @@ public sealed class StatusIconOverlay : Overlay
{ {
[Dependency] private readonly IEntityManager _entity = default!; [Dependency] private readonly IEntityManager _entity = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly IGameTiming _timing = default!;
private readonly SpriteSystem _sprite; private readonly SpriteSystem _sprite;
private readonly TransformSystem _transform; private readonly TransformSystem _transform;
@@ -72,7 +74,9 @@ public sealed class StatusIconOverlay : Overlay
foreach (var proto in icons) foreach (var proto in icons)
{ {
var texture = _sprite.Frame0(proto.Icon);
var curTime = _timing.RealTime;
var texture = _sprite.GetFrame(proto.Icon, curTime);
float yOffset; float yOffset;
float xOffset; float xOffset;

View File

@@ -2,6 +2,6 @@
id: HealthIconFine id: HealthIconFine
priority: 1 priority: 1
icon: icon:
sprite: Interface/Misc/health_icons.rsi sprite: /Textures/Interface/Misc/health_icons.rsi
state: Fine state: Fine
locationPreference: Right locationPreference: Right

View File

@@ -3,7 +3,7 @@
id: HungerIconOverfed id: HungerIconOverfed
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: overfed state: overfed
locationPreference: Right locationPreference: Right
@@ -11,7 +11,7 @@
id: HungerIconPeckish id: HungerIconPeckish
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: peckish state: peckish
locationPreference: Right locationPreference: Right
@@ -19,7 +19,7 @@
id: HungerIconStarving id: HungerIconStarving
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: starving state: starving
locationPreference: Right locationPreference: Right
@@ -28,7 +28,7 @@
id: ThirstIconOverhydrated id: ThirstIconOverhydrated
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: overhydrated state: overhydrated
locationPreference: Left locationPreference: Left
@@ -36,7 +36,7 @@
id: ThirstIconThirsty id: ThirstIconThirsty
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: thirsty state: thirsty
locationPreference: Left locationPreference: Left
@@ -44,6 +44,6 @@
id: ThirstIconParched id: ThirstIconParched
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/food_icons.rsi sprite: /Textures/Interface/Misc/food_icons.rsi
state: parched state: parched
locationPreference: Left locationPreference: Left

View File

@@ -8,369 +8,369 @@
parent: JobIcon parent: JobIcon
id: JobIconDetective id: JobIconDetective
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Detective state: Detective
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconQuarterMaster id: JobIconQuarterMaster
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: QuarterMaster state: QuarterMaster
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconBorg id: JobIconBorg
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Borg state: Borg
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconBotanist id: JobIconBotanist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Botanist state: Botanist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconBoxer id: JobIconBoxer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Boxer state: Boxer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconAtmosphericTechnician id: JobIconAtmosphericTechnician
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: AtmosphericTechnician state: AtmosphericTechnician
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconNanotrasen id: JobIconNanotrasen
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Nanotrasen state: Nanotrasen
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconPrisoner id: JobIconPrisoner
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Prisoner state: Prisoner
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconJanitor id: JobIconJanitor
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Janitor state: Janitor
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconChemist id: JobIconChemist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Chemist state: Chemist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconStationEngineer id: JobIconStationEngineer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: StationEngineer state: StationEngineer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSecurityOfficer id: JobIconSecurityOfficer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SecurityOfficer state: SecurityOfficer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconNoId id: JobIconNoId
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: NoId state: NoId
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconChiefMedicalOfficer id: JobIconChiefMedicalOfficer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ChiefMedicalOfficer state: ChiefMedicalOfficer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconRoboticist id: JobIconRoboticist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Roboticist state: Roboticist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconChaplain id: JobIconChaplain
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Chaplain state: Chaplain
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconLawyer id: JobIconLawyer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Lawyer state: Lawyer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconUnknown id: JobIconUnknown
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Unknown state: Unknown
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconLibrarian id: JobIconLibrarian
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Librarian state: Librarian
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconCargoTechnician id: JobIconCargoTechnician
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: CargoTechnician state: CargoTechnician
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconScientist id: JobIconScientist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Scientist state: Scientist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconResearchAssistant id: JobIconResearchAssistant
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ResearchAssistant state: ResearchAssistant
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconGeneticist id: JobIconGeneticist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Geneticist state: Geneticist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconClown id: JobIconClown
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Clown state: Clown
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconCaptain id: JobIconCaptain
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Captain state: Captain
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconHeadOfPersonnel id: JobIconHeadOfPersonnel
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: HeadOfPersonnel state: HeadOfPersonnel
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconVirologist id: JobIconVirologist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Virologist state: Virologist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconShaftMiner id: JobIconShaftMiner
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ShaftMiner state: ShaftMiner
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconPassenger id: JobIconPassenger
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Passenger state: Passenger
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconChiefEngineer id: JobIconChiefEngineer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ChiefEngineer state: ChiefEngineer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconBartender id: JobIconBartender
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Bartender state: Bartender
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconHeadOfSecurity id: JobIconHeadOfSecurity
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: HeadOfSecurity state: HeadOfSecurity
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconBrigmedic id: JobIconBrigmedic
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Brigmedic state: Brigmedic
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconMedicalDoctor id: JobIconMedicalDoctor
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: MedicalDoctor state: MedicalDoctor
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconParamedic id: JobIconParamedic
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Paramedic state: Paramedic
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconChef id: JobIconChef
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Chef state: Chef
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconWarden id: JobIconWarden
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Warden state: Warden
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconResearchDirector id: JobIconResearchDirector
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ResearchDirector state: ResearchDirector
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconMime id: JobIconMime
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Mime state: Mime
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconMusician id: JobIconMusician
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Musician state: Musician
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconReporter id: JobIconReporter
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Reporter state: Reporter
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconPsychologist id: JobIconPsychologist
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Psychologist state: Psychologist
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconMedicalIntern id: JobIconMedicalIntern
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: MedicalIntern state: MedicalIntern
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconTechnicalAssistant id: JobIconTechnicalAssistant
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: TechnicalAssistant state: TechnicalAssistant
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconServiceWorker id: JobIconServiceWorker
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: ServiceWorker state: ServiceWorker
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSecurityCadet id: JobIconSecurityCadet
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SecurityCadet state: SecurityCadet
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconZombie # This is a perfectly legitimate profession to pursue id: JobIconZombie # This is a perfectly legitimate profession to pursue
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Zombie state: Zombie
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconZookeeper id: JobIconZookeeper
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Zookeeper state: Zookeeper
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSeniorPhysician id: JobIconSeniorPhysician
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SeniorPhysician state: SeniorPhysician
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSeniorOfficer id: JobIconSeniorOfficer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SeniorOfficer state: SeniorOfficer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSeniorEngineer id: JobIconSeniorEngineer
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SeniorEngineer state: SeniorEngineer
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconSeniorResearcher id: JobIconSeniorResearcher
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: SeniorResearcher state: SeniorResearcher
- type: statusIcon - type: statusIcon
parent: JobIcon parent: JobIcon
id: JobIconVisitor id: JobIconVisitor
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Visitor state: Visitor

View File

@@ -2,21 +2,21 @@
id: ZombieFaction id: ZombieFaction
priority: 11 priority: 11
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Zombie state: Zombie
- type: statusIcon - type: statusIcon
id: RevolutionaryFaction id: RevolutionaryFaction
priority: 11 priority: 11
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Revolutionary state: Revolutionary
- type: statusIcon - type: statusIcon
id: HeadRevolutionaryFaction id: HeadRevolutionaryFaction
priority: 11 priority: 11
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: HeadRevolutionary state: HeadRevolutionary
- type: statusIcon - type: statusIcon
@@ -25,7 +25,7 @@
locationPreference: Right locationPreference: Right
layer: Mod layer: Mod
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: MindShield state: MindShield
- type: statusIcon - type: statusIcon
@@ -33,5 +33,5 @@
priority: 0 priority: 0
locationPreference: Left locationPreference: Left
icon: icon:
sprite: Interface/Misc/job_icons.rsi sprite: /Textures/Interface/Misc/job_icons.rsi
state: Syndicate state: Syndicate

View File

@@ -1,19 +1,19 @@
- type: statusIcon - type: statusIcon
id: DebugStatus id: DebugStatus
icon: icon:
sprite: Interface/Misc/research_disciplines.rsi sprite: /Textures/Interface/Misc/research_disciplines.rsi
state: civilianservices state: civilianservices
- type: statusIcon - type: statusIcon
id: DebugStatus2 id: DebugStatus2
priority: 1 priority: 1
icon: icon:
sprite: Interface/Misc/research_disciplines.rsi sprite: /Textures/Interface/Misc/research_disciplines.rsi
state: arsenal state: arsenal
- type: statusIcon - type: statusIcon
id: DebugStatus3 id: DebugStatus3
priority: 5 priority: 5
icon: icon:
sprite: Interface/Misc/research_disciplines.rsi sprite: /Textures/Interface/Misc/research_disciplines.rsi
state: experimental state: experimental

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -1,7 +1,7 @@
{ {
"version": 1, "version": 1,
"license": "CC-BY-SA-3.0", "license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi | Brigmedic icon made by PuroSlavKing (Github) | Zombie icon made by RamZ | Zookeper by netwy (discort) | Rev and Head Rev icon taken from https://tgstation13.org/wiki/HUD and edited by coolmankid12345 (Discord) | Mindshield icon taken from https://github.com/tgstation/tgstation/blob/master/icons/mob/huds/hud.dmi and edited by Golinth (Github)", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/e71d6c4fba5a51f99b81c295dcaec4fc2f58fb19/icons/mob/screen1.dmi | Brigmedic icon made by PuroSlavKing (Github) | Zombie icon made by RamZ | Zookeper by netwy (discort) | Rev and Head Rev icon taken from https://tgstation13.org/wiki/HUD and edited by coolmankid12345 (Discord) | Mindshield icon taken from https://github.com/tgstation/tgstation/blob/master/icons/mob/huds/hud.dmi",
"size": { "size": {
"x": 8, "x": 8,
@@ -171,7 +171,11 @@
"name": "HeadRevolutionary" "name": "HeadRevolutionary"
}, },
{ {
"name": "MindShield" "name": "MindShield",
"delays":
[
[0.5,0.5]
]
}, },
{ {
"name": "Syndicate" "name": "Syndicate"