You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.6 KiB
46 lines
1.6 KiB
#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<Memory> 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::vector<Memory>resourceCost={},float letterDisplayDelay=0.01);
|
|
|
|
void UpdateAndDraw(vf2d pos,PixelGameEngine*pge,Resources&resources,std::map<Image,std::unique_ptr<Renderable>>&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<Image,std::unique_ptr<Renderable>>&IMAGES,int totalUsedMemory,int memoryLimit);
|
|
void SetDefaults();
|
|
}; |