Files
DNF_DEV/source/EngineFrame/Component/NumberText.h

44 lines
1.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include "EngineFrame/Component/Text.h"
#include "EngineCore/Game.h"
#include "EngineFrame/Render/RenderManager.h"
#include <string>
#include <unordered_map>
#include <vector>
// 数字文本类,高效处理数字更新
class NumberText : public Text
{
private:
// 字体
TTF_Font *m_font;
// 文本颜色
SDL_Color m_color;
// 当前数字
int m_currentNumber = 0;
// 数字字符纹理缓存('0'-'9'和'-'
std::unordered_map<char, RefPtr<Texture>> m_digitTextures;
// 当前数字的字符精灵列表
std::vector<Sprite *> 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;
};