CatStation/Content.Client/Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs
Morb0 f5c44e5bd0 Merge remote-tracking branch 'upstream/master' into upstream-sync
# Conflicts:
#	Resources/Prototypes/Voice/speech_emotes.yml
#	Resources/Prototypes/typing_indicator.yml
#	Resources/ServerInfo/Guidebook/Science/Robotics.xml
#	Resources/Textures/Effects/speech.rsi/alien0.png
#	Resources/Textures/Effects/speech.rsi/alien1.png
#	Resources/Textures/Effects/speech.rsi/alien2.png
#	Resources/Textures/Effects/speech.rsi/alienroyal0.png
#	Resources/Textures/Effects/speech.rsi/alienroyal1.png
#	Resources/Textures/Effects/speech.rsi/alienroyal2.png
#	Resources/Textures/Effects/speech.rsi/blob0.png
#	Resources/Textures/Effects/speech.rsi/blob1.png
#	Resources/Textures/Effects/speech.rsi/blob2.png
#	Resources/Textures/Effects/speech.rsi/clock0.png
#	Resources/Textures/Effects/speech.rsi/clock1.png
#	Resources/Textures/Effects/speech.rsi/clock2.png
#	Resources/Textures/Effects/speech.rsi/default0.png
#	Resources/Textures/Effects/speech.rsi/default1.png
#	Resources/Textures/Effects/speech.rsi/default2.png
#	Resources/Textures/Effects/speech.rsi/guardian0.png
#	Resources/Textures/Effects/speech.rsi/guardian1.png
#	Resources/Textures/Effects/speech.rsi/guardian2.png
#	Resources/Textures/Effects/speech.rsi/holo0.png
#	Resources/Textures/Effects/speech.rsi/holo1.png
#	Resources/Textures/Effects/speech.rsi/holo2.png
#	Resources/Textures/Effects/speech.rsi/lawyer0.png
#	Resources/Textures/Effects/speech.rsi/lawyer1.png
#	Resources/Textures/Effects/speech.rsi/lawyer2.png
#	Resources/Textures/Effects/speech.rsi/machine0.png
#	Resources/Textures/Effects/speech.rsi/machine1.png
#	Resources/Textures/Effects/speech.rsi/machine2.png
#	Resources/Textures/Effects/speech.rsi/meta.json
#	Resources/Textures/Effects/speech.rsi/robot0.png
#	Resources/Textures/Effects/speech.rsi/robot1.png
#	Resources/Textures/Effects/speech.rsi/robot2.png
#	Resources/Textures/Effects/speech.rsi/slime0.png
#	Resources/Textures/Effects/speech.rsi/slime1.png
#	Resources/Textures/Effects/speech.rsi/slime2.png
#	Resources/Textures/Effects/speech.rsi/swarmer0.png
#	Resources/Textures/Effects/speech.rsi/swarmer1.png
#	Resources/Textures/Effects/speech.rsi/swarmer2.png
#	Resources/Textures/Effects/speech.rsi/syndibot0.png
#	Resources/Textures/Effects/speech.rsi/syndibot1.png
#	Resources/Textures/Effects/speech.rsi/syndibot2.png
#	Resources/Textures/Structures/Machines/microwave.rsi/meta.json
#	Resources/Textures/Structures/Machines/microwave.rsi/mw.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mw0.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mw_running_unlit.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mw_unlit.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mwb.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mwbloody.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mwbloody1.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mwbloodyo.png
#	Resources/Textures/Structures/Machines/microwave.rsi/mwo.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/chemcrate_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/command.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/command.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/electrical.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/engicrate_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/engineering.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/freezer.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/generic.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/hydro_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/hydroponics.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/medical.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/medicalcrate_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/o2.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/plasma.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/plastic.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/privatecrate_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/radiation.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/scicrate_secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/science.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/science.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/science.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/science.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/science.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/science.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/sec_gear.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/secure.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/surgery.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/syndicate.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/syndicate.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/syndicate.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/syndicate.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/syndicate.rsi/welded.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/base.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/closed.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/icon.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/locked.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/meta.json
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/open.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/unlocked.png
#	Resources/Textures/Structures/Storage/Crates/weapon.rsi/welded.png
2023-08-13 05:40:29 +03:00

47 lines
2 KiB
C#

using Content.Shared.Chat.TypingIndicator;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Shared.Prototypes;
namespace Content.Client.Chat.TypingIndicator;
public sealed class TypingIndicatorVisualizerSystem : VisualizerSystem<TypingIndicatorComponent>
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
protected override void OnAppearanceChange(EntityUid uid, TypingIndicatorComponent component, ref AppearanceChangeEvent args)
{
if (args.Sprite == null)
return;
if (!_prototypeManager.TryIndex<TypingIndicatorPrototype>(component.Prototype, out var proto))
{
Log.Error($"Unknown typing indicator id: {component.Prototype}");
return;
}
//AppearanceSystem.TryGetData<bool>(uid, TypingIndicatorVisuals.IsTyping, out var isTyping, args.Component); // Corvax-TypingIndicator
var layerExists = args.Sprite.LayerMapTryGet(TypingIndicatorLayers.Base, out var layer);
if (!layerExists)
layer = args.Sprite.LayerMapReserveBlank(TypingIndicatorLayers.Base);
args.Sprite.LayerSetRSI(layer, proto.SpritePath);
args.Sprite.LayerSetState(layer, proto.TypingState);
args.Sprite.LayerSetShader(layer, proto.Shader);
args.Sprite.LayerSetOffset(layer, proto.Offset);
// args.Sprite.LayerSetVisible(layer, isTyping); // Corvax-TypingIndicator
// Corvax-TypingIndicator-Start
AppearanceSystem.TryGetData<TypingIndicatorState>(uid, TypingIndicatorVisuals.State, out var state);
args.Sprite.LayerSetVisible(layer, state != TypingIndicatorState.None);
switch (state)
{
case TypingIndicatorState.Idle:
args.Sprite.LayerSetState(layer, proto.IdleState);
break;
case TypingIndicatorState.Typing:
args.Sprite.LayerSetState(layer, proto.TypingState);
break;
}
// Corvax-TypingIndicator-End
}
}