Singularity Shaders and a lot of Shader Stuff (#2517)

* Beginnings of singulo shader

* LOTS of changes!!

* Minor changes

* Singulo stuff

* Aesthetic changes to singulo

* Combining singulo change

* ShaderAura uses IEntities now, not IPlayerSession

* Fixes?

* Fixes draw order for atmos

* using fix

* Address reviews

* nuget.config whaaa

* nuget haha

* nuget why are you so dum

* happy now

* Preparing for omegachange

* Merge from seventh level of hell

* woork

* Ignorecomponents add

* mmf

* RobustToolbox?

* Fixes

* Fixes Robust?

* adds sprite

* Nullables

* Crit overlay stuff

* Commits Robust
This commit is contained in:
GraniteSidewalk
2021-03-09 04:33:41 -06:00
committed by GitHub
parent edb9bff91c
commit 549d84174c
37 changed files with 562 additions and 133 deletions

View File

@@ -75,7 +75,7 @@ namespace Content.Server.GameObjects.Components.Singularity
public bool CanRepell(IEntity toRepell)
{
var powerNeeded = 1;
if (toRepell.TryGetComponent<SingularityComponent>(out var singularityComponent))
if (toRepell.TryGetComponent<ServerSingularityComponent>(out var singularityComponent))
{
powerNeeded += 2*singularityComponent.Level;
}

View File

@@ -1,34 +1,33 @@
#nullable enable
using Content.Server.GameObjects.Components.Observer;
using System.Collections.Generic;
using System.Linq;
using Content.Server.GameObjects.Components.StationEvents;
using Content.Server.GameObjects.Components.Observer;
using Content.Shared.GameObjects;
using Content.Shared.Physics;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Containers;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Maths;
using Robust.Shared.Map;
using Robust.Shared.Maths;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Collision;
using Robust.Shared.Physics.Dynamics.Shapes;
using Robust.Shared.Random;
using Robust.Server.GameObjects;
using Content.Shared.GameObjects.Components.Singularity;
using Robust.Shared.Players;
using Robust.Shared.Timing;
namespace Content.Server.GameObjects.Components.Singularity
{
[RegisterComponent]
public class SingularityComponent : Component, IStartCollide
public class ServerSingularityComponent : SharedSingularityComponent, IStartCollide
{
[Dependency] private readonly IRobustRandom _random = default!;
public override uint? NetID => ContentNetIDs.SINGULARITY;
public override string Name => "Singularity";
public int Energy
{
@@ -40,8 +39,6 @@ namespace Content.Server.GameObjects.Components.Singularity
_energy = value;
if (_energy <= 0)
{
_spriteComponent?.LayerSetVisible(0, false);
Owner.Delete();
return;
}
@@ -76,10 +73,12 @@ namespace Content.Server.GameObjects.Components.Singularity
_spriteComponent?.LayerSetRSI(0, "Constructible/Power/Singularity/singularity_" + _level + ".rsi");
_spriteComponent?.LayerSetState(0, "singularity_" + _level);
if(_collidableComponent != null && _collidableComponent.Fixtures.Any() && _collidableComponent.Fixtures[0].Shape is PhysShapeCircle circle)
if (_collidableComponent != null && _collidableComponent.Fixtures.Any() && _collidableComponent.Fixtures[0].Shape is PhysShapeCircle circle)
{
circle.Radius = _level - 0.5f;
}
Dirty();
}
}
private int _level;
@@ -102,6 +101,11 @@ namespace Content.Server.GameObjects.Components.Singularity
private AudioSystem _audioSystem = null!;
private IPlayingAudioStream? _playingSound;
public override ComponentState GetComponentState(ICommonSession player)
{
return new SingularityComponentState(Level);
}
public override void Initialize()
{
base.Initialize();
@@ -114,26 +118,14 @@ namespace Content.Server.GameObjects.Components.Singularity
_audioSystem.PlayFromEntity("/Audio/Effects/singularity_form.ogg", Owner);
Timer.Spawn(5200,() => _playingSound = _audioSystem.PlayFromEntity("/Audio/Effects/singularity.ogg", Owner, audioParams));
if (!Owner.TryGetComponent(out _collidableComponent))
{
Logger.Error("SingularityComponent was spawned without CollidableComponent");
}
else
{
_collidableComponent.Hard = false;
}
if (!Owner.TryGetComponent(out _spriteComponent))
{
Logger.Error("SingularityComponent was spawned without SpriteComponent");
}
if (!Owner.TryGetComponent(out _radiationPulseComponent))
{
Logger.Error("SingularityComponent was spawned without RadiationPulseComponent");
}
if (!Owner.TryGetComponent(out _collidableComponent))
Logger.Error("SingularityComponent was spawned without CollidableComponent!");
else
_collidableComponent.Hard = false;
Level = 1;
}
@@ -161,7 +153,8 @@ namespace Content.Server.GameObjects.Components.Singularity
return;
}
if (otherEntity.IsInContainer()) return;
if (otherEntity.IsInContainer())
return;
otherEntity.Delete();
Energy++;