/* * UIFontComponent.h * * Created on: May 14, 2020 * Author: ayoungblood */ #ifndef SRC_ECS_UIFONTCOMPONENT_H_ #define SRC_ECS_UIFONTCOMPONENT_H_ #define ASCII_START_IDX 32 #define ASCII_COUNT 96 #define ASCII_ROW_COUNT 16 #include "Components.h" #include "SDL2/SDL.h" #include "../assetmgr/AssetManager.h" class UIFontComponent : public Component { private: // SDL_Texture * texture; // Font dimensions int _LetterWidth; int _LetterHeight; // Track current letter on texture SDL_Rect _LetterClips[ASCII_COUNT]; public: // SDL_RendererFlip spriteFlip = SDL_FLIP_NONE; SDL_Texture* texture; SDL_Rect srcRect, destRect; Vector2D position; // UIFontComponent() = default; UIFontComponent(std::string id, int letterW, int letterH, int xpos, int ypos, int scale) { texture = Game::assets->GetTexture(id); srcRect = UIFontComponent::SetCharClips(texture, xpos, ypos); position.x = xpos; position.y = ypos; destRect.x = xpos; destRect.y = ypos; destRect.w = letterW * scale; destRect.h = letterH * scale; } ~UIFontComponent() { SDL_DestroyTexture(texture); } void update() override { } void draw() override { TextureManager::Draw(texture, srcRect, destRect, SDL_FLIP_NONE); } SDL_Rect SetCharClips(SDL_Texture* fontTex, int x, int y) { SDL_Rect letterClip; for (int i = 0; i < ASCII_COUNT; ++i) { _LetterClips[i].x = x + ((i % ASCII_ROW_COUNT) * _LetterWidth); _LetterClips[i].y = y + ((i / ASCII_ROW_COUNT) * _LetterHeight); _LetterClips[i].w = _LetterWidth; _LetterClips[i].h = _LetterHeight; letterClip = _LetterClips[i]; } return letterClip; } }; #endif /* SRC_ECS_UIFONTCOMPONENT_H_ */