Drew DeVault e3051a673c Implement special cases for block drops
This does not include things that require certain tools, such as
cobblestone.
2015-02-01 14:30:02 -07:00

102 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using TrueCraft.API.Entities;
using TrueCraft.API;
using TrueCraft.API.Networking;
using TrueCraft.API.Server;
namespace TrueCraft.Core.Entities
{
public abstract class Entity : IEntity
{
protected Entity()
{
EnablePropertyChange = true;
EntityID = -1;
SpawnTime = DateTime.Now;
}
public DateTime SpawnTime { get; set; }
public int EntityID { get; set; }
protected Vector3 _Position;
public virtual Vector3 Position
{
get { return _Position; }
set
{
_Position = value;
OnPropertyChanged("Position");
}
}
protected Vector3 _Velocity;
public virtual Vector3 Velocity
{
get { return _Velocity; }
set
{
_Velocity = value;
OnPropertyChanged("Velocity");
}
}
protected float _Yaw;
public float Yaw
{
get { return _Yaw; }
set
{
_Yaw = value;
OnPropertyChanged("Yaw");
}
}
protected float _Pitch;
public float Pitch
{
get { return _Pitch; }
set
{
_Pitch = value;
OnPropertyChanged("Pitch");
}
}
public bool Despawned { get; set; }
public abstract Size Size { get; }
public abstract IPacket SpawnPacket { get; }
public virtual bool SendMetadataToClients { get { return false; } }
public virtual MetadataDictionary Metadata
{
get
{
var dictionary = new MetadataDictionary();
dictionary[0] = new MetadataByte(0); // Flags
dictionary[1] = new MetadataShort(300);
return dictionary;
}
}
public virtual void Update(IEntityManager entityManager)
{
}
protected bool EnablePropertyChange { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected internal virtual void OnPropertyChanged(string property)
{
if (!EnablePropertyChange) return;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}