+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+ public class GameActor : Actor
+ {
+ // Graphics / In-Game
+ protected Texture2D Texture;
+ protected Vector2 Origin;
+
+ // Constraints / Behavior
+ public int HP;
+ protected bool Immortal;
+ public int Value;
+
+ public override int Width
+ {
+ get { return Texture.Width; }
+ }
+
+ public override int Height
+ {
+ get { return Texture.Height; }
+ }
+
+ public GameActor(SuperPolarity newGame)
+ : base(newGame)
+ {
+ }
+
+ public virtual void Initialize(Texture2D texture, Vector2 position)
+ {
+ base.Initialize (position);
+
+ Texture = texture;
+
+ Collides = true;
+
+ Origin = new Vector2(Texture.Width / 2, Texture.Height / 2);
+
+ HP = 1;
+ Immortal = false;
+
+ Value = 1;
+ InitBox ();
+ }
+
+ public override void Draw(SpriteBatch spriteBatch)
+ {
+ base.Draw(spriteBatch);
+
+ spriteBatch.Draw(Texture, Position, null, Color, Angle, Origin, 1f, SpriteEffects.None, 0f);
+ }
+
+ public override void CleanUp()
+ {
+ base.CleanUp ();
+ Texture = null;
+ }
+
+
+ public void TakeDamage(int amount)
+ {
+ if (!Immortal)
+ {
+ HP = HP - amount;
+ if (HP < 0)
+ {
+ Die();
+ }
+ }
+ }
+ }
+}