Port ranged weapons to EntityCoordinates correctly.

This commit is contained in:
Víctor Aguilera Puerto
2020-10-17 00:44:22 +02:00
parent b4ea6857cd
commit 524229d4b4
7 changed files with 15 additions and 18 deletions

View File

@@ -107,7 +107,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Ammunition
} }
} }
public IEntity TakeBullet(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public IEntity TakeBullet(EntityCoordinates spawnAt)
{ {
if (_ammoIsProjectile) if (_ammoIsProjectile)
{ {
@@ -125,9 +125,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Ammunition
appearanceComponent.SetData(AmmoVisuals.Spent, true); appearanceComponent.SetData(AmmoVisuals.Spent, true);
} }
var entity = spawnAtGrid.GetGridId(_entityManager) != GridId.Invalid var entity = Owner.EntityManager.SpawnEntity(_projectileId, spawnAt);
? Owner.EntityManager.SpawnEntity(_projectileId, spawnAtGrid)
: Owner.EntityManager.SpawnEntity(_projectileId, spawnAtMap);
DebugTools.AssertNotNull(entity); DebugTools.AssertNotNull(entity);
return entity; return entity;

View File

@@ -190,7 +190,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
return _chamberContainer.ContainedEntity; return _chamberContainer.ContainedEntity;
} }
public override IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public override IEntity TakeProjectile(EntityCoordinates spawnAt)
{ {
var chamberEntity = _chamberContainer.ContainedEntity; var chamberEntity = _chamberContainer.ContainedEntity;
if (_autoCycle) if (_autoCycle)
@@ -202,7 +202,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
Dirty(); Dirty();
} }
return chamberEntity?.GetComponent<AmmoComponent>().TakeBullet(spawnAtGrid, spawnAtMap); return chamberEntity?.GetComponent<AmmoComponent>().TakeBullet(spawnAt);
} }
protected override bool WeaponCanFire() protected override bool WeaponCanFire()

View File

@@ -148,7 +148,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
return _chamberContainer.ContainedEntity; return _chamberContainer.ContainedEntity;
} }
public override IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public override IEntity TakeProjectile(EntityCoordinates spawnAt)
{ {
var chamberEntity = _chamberContainer.ContainedEntity; var chamberEntity = _chamberContainer.ContainedEntity;
if (!_manualCycle) if (!_manualCycle)
@@ -160,7 +160,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
Dirty(); Dirty();
} }
return chamberEntity?.GetComponent<AmmoComponent>().TakeBullet(spawnAtGrid, spawnAtMap); return chamberEntity?.GetComponent<AmmoComponent>().TakeBullet(spawnAt);
} }
private void Cycle(bool manual = false) private void Cycle(bool manual = false)

View File

@@ -203,14 +203,14 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public override IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public override IEntity TakeProjectile(EntityCoordinates spawnAt)
{ {
var ammo = _ammoSlots[_currentSlot]; var ammo = _ammoSlots[_currentSlot];
IEntity bullet = null; IEntity bullet = null;
if (ammo != null) if (ammo != null)
{ {
var ammoComponent = ammo.GetComponent<AmmoComponent>(); var ammoComponent = ammo.GetComponent<AmmoComponent>();
bullet = ammoComponent.TakeBullet(spawnAtGrid, spawnAtMap); bullet = ammoComponent.TakeBullet(spawnAt);
if (ammoComponent.Caseless) if (ammoComponent.Caseless)
{ {
_ammoSlots[_currentSlot] = null; _ammoSlots[_currentSlot] = null;

View File

@@ -147,7 +147,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
return ammo; return ammo;
} }
public override IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public override IEntity TakeProjectile(EntityCoordinates spawnAt)
{ {
var powerCellEntity = _powerCellContainer.ContainedEntity; var powerCellEntity = _powerCellContainer.ContainedEntity;
@@ -173,12 +173,11 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
{ {
entity = _ammoContainer.ContainedEntity; entity = _ammoContainer.ContainedEntity;
_ammoContainer.Remove(entity); _ammoContainer.Remove(entity);
entity.Transform.Coordinates = spawnAt;
} }
else else
{ {
entity = Owner.Transform.GridID != GridId.Invalid ? entity = Owner.EntityManager.SpawnEntity(_ammoPrototype, spawnAt);
Owner.EntityManager.SpawnEntity(_ammoPrototype, Owner.Transform.Coordinates)
: Owner.EntityManager.SpawnEntity(_ammoPrototype, Owner.Transform.MapPosition);
} }
if (entity.TryGetComponent(out ProjectileComponent projectileComponent)) if (entity.TryGetComponent(out ProjectileComponent projectileComponent))

View File

@@ -210,7 +210,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
return BoltOpen ? null : _chamberContainer.ContainedEntity; return BoltOpen ? null : _chamberContainer.ContainedEntity;
} }
public override IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap) public override IEntity TakeProjectile(EntityCoordinates spawnAt)
{ {
if (BoltOpen) if (BoltOpen)
{ {
@@ -219,7 +219,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
var entity = _chamberContainer.ContainedEntity; var entity = _chamberContainer.ContainedEntity;
Cycle(); Cycle();
return entity?.GetComponent<AmmoComponent>().TakeBullet(spawnAtGrid, spawnAtMap); return entity?.GetComponent<AmmoComponent>().TakeBullet(spawnAt);
} }
private void Cycle(bool manual = false) private void Cycle(bool manual = false)

View File

@@ -54,7 +54,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
private TimeSpan _lastFire; private TimeSpan _lastFire;
public abstract IEntity PeekAmmo(); public abstract IEntity PeekAmmo();
public abstract IEntity TakeProjectile(EntityCoordinates spawnAtGrid, MapCoordinates spawnAtMap); public abstract IEntity TakeProjectile(EntityCoordinates spawnAt);
// Recoil / spray control // Recoil / spray control
private Angle _minAngle; private Angle _minAngle;
@@ -230,7 +230,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
} }
var ammo = PeekAmmo(); var ammo = PeekAmmo();
var projectile = TakeProjectile(shooter.Transform.Coordinates, shooter.Transform.MapPosition); var projectile = TakeProjectile(shooter.Transform.Coordinates);
if (projectile == null) if (projectile == null)
{ {
soundSystem.PlayAtCoords(_soundEmpty, Owner.Transform.Coordinates); soundSystem.PlayAtCoords(_soundEmpty, Owner.Transform.Coordinates);