Arcade Shooter
GameObject.h
1 
2 /* . ,'`. .
3  . .." _.-;' ⁄‚ `. . `
4  _.-"`.##%"_.--" ,' ⁄` `. "#" ___,,od000
5  ,'"-_ _.-.--"\ ,' `-_ '%#%',,/00000000000
6  ,' |_.' )`/- __..--""`-_`-._ J L/00000000000000
7  . + ,' _.-" / / _-"" `-._`-_/___\///0000 000M
8  .'_.-"" ' :_/_.-' _,`-/__V__\0000 00MMM
9  . _-"" . ' _,/000\ | /000 0MMMMM
10 _-" . ' . . ,/ 000\ | /000000000MMMMM
11  ` Shooter Library ' ,/ 000\|/000000000MMMMMM
12 . © 2017 - Shuriken Studios LLC ,/0 00000|0000000000MMMMMM */
13 
14 #pragma once
15 
16 using namespace KatanaEngine;
17 
18 namespace ShooterLibrary
19 {
20 
21  class Level;
22  class GameObject;
23 
26  typedef void(*OnDeactivate)(GameObject *pGameObject);
27 
29  class GameObject
30  {
31  friend class Game;
32 
33  public:
34 
35  GameObject();
36  virtual ~GameObject() { s_count--; }
37 
38 
42  static void SetCurrentLevel(Level *pLevel) { s_pCurrentLevel = pLevel; }
43 
46  static Level *GetCurrentLevel() { return s_pCurrentLevel; }
47 
50  virtual void SetDeactivateCallback(OnDeactivate callback) { m_onDeactivate = callback; }
51 
57  virtual void Update(const GameTime *pGameTime);
58 
64  virtual void Draw(SpriteBatch *pSpriteBatch) = 0;
65 
68  virtual bool IsActive() const { return m_isActive; }
69 
71  virtual void Activate() { m_isActive = true; }
72 
74  virtual void Deactivate();
75 
78  virtual Vector2 &GetPosition() { return m_position; }
79 
82  virtual Vector2 &GetPreviousPosition() { return m_previousPosition; }
83 
86  virtual std::string ToString() const = 0;
87 
90  virtual Vector2 GetHalfDimensions() const;
91 
94  virtual uint32_t GetIndex() const { return m_index; }
95 
100  virtual CollisionType GetCollisionType() const = 0;
101 
104  virtual float GetCollisionRadius() const { return m_collisionRadius; }
105 
108  virtual void Hit(const float damage) { }
109 
114  virtual bool HasMask(CollisionType mask) const { return mask.Contains(GetCollisionType()); }
115 
120  virtual bool IsMask(CollisionType mask) const { return (GetCollisionType() == mask); }
121 
122 
127  virtual bool IsDrawnByLevel() const { return true; }
128 
129 
130  protected:
131 
134  virtual void SetCollisionRadius(const int radius) { m_collisionRadius = radius; }
135 
139  virtual void SetPosition(const float x, const float y);
140 
145  virtual void SetPosition(const Vector2 &position);
146 
150  virtual void TranslatePosition(const float x, const float y);
151 
156  virtual void TranslatePosition(const Vector2 &offset);
157 
161  virtual bool IsOnScreen() const;
162 
163 
164  private:
165 
166  static Level *s_pCurrentLevel;
167  static uint32_t s_count;
168 
169  OnDeactivate m_onDeactivate;
170 
171  uint32_t m_index;
172 
173  bool m_isActive;
174 
175  Vector2 m_position;
176  Vector2 m_previousPosition;
177 
178  float m_collisionRadius;
179 
180  };
181 }
virtual void SetCollisionRadius(const int radius)
Sets the collision radius for the object.
Definition: GameObject.h:134
Base class for a shooter game. Inherit from this class when creating your own shooter game...
Definition: Game.h:21
virtual Vector2 & GetPreviousPosition()
Gets the previous position of the game object.
Definition: GameObject.h:82
virtual uint32_t GetIndex() const
Gets the index of the game object.
Definition: GameObject.h:94
Base class for all shooter levels.
Definition: Level.h:21
Contains timing values for game updates and rendering.
Definition: GameTime.h:17
bool Contains(const CollisionType &type)
Determines if the collision type contains another collision type.
Definition: CollisionType.h:136
virtual void SetDeactivateCallback(OnDeactivate callback)
Sets the callback function for when the menu item is selected.
Definition: GameObject.h:50
virtual float GetCollisionRadius() const
Gets the collision radius.
Definition: GameObject.h:104
Base class for all objects that will be updated and rendered on a GameplayScreen. ...
Definition: GameObject.h:29
Shooter Library is a library of classes, interfaces, and value types that provides a foundation for d...
Definition: Background.h:16
static Level * GetCurrentLevel()
Gets the current level.
Definition: GameObject.h:46
Defines a vector with 2 components (x and y). This is additional information...
Definition: Vector2.h:18
virtual bool IsDrawnByLevel() const
Determines if the level should draw the game object.
Definition: GameObject.h:127
virtual Vector2 & GetPosition()
Gets the position of the game object.
Definition: GameObject.h:78
virtual void Hit(const float damage)
Hits the object, dealing damage to it.
Definition: GameObject.h:108
virtual bool IsMask(CollisionType mask) const
Determines if the object matches a collision bit-mask.
Definition: GameObject.h:120
Enables a group of sprites to be drawn using the same settings.
Definition: SpriteBatch.h:44
virtual bool IsActive() const
Determines if the game object is active.
Definition: GameObject.h:68
static void SetCurrentLevel(Level *pLevel)
Sets the current game level.
Definition: GameObject.h:42
virtual bool HasMask(CollisionType mask) const
Determines if the object contains part of a collision bit-mask.
Definition: GameObject.h:114
void(* OnDeactivate)(GameObject *pGameObject)
Callback function for when a game object is deactivated.
Definition: GameObject.h:26
Defines the types of game objects that can collide with each other.
Definition: CollisionType.h:20
virtual void Activate()
Activates the game object.
Definition: GameObject.h:71
Katana Engine is a library of classes, interfaces, and value types that provides a foundation for dev...
Definition: Animation.cpp:14