(2a7829fab) Add ISpatialEntity as a common interface for everything that has a position in the game world. Would have used IMapEntity, but there's already MapEntity, which inherits Entity, so that would be confusing. Declare the inheritance only in the shared class (Character).

This commit is contained in:
Joonas Rikkonen
2019-05-03 13:45:41 +03:00
parent 4daa149f29
commit 953b5690ec
10 changed files with 91 additions and 221 deletions
@@ -14,7 +14,7 @@ using System.Text;
namespace Barotrauma
{
partial class Character : Entity, IDamageable, ISerializableEntity, IClientSerializable, IServerSerializable
partial class Character : Entity, IDamageable, ISerializableEntity, IClientSerializable, IServerSerializable, ISpatialEntity
{
public static List<Character> CharacterList = new List<Character>();
@@ -94,7 +94,7 @@ namespace Barotrauma
}
}
partial class Limb : ISerializableEntity
partial class Limb : ISerializableEntity, ISpatialEntity
{
// Note: not used
private const float LimbDensity = 15;
@@ -155,6 +155,8 @@ namespace Barotrauma
}
}
public Submarine Submarine => character.Submarine;
public Vector2 WorldPosition
{
get { return character.Submarine == null ? Position : Position + character.Submarine.Position; }
@@ -263,6 +263,19 @@ namespace Barotrauma.Items.Components
return true;
}
public override void OnItemLoaded()
{
sonar = item.GetComponent<Sonar>();
}
public override bool Select(Character character)
{
if (!CanBeSelected) return false;
user = character;
return true;
}
public override void Update(float deltaTime, Camera cam)
{
networkUpdateTimer -= deltaTime;
@@ -6,7 +6,7 @@ using System.Text;
namespace Barotrauma
{
class Entity
class Entity : ISpatialEntity
{
public const ushort NullEntityID = 0;
@@ -0,0 +1,12 @@
using Microsoft.Xna.Framework;
namespace Barotrauma
{
interface ISpatialEntity
{
Vector2 Position { get; }
Vector2 WorldPosition { get; }
Vector2 SimPosition { get; }
Submarine Submarine { get; }
}
}