aboutsummaryrefslogtreecommitdiff
path: root/SuperPolarity/Actors/GameActor.cs
blob: 3f426c083fc4fb4f877f5bef3e522938b7da3b54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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);

			try {
            	spriteBatch.Draw(Texture, Position, null, Color, Angle, Origin, 1f, SpriteEffects.None, 0f);
			} catch (ArgumentNullException) {
				Console.WriteLine ("Where'd the texture go?."); 
			}
        }

        public override void CleanUp()
        {
			base.CleanUp ();
            Texture = null;
        }

		
		public void TakeDamage(int amount)
		{
			if (!Immortal)
			{
				HP = HP - amount;
				if (HP < 0)
				{
					Die();
				}
			}
		}
    }
}