#pragma once #include "EngineFrame/Component/Text.h" #include "EngineCore/Game.h" #include "EngineFrame/Render/RenderManager.h" #include #include #include // 数字文本类,高效处理数字更新 class NumberText : public Text { private: // 字体 TTF_Font *m_font; // 文本颜色 SDL_Color m_color; // 当前数字 int m_currentNumber = 0; // 数字字符纹理缓存('0'-'9'和'-') std::unordered_map> m_digitTextures; // 当前数字的字符精灵列表 std::vector m_digitSprites; // 预加载0-9和负号的纹理 void PreloadDigits(); // 更新数字精灵(根据新数字字符串重新排列字符) void UpdateDigitSprites(const std::string &numStr); public: // 构造函数:指定字体、颜色和字符尺寸 NumberText(TTF_Font *font, SDL_Color color); ~NumberText(); // 设置数字(核心方法:仅更新变化的数字部分) void SetNumber(int number); int GetNumber() const { return m_currentNumber; } // 重写Render,绘制所有数字字符 void Render() override; };