/* * UIText.cpp * * Created on: May 21, 2020 * Author: ayoungblood */ #include "UIText.h" #include "../game/Game.hpp" #include "../ecs/ECS.h" #include "../ecs/Components.h" #include "string.h" #include #include #include extern Manager manager; UIText::UIText(std::string text, std::string texId, int x, int y, int letterW, int letterH, int lScale, std::string tag, Game::groupLabels group) { inputText = text; textureID = texId; posX = x; posY = y; letterWidth = letterW; letterHeight = letterH; scale = lScale; // gameGroup = Game::groupLabels::groupUI_Layer3; auto& uiLetters(manager.addEntity()); uiLetters.setTag(tag); uiLetters.addGroup(group); } UIText::~UIText() { } void UIText::ParseString(std::string inputText, int x, int y, int letterScale, std::string tag, Game::groupLabels group) { // gameGroup = group; //Parse input text into an array of char int posX = x; int posY = y; int i = 0; char current = inputText[i]; int charsNumber = inputText.length(); // printf("Counting string \'%s\': \n",inputText.c_str()); // printf("%d\n",charsNumber); do { ++i; if (strcmp(¤t,"\n")!=0) { posX += letterWidth; } else { posX = x; posY += letterHeight; } UIText::AddLetter(posX, posY, current, tag, letterScale, group); current = inputText[i]; } while ((strcmp(¤t,"\0"))!=0); } void UIText::AddLetter(int xpos, int ypos, char crnt, std::string tag, int lttrScale, Game::groupLabels groupLabel) { // =======THIS NEEDS TO BE REFACTORED TO NOT USE INDIVIDUAL ENTITIES FOR EACH LETTER============ // auto& letter(manager.addEntity()); // letter.addComponent(xpos*lttrScale, ypos*lttrScale, letterWidth, letterHeight, 1); // letter.addComponent("font", SpriteComponent::spriteText, crnt, letterWidth, letterHeight, lttrScale); // letter.setTag(tag); // letter.addGroup(groupLabel); SDL_Texture* letterTexture; letterTexture = Game::assets->GetTexture(textureID); SDL_Rect srcRect,destRect; srcRect.x = ((crnt-ASCII_START_IDX) % ASCII_ROW_COUNT)*letterWidth; srcRect.y = ((crnt-ASCII_START_IDX)/ASCII_ROW_COUNT)*letterHeight; srcRect.w = letterWidth; srcRect.h = letterHeight; destRect.x = xpos; destRect.y = ypos; destRect.w = letterWidth*scale; destRect.h = letterHeight*scale; TextureManager::Draw(letterTexture,srcRect,destRect,SDL_FLIP_NONE); }