#pragma once #include "olcPixelGameEngine.h" #include "olcPGEX_TransformedView.h" #include "Resources.h" #include "Unit.h" class Textbox{ std::string headerText=""; //If a textbox has a header, it displays at the top in a special color. std::string displayHeaderText=""; std::string text=""; std::string displayText=""; Renderable*boxImg; Audio*dialogSound; int soundHandle=-1; float audioFadeOutDelay=2; vf2d pos={}; vf2d maxSize={}; float audioVolume=0; float lastLetterTime=0; float letterDisplayDelay=0.01; int textboxMarker=-1; int lastWordMarker=-1; float continueWordTimer=0; std::string lastWord=""; int lastHeaderWordMarker=-1; std::string lastHeaderWord=""; std::vector resourceCost; //If resource cost is greater than 0, shows them. bool visible=true; Pixel backCol=CONSTANT::MESSAGE_BOX_DEFAULT_BACKCOL; public: Textbox(); void Initialize(std::string text,vf2d pos={},std::string headerText="",Renderable*boxImg=nullptr,vf2d maxSize={120,1},Audio*dialogSound=nullptr,std::vectorresourceCost={},float letterDisplayDelay=0.01); void UpdateAndDraw(vf2d pos,PixelGameEngine*pge,Resources&resources,std::map>&IMAGES,int totalUsedMemory,int memoryLimit); std::string&GetCurrentString(); void SetVisible(bool visible); vf2d GetSize(); void SetBackgroundColor(Pixel col); bool IsVisible(); bool bPressed=false; private: void Update(PixelGameEngine*pge); void UpdatePosition(vf2d newPos); void Draw(PixelGameEngine*pge,Resources&resources,std::map>&IMAGES,int totalUsedMemory,int memoryLimit); void SetDefaults(); };