60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
#pragma once
|
||
|
||
#include <string>
|
||
#include <SDL2/SDL.h>
|
||
#include <SDL2/SDL_ttf.h>
|
||
#include "EngineFrame/Component/Component.h"
|
||
class Game;
|
||
|
||
class Text : public Component
|
||
{
|
||
private:
|
||
/* data */
|
||
SDL_Texture *m_texture = nullptr;
|
||
|
||
public:
|
||
Text(/* args */);
|
||
Text(std::string Str, TTF_Font *font, SDL_Color color);
|
||
Text(std::string Str, TTF_Font *font, SDL_Color textColor, SDL_Color strokeColor, int strokeSize);
|
||
~Text();
|
||
|
||
// 显式引入基类的Init方法,避免隐藏
|
||
using Component::Init;
|
||
void Init(std::string Str, TTF_Font *font, SDL_Color color);
|
||
void Init(std::string Str, TTF_Font *font, SDL_Color textColor, SDL_Color strokeColor, int strokeSize);
|
||
void HandleEvents(SDL_Event *e) override;
|
||
void Update(float deltaTime) override;
|
||
void Render(float deltaTime) override;
|
||
void Clear() override;
|
||
|
||
SDL_Texture *GetTexture();
|
||
|
||
public:
|
||
// 组件标签
|
||
Tag m_tag = Tag::RENDER | Tag::UPDATE; // 标记该组件需要渲染和更新
|
||
|
||
std::string m_text;
|
||
TTF_Font *m_font;
|
||
SDL_Color m_text_color;
|
||
SDL_Color m_stroke_color;
|
||
int m_stroke_size = 0;
|
||
|
||
SDL_Point Pos = {0, 0}; // 位置坐标
|
||
SDL_Point TextureSize = {0, 0}; // 纹理大小
|
||
SDL_Point Size = {0, 0}; // 大小
|
||
SDL_Point Anchor = {0, 0}; // 中心点
|
||
float Angle = 0.0f; // 旋转角度
|
||
SDL_RendererFlip flip = SDL_FLIP_NONE; // 翻转
|
||
|
||
public:
|
||
// 设置坐标
|
||
void SetPos(SDL_Point pos);
|
||
// 设置文本
|
||
void SetText(std::string Str);
|
||
|
||
// 获取坐标
|
||
SDL_Point GetPos();
|
||
// 获取文本
|
||
std::string GetText();
|
||
};
|