using System;
using System.Collections.Generic;
using System.Text;
using FlatRedBall;
using FlatRedBall.Math.Geometry;
using FlatRedBall.Input;
using FlatRedBall.Graphics;
namespace FlatRedBallXna
{
public class SimpleEntity : PositionedObject
{
#region Fields
private string mContentManagerName;
private Sprite mVisibleRepresentation;
private Polygon mCollision;
#endregion
#region Properties
public Polygon Collision
{
get { return mCollision; }
}
#endregion
#region Methods
public SimpleEntity(string contentManagerName)
{
mContentManagerName = contentManagerName;
Initialize(true);
}
protected void Initialize(bool addToManagers)
{
// We can create the polygon here and just add
// it to managers later:
mCollision = Polygon.CreateEquilateral(
8, // Number of sides
1, // Radius
0);// Angle of first point in radians
if(addToManagers)
{
AddToManagers(null);
}
}
public virtual void AddToManagers(Layer layerToAddTo)
{
SpriteManager.AddPositionedObject(this);
mVisibleRepresentation = SpriteManager.AddSprite(
"redball.bmp", mContentManagerName);
mVisibleRepresentation.AttachTo(this, false);
mCollision.AttachTo(this, false); // Don't forget to attach to this
// Add the collision to the ShapeManager if you
// want it to be visible. This can help with debugging.
bool collisionVisible = false;
if (collisionVisible)
{
ShapeManager.AddPolygon(mCollision);
}
}
public virtual void Activity()
{
InputManager.Keyboard.ControlPositionedObject(this);
}
public virtual void Destroy()
{
SpriteManager.RemoveSprite(mVisibleRepresentation);
ShapeManager.Remove(mCollision);
SpriteManager.RemovePositionedObject(this);
}
#endregion
}
}