mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +03:00
* Уэээээээ * Почти настрадались * Скоро конец.... * СКОРО * Мышки плакали, кололись, но продолжали упорно жрать кактус * Все ближе! * Это такой конец? * Книжка говна * фиксики * ОНО ЖИВОЕ * Телепорт * разное * Added byond * ивенты теперь работают * Разфикс телепорта * Свет мой зеркальце скажи, да всю правду доложи - Я ль робастней всех на свете? * Разное * Еще многа всего * Многа разнава * Скоро конец.... * ЭТО КОНЕЦ * Фикс линтера (ну, или я на это надеюсь) * Еще один фикс линтера * Победа! * фиксики * пу пу пу * Фикс подмастерья * Мисклик * Высокочастотный меч * Неймспейсы * Пул способностей мага
70 lines
2.6 KiB
C#
70 lines
2.6 KiB
C#
// SPDX-FileCopyrightText: 2024 Piras314 <p1r4s@proton.me>
|
|
// SPDX-FileCopyrightText: 2024 deltanedas <39013340+deltanedas@users.noreply.github.com>
|
|
// SPDX-FileCopyrightText: 2024 deltanedas <@deltanedas:kde.org>
|
|
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
using Content.Client.Effects;
|
|
using Content.Client.Smoking;
|
|
using Content.Shared.Chemistry.Components;
|
|
using Content.Shared.Polymorph.Components;
|
|
using Content.Shared.Polymorph.Systems;
|
|
using Robust.Client.GameObjects;
|
|
|
|
namespace Content.Client.Polymorph.Systems;
|
|
|
|
public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem
|
|
{
|
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
|
|
|
private EntityQuery<AppearanceComponent> _appearanceQuery;
|
|
private EntityQuery<SpriteComponent> _spriteQuery;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
_appearanceQuery = GetEntityQuery<AppearanceComponent>();
|
|
_spriteQuery = GetEntityQuery<SpriteComponent>();
|
|
|
|
SubscribeLocalEvent<ChameleonDisguiseComponent, AfterAutoHandleStateEvent>(OnHandleState);
|
|
|
|
SubscribeLocalEvent<ChameleonDisguisedComponent, ComponentStartup>(OnStartup);
|
|
SubscribeLocalEvent<ChameleonDisguisedComponent, ComponentShutdown>(OnShutdown);
|
|
SubscribeLocalEvent<ChameleonDisguisedComponent, GetFlashEffectTargetEvent>(OnGetFlashEffectTargetEvent);
|
|
}
|
|
|
|
private void OnHandleState(Entity<ChameleonDisguiseComponent> ent, ref AfterAutoHandleStateEvent args)
|
|
{
|
|
CopyComp<SpriteComponent>(ent);
|
|
CopyComp<GenericVisualizerComponent>(ent);
|
|
CopyComp<SolutionContainerVisualsComponent>(ent);
|
|
CopyComp<BurnStateVisualsComponent>(ent);
|
|
|
|
// reload appearance to hopefully prevent any invisible layers
|
|
if (_appearanceQuery.TryComp(ent, out var appearance))
|
|
_appearance.QueueUpdate(ent, appearance);
|
|
}
|
|
|
|
private void OnStartup(Entity<ChameleonDisguisedComponent> ent, ref ComponentStartup args)
|
|
{
|
|
if (!_spriteQuery.TryComp(ent, out var sprite))
|
|
return;
|
|
|
|
ent.Comp.WasVisible = sprite.Visible;
|
|
sprite.Visible = false;
|
|
}
|
|
|
|
private void OnShutdown(Entity<ChameleonDisguisedComponent> ent, ref ComponentShutdown args)
|
|
{
|
|
if (_spriteQuery.TryComp(ent, out var sprite))
|
|
sprite.Visible = ent.Comp.WasVisible;
|
|
}
|
|
|
|
private void OnGetFlashEffectTargetEvent(Entity<ChameleonDisguisedComponent> ent, ref GetFlashEffectTargetEvent args)
|
|
{
|
|
args.Target = ent.Comp.Disguise;
|
|
}
|
|
}
|