Don't let bullets fly forever. Give them 10 seconds until deleted.

This commit is contained in:
Pieter-Jan Briers
2019-08-13 23:43:44 +02:00
parent c95f17f54b
commit 72ba0d9458
2 changed files with 36 additions and 0 deletions

View File

@@ -20,6 +20,8 @@ namespace Content.Server.GameObjects.Components.Projectiles
public Dictionary<DamageType, int> damages = new Dictionary<DamageType, int>();
public float TimeLeft { get; set; } = 10;
/// <summary>
/// Function that makes the collision of this object ignore a specific entity so we don't collide with ourselves
/// </summary>

View File

@@ -0,0 +1,34 @@
using Content.Server.GameObjects.Components.Projectiles;
using JetBrains.Annotations;
using Robust.Shared.GameObjects;
using Robust.Shared.GameObjects.Systems;
namespace Content.Server.GameObjects.EntitySystems
{
[UsedImplicitly]
internal sealed class ProjectileSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
EntityQuery = new TypeEntityQuery(typeof(ProjectileComponent));
}
public override void Update(float frameTime)
{
base.Update(frameTime);
foreach (var entity in RelevantEntities)
{
var component = entity.GetComponent<ProjectileComponent>();
component.TimeLeft -= frameTime;
if (component.TimeLeft <= 0)
{
entity.Delete();
}
}
}
}
}