From 4f8d4f89d6cca1b8e1e8e897c36526a7d11299a1 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Sat, 13 May 2023 18:28:11 +0200 Subject: [PATCH] Health analyzer displays turns off when the battery dies (#16125) --- .../Power/EntitySystems/BatterySystem.cs | 1 + Content.Server/PowerCell/PowerCellSystem.cs | 3 ++- .../Components/PowerCellComponent.cs | 5 +++++ .../PowerCell/SharedPowerCellSystem.cs | 5 +++-- .../Specific/Medical/healthanalyzer.yml | 17 +++++++++++++++-- .../Medical/healthanalyzer.rsi/analyzer.png | Bin 1059 -> 622 bytes .../Medical/healthanalyzer.rsi/icon.png | Bin 5806 -> 1936 bytes 7 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Content.Server/Power/EntitySystems/BatterySystem.cs b/Content.Server/Power/EntitySystems/BatterySystem.cs index 410aa30bba..7906682a8d 100644 --- a/Content.Server/Power/EntitySystems/BatterySystem.cs +++ b/Content.Server/Power/EntitySystems/BatterySystem.cs @@ -11,6 +11,7 @@ namespace Content.Server.Power.EntitySystems [UsedImplicitly] public sealed class BatterySystem : EntitySystem { + [Dependency] private readonly SharedAppearanceSystem _sharedAppearanceSystem = default!; public override void Initialize() { base.Initialize(); diff --git a/Content.Server/PowerCell/PowerCellSystem.cs b/Content.Server/PowerCell/PowerCellSystem.cs index 6574acfb89..6c6cd92d4c 100644 --- a/Content.Server/PowerCell/PowerCellSystem.cs +++ b/Content.Server/PowerCell/PowerCellSystem.cs @@ -166,7 +166,6 @@ public sealed class PowerCellSystem : SharedPowerCellSystem return HasCharge(uid, battery.UseRate, cell, user); } - /// /// Tries to use the for this entity. /// @@ -179,6 +178,7 @@ public sealed class PowerCellSystem : SharedPowerCellSystem if (TryUseCharge(uid, battery.UseRate, cell, user)) { + _sharedAppearanceSystem.SetData(uid, PowerCellSlotVisuals.Enabled, HasActivatableCharge(uid, battery, cell, user)); _activatable.CheckUsage(uid); return true; } @@ -243,6 +243,7 @@ public sealed class PowerCellSystem : SharedPowerCellSystem return false; } + _sharedAppearanceSystem.SetData(uid, PowerCellSlotVisuals.Enabled, battery.Charge > 0); return true; } diff --git a/Content.Shared/PowerCell/Components/PowerCellComponent.cs b/Content.Shared/PowerCell/Components/PowerCellComponent.cs index 27a0d2ef97..3f353c1352 100644 --- a/Content.Shared/PowerCell/Components/PowerCellComponent.cs +++ b/Content.Shared/PowerCell/Components/PowerCellComponent.cs @@ -24,3 +24,8 @@ public enum PowerCellVisuals : byte { ChargeLevel } +[Serializable, NetSerializable] +public enum PowerCellSlotVisuals : byte +{ + Enabled +} diff --git a/Content.Shared/PowerCell/SharedPowerCellSystem.cs b/Content.Shared/PowerCell/SharedPowerCellSystem.cs index 00a9895f88..5c18152a23 100644 --- a/Content.Shared/PowerCell/SharedPowerCellSystem.cs +++ b/Content.Shared/PowerCell/SharedPowerCellSystem.cs @@ -8,6 +8,7 @@ namespace Content.Shared.PowerCell; public abstract class SharedPowerCellSystem : EntitySystem { [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; public override void Initialize() { @@ -48,7 +49,7 @@ public abstract class SharedPowerCellSystem : EntitySystem if (args.Container.ID != component.CellSlotId) return; - + _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, true); RaiseLocalEvent(uid, new PowerCellChangedEvent(false), false); } @@ -56,7 +57,7 @@ public abstract class SharedPowerCellSystem : EntitySystem { if (args.Container.ID != component.CellSlotId) return; - + _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, false); RaiseLocalEvent(uid, new PowerCellChangedEvent(true), false); } } diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml index 24a7108454..137b6118bf 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml @@ -9,7 +9,13 @@ - type: Sprite sprite: Objects/Specific/Medical/healthanalyzer.rsi netsync: false - state: analyzer + state: icon + layers: + - state: icon + - state: analyzer + shader: unshaded + visible: true + map: [ "enum.PowerDeviceVisualLayers.Powered" ] - type: PowerCellDraw drawRate: 0 useRate: 20 @@ -27,6 +33,13 @@ - type: Tag tags: - DiscreteHealthAnalyzer + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerCellSlotVisuals.Enabled: + enum.PowerDeviceVisualLayers.Powered: + True: { visible: true } + False: { visible: false } - type: entity id: HandheldHealthAnalyzerEmpty @@ -36,4 +49,4 @@ - type: ItemSlots slots: cell_slot: - name: power-cell-slot-component-slot-name-default + name: power-cell-slot-component-slot-name-default diff --git a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png index 3fbab3f112c1d2dffb80f16d93f83a3e57b20aae..539f8ff452443d2746464912030f2ba017704ac7 100644 GIT binary patch literal 622 zcmeAS@N?(olHy`uVBq!ia0vp^4M3d0!3-oHE$ONTQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`RRVlMT+hi0KffpjoHV$QyL@tF-fk3@D&+40~pP~rQp zz70T%rzFTP_&)+L2;Dz-4k*r9;1OBOz`%DHgc*-p@|_Rfrv2@6h<>w%Rhdg~ z!;Sw_%&YgusyuE>f24E4rpzh(FDsKcQ=|90F0~Ka>)wl9x$jWg$Y}S0$7cHE1F2m< z7XBC6-!S=r;KT+N6$M64uu~dX?)f~}a{2xDpFacFMLRI9cqiDS;efyq2X@WA9&Vj- z_gvw{|IF8aGaod6eV?PE_IuU5tFH|-e$`7nu_?IP_qXLPZ->``jrj#CzquQGmovH5 zG?p|gZP1@k{QujV30(K;8u|{{{;j+Bu=>6KyvB)j`_FQyH!3T^T>)~?o|y;g>+KB= zlyZA8T(xZyWYs`m?mM^Nu8Fqm{m$~~Z=-mDSjVq-Uu|L!)H?=T$v@7@AM=j?#!_A} zZi!F+6aF4JSa^`x_`MzTzjnc=)9o+)-~O^tNaE%9+dTzB7D_@BK;Ca`X1(^6{Z|u{ VmMvprJuq$=JYD@<);T3K0RWww4BG$z delta 1049 zcmaFIvY2CnWIY=L1H;v-Do+Lm=2xCBjv*Cu-p=*T77mnXvp?FZZC>_JNyyQ_V}h9e zgjVkV4H{i~s~$LscXdBH^jd9K;04!!58DDna>Sed^6GU@Pg>yYS$Of3gV(`qsK?#!-K}jfljYC1zn$C; zYpwqNx_CNVm|ZaKxM`Fr%Yb1@Adj*a^%PQu8tG?yj;)uy01U- zb7$nr>#w74&wHLK^~T_z+gh#iS^dQy&9g!yU#vO#=gyirv-hdY{idH@_f)LjaQ6Qr ztOYBIa=hobEe@ONw^wiL$(8#Yc@HnBd%8ORm-|tLx~E~k@2?1*`?GZWt^eBM=Tm0= zJ`>M8)uLz8s^3yuUtNnow1V@u`^FnSe^1HoD|vW*?!%vQCI5QG94`62(!M0N?*50u z53}`-TshAW8E||~pd7RBpTgTe{;PjAKJfc&{d%!>t>Z2(DR;l8*5#Rf`uKX^{2g;e zfgWGk-tgXgziUdeXt%Aa?CR;sJ>$=I8Id3pA#e0=ZumWSuB z^FyK)LAowE@$<)~-!IuUcFwP3`1A6})6btz9nTlv|4LmV-Tp6w>i5h10Y&v-7XMX# z0lvmnHG59D*0yS34HnS+;ND7v>kN ztiK#`L|t5VPW9Jcwc+jcyT9h_c)?%aQJnrZO(N3%fK$4!&H2gw^Z(y{rX|0=%%Z<$ zpWV%Me;=CPO8LiqoBu)Oy@)5DKYs%`8tCR9j0m5CSqn-;Eal_NpdM?mpSz`|>g(;0 zbw4ZqJgfV~==E;7{DLQ7hWsjdg`Sh|ulL`2ziNK{0*$)IbqyL<-e2$TQB%x*R6g;% z{-paFa_ihD#2!C*`0<5{j~}kPtM|7se^VzY2()I)ZOv`A*j_ikV=wE>DF@3R`pk#8*Zt!B^zHaY-CvAfejigra+o~a-CXD6XEO@FVdQ&MBb@0Cuexh5!Hn diff --git a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/icon.png b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/icon.png index 4517250a5aa10f1858ab65cd76428a65ba18a412..776c3f4f6b72bfc0f454825345317c0a26e068c3 100644 GIT binary patch delta 1038 zcmZ3dJAr?KWIZzj1B1(wu44=gj7^!&&HyLKI+WRsn@=yMirD8VRPP;xVm|Fb#(C0&cSO1*zNcLgJ){G@B{;k%r zI~RP|d+99GevNZ1YgV4=nBBq4>E80yhjX@Sj_$5)1@jA{PnD^}dy82tt?=DAH+Ey) zyOnVgaRtjBc}>50N+a3FptG<3B$s!}$;+y%mAl-1zAaAuquW>?6tir{v<*iL&ls7x zJ#hbf@O|Fil6-$fO_|nJ>i6rj+h6Jaxb@}ldFT88t(v;rcNBE}d&(?PAzr(A#n!jZ zf34=kikTKmpEF`lI%ZyUnS6 zJt^m>R+jr_=GV{T{H6ShcehK?5#NyIUx4wV9^ez=8W5UdVCt4%-|rSste~v>!QIn0z{)Ye(^kny&j88|$Vn_o11hyu z3eU_-$uBQfnk>YvBo0vucqa zSzMA|RA~nj21*pAq*(>079t5j1#>bLic4I}N~{u-OTdN~CzhqAC_x32GZORCQ&Vh} z^pz&R<#w2C%%e3qnMbi+K_AH^8+~-sZS=7@1ftF*wK%ybvjAin*bInhkc%6T2h?W; z)R~)Fk_h72R}>^BXQ!4Zq~-ygP^4sUXDn#92pC=UMV>B>Ar}5`FWlv7P~d5Mc#`#{yZd^>Vn(v0v3HQXgvdmr>mdKI;Vst0LPx7;s5{u literal 5806 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 H?HBiNNIVS! -- 2.51.2