Space Fighter
A "shmup" game for Computer Programming C++
Loading...
Searching...
No Matches
GameObject.h
Go to the documentation of this file.
1
2#pragma once
3
4#include "KatanaEngine.h"
5#include "CollisionType.h"
6
7using namespace KatanaEngine;
8
9
10class Level;
11
15{
16
17public:
18
20 GameObject();
21 virtual ~GameObject() { s_count--; }
22
26 static void SetCurrentLevel(Level *pLevel) { s_pCurrentLevel = pLevel; }
27
30 static Level *GetCurrentLevel() { return s_pCurrentLevel; }
31
34 virtual void Update(const GameTime& gameTime);
35
38 virtual void Draw(SpriteBatch& spriteBatch) = 0;
39
42 virtual bool IsActive() const { return m_isActive; }
43
45 virtual void Activate() { m_isActive = true; }
46
48 virtual void Deactivate() { m_isActive = false; }
49
52 virtual Vector2 &GetPosition() { return m_position; }
53
56 virtual Vector2 &GetPreviousPosition() { return m_previousPosition; }
57
60 virtual std::string ToString() const = 0;
61
67 virtual Vector2 GetHalfDimensions() const;
68
72 virtual uint32_t GetIndex() const { return m_index; }
73
76 virtual CollisionType GetCollisionType() const = 0;
77
80 virtual float GetCollisionRadius() const { return m_collisionRadius; }
81
84 virtual void Hit(const float damage) { }
85
89 virtual bool HasMask(CollisionType mask) const { return mask.Contains(GetCollisionType()); }
90
91 virtual bool IsMask(CollisionType mask) const { return (GetCollisionType() == mask); }
92
93 virtual bool IsDrawnByLevel() const { return true; }
94
95
96protected:
97
98 virtual void SetCollisionRadius(const int radius) { m_collisionRadius = radius; }
99
100 virtual void SetPosition(const float x, const float y);
101
102 virtual void SetPosition(const Vector2 &position);
103
104 virtual void TranslatePosition(const float x, const float y);
105
106 virtual void TranslatePosition(const Vector2 &offset);
107
108 virtual bool IsOnScreen() const;
109
110
111private:
112
113 static Level *s_pCurrentLevel;
114 static uint32_t s_count;
115
116 uint32_t m_index = 0;
117
118 bool m_isActive = false;
119
120 Vector2 m_position;
121 Vector2 m_previousPosition;
122
123 float m_collisionRadius = 0;
124};
125
Represents a type of collision.
bool Contains(const CollisionType &type) const
Check if the collision type contains a specific type.
Represents a game object in the game. This is the base class for all objects that can be updated,...
Definition GameObject.h:15
GameObject()
Instantiate a game object.
Definition GameObject.cpp:9
virtual void Hit(const float damage)
Hits the object with a specified amount of damage.
Definition GameObject.h:84
virtual CollisionType GetCollisionType() const =0
Get the collision type of the object.
static void SetCurrentLevel(Level *pLevel)
Set the current level.
Definition GameObject.h:26
virtual uint32_t GetIndex() const
Get the index of the object. Each object is assigned a unique ID when created, starting at 0.
Definition GameObject.h:72
virtual void TranslatePosition(const float x, const float y)
virtual ~GameObject()
Definition GameObject.h:21
virtual bool IsDrawnByLevel() const
Definition GameObject.h:93
virtual void SetPosition(const float x, const float y)
virtual void SetCollisionRadius(const int radius)
Definition GameObject.h:98
virtual bool IsOnScreen() const
virtual void Activate()
Activate the object.
Definition GameObject.h:45
virtual bool HasMask(CollisionType mask) const
Check if the object has a specific collision bit-mask.
Definition GameObject.h:89
virtual bool IsActive() const
Flag to determine if the object is active.
Definition GameObject.h:42
virtual std::string ToString() const =0
Get the string representation of the object.
virtual void Deactivate()
Deactivate the object.
Definition GameObject.h:48
virtual Vector2 & GetPreviousPosition()
Get the position of the object during the previous frame.
Definition GameObject.h:56
virtual Vector2 GetHalfDimensions() const
Get the half dimensions of the object.
virtual bool IsMask(CollisionType mask) const
Definition GameObject.h:91
virtual void Draw(SpriteBatch &spriteBatch)=0
Render the object.
virtual float GetCollisionRadius() const
Get the collision radius of the object.
Definition GameObject.h:80
static Level * GetCurrentLevel()
Get the current level.
Definition GameObject.h:30
virtual void Update(const GameTime &gameTime)
Update the object.
virtual Vector2 & GetPosition()
Get the position of the object.
Definition GameObject.h:52
Contains timing values for game updates and rendering.
Definition GameTime.h:21
Enables a group of sprites to be drawn using the same settings.
Definition SpriteBatch.h:48
Defines a vector with 2 components (x and y).
Definition Vector2.h:21
Represents a level in the game.
Definition Level.h:15
Katana Engine is a library of classes, interfaces, and value types that provides a foundation for dev...
Definition Animation.cpp:18