48 lines
1.7 KiB
C++
48 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <utils.hpp>
|
|
#include <object/transform.hpp>
|
|
#include <SDL3/SDL.h>
|
|
#include <SDL3_image/SDL_image.h>
|
|
#include <utility>
|
|
#include <memory>
|
|
|
|
namespace Game::Renderer {
|
|
class Renderer;
|
|
class Texture;
|
|
}
|
|
|
|
namespace Game::Object {
|
|
class Entity {
|
|
public:
|
|
Entity(std::string name, std::shared_ptr<Game::Renderer::Texture> tex, Transform transform) : mName(name), mTex(tex), mTransform(transform), mIsActive(true) { LOG("Created Entity: " << mName); }
|
|
// I will define the copy and move constructors later - just deleted for now
|
|
Entity(const Entity&);
|
|
Entity& operator=(const Entity&);
|
|
Entity(Entity&&) noexcept;
|
|
Entity& operator=(Entity&&) noexcept;
|
|
virtual ~Entity() = 0;
|
|
|
|
virtual void start() = 0;
|
|
virtual void update() = 0;
|
|
void render(Game::Renderer::Renderer* renderer);
|
|
|
|
// Setters and getters
|
|
void setTexture(std::shared_ptr<Game::Renderer::Texture> tex) { mTex = tex; }
|
|
void setName(const std::string& name) { mName = name; }
|
|
void setTransform(const Transform& transform) { mTransform = transform; }
|
|
void setActive(bool active) { mIsActive = active; }
|
|
std::shared_ptr<Game::Renderer::Texture> getTexture() { return mTex; }
|
|
std::string getName() { return mName; }
|
|
Transform* getTransform() { return &mTransform; }
|
|
bool isActive() { return mIsActive; }
|
|
protected:
|
|
std::string mName;
|
|
std::shared_ptr<Game::Renderer::Texture> mTex;
|
|
Transform mTransform;
|
|
bool mIsActive;
|
|
private:
|
|
float mScaleConstant = 0.25f;
|
|
};
|
|
} |