mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-06 17:09:06 +01:00
69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
#include "entity.h"
|
|
#include "xlog.h"
|
|
|
|
using namespace gfx;
|
|
|
|
Entity::Entity(Display &s)
|
|
: mSystem(s)
|
|
{
|
|
mRect.x = 0;
|
|
mRect.y = 0;
|
|
mRect.w = 0;
|
|
mRect.h = 0;
|
|
}
|
|
|
|
Entity::~Entity()
|
|
{
|
|
mTexture = nullptr;
|
|
}
|
|
|
|
void Entity::OnCreate(SDL_Renderer *renderer)
|
|
{
|
|
(void) renderer;
|
|
mCreated = true;
|
|
}
|
|
|
|
void Entity::ProcessEvent(const SDL_Event &event, const Vector2 &origin)
|
|
{
|
|
(void) event;
|
|
}
|
|
|
|
void Entity::Update(double deltaTime) { (void) deltaTime; }
|
|
|
|
void Entity::Draw(SDL_Renderer *renderer, int x_offset, int y_offset)
|
|
{
|
|
if (!mCreated)
|
|
{
|
|
OnCreate(renderer);
|
|
}
|
|
|
|
if (IsVisible() && (mTexture != nullptr))
|
|
{
|
|
SDL_Rect r = GetRect();
|
|
r.w *= GetScale().x;
|
|
r.h *= GetScale().y;
|
|
r.x = GetX() + x_offset;
|
|
r.y = GetY() + y_offset;
|
|
Render(renderer, r);
|
|
}
|
|
}
|
|
|
|
void Entity::SetTexture(SDL_Texture *texture)
|
|
{
|
|
mTexture = texture;
|
|
int w = 0;
|
|
int h = 0;
|
|
// get the width and height of the texture
|
|
if (SDL_QueryTexture(mTexture, NULL, NULL, &w, &h) == 0)
|
|
{
|
|
SetSize(w, h);
|
|
}
|
|
}
|
|
|
|
void Entity::Render(SDL_Renderer *renderer, const SDL_Rect &pos)
|
|
{
|
|
SDL_SetTextureBlendMode(mTexture, mBlend);
|
|
SDL_SetTextureColorMod(mTexture, mColorMod.r, mColorMod.g, mColorMod.b);
|
|
SDL_RenderCopyEx(renderer, mTexture, NULL, &pos, GetAngle(), NULL, SDL_FLIP_NONE);
|
|
}
|