#pragma once #include #include #include #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(); };