generated from sigonasr2/CPlusPlusProjectTemplate
Display speaker and message box text appropriately.
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
538fd98146
commit
f8f626f04f
@ -48,7 +48,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GAMESTATE GAME_STATE=GAMEWORLD;
|
GAMESTATE GAME_STATE=CUTSCENE_1;
|
||||||
int textInd=0;
|
int textInd=0;
|
||||||
int cursorX=0;
|
int cursorX=0;
|
||||||
int transitionTime=0;
|
int transitionTime=0;
|
||||||
@ -68,10 +68,13 @@ public:
|
|||||||
CUTSCENE CURRENT_CUTSCENE=PAN_DOME;
|
CUTSCENE CURRENT_CUTSCENE=PAN_DOME;
|
||||||
int CUTSCENE_TIMER=0;
|
int CUTSCENE_TIMER=0;
|
||||||
bool CUTSCENE_FLAGS[8];
|
bool CUTSCENE_FLAGS[8];
|
||||||
bool messageBoxVisible;
|
bool messageBoxVisible=false;
|
||||||
int messageBoxCursor;
|
int messageBoxCursor;
|
||||||
std::string messageBoxSpeaker;
|
std::string messageBoxSpeaker;
|
||||||
std::string messageBoxText;
|
std::string messageBoxText;
|
||||||
|
std::string messageBoxRefText;
|
||||||
|
bool firstNewline=false;
|
||||||
|
bool secondNewline=false;
|
||||||
|
|
||||||
olc::Decal*DOME_DECAL;
|
olc::Decal*DOME_DECAL;
|
||||||
std::map<std::string,olc::Decal*> BASE_OBJECTS;
|
std::map<std::string,olc::Decal*> BASE_OBJECTS;
|
||||||
@ -140,7 +143,7 @@ public:
|
|||||||
TILES=new olc::Decal(new olc::Sprite("assets/tiles.png"));
|
TILES=new olc::Decal(new olc::Sprite("assets/tiles.png"));
|
||||||
DOME_DECAL=new olc::Decal(new olc::Sprite("assets/dome.png"));
|
DOME_DECAL=new olc::Decal(new olc::Sprite("assets/dome.png"));
|
||||||
BASE_OBJECTS["DOME"]=DOME_DECAL;
|
BASE_OBJECTS["DOME"]=DOME_DECAL;
|
||||||
LoadMap("assets/maps/map2");
|
LoadMap("assets/maps/map1");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +191,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PlayCutscene(CUTSCENE scene) {
|
void PlayCutscene(CUTSCENE scene) {
|
||||||
|
CURRENT_CUTSCENE=scene;
|
||||||
switch (scene) {
|
switch (scene) {
|
||||||
case PAN_DOME:{
|
case PAN_DOME:{
|
||||||
PLAYER_COORDS[0]=14;
|
PLAYER_COORDS[0]=14;
|
||||||
@ -227,7 +231,40 @@ public:
|
|||||||
fadeInCompleted();
|
fadeInCompleted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (messageBoxVisible) {
|
||||||
|
if (frameCount%MESSAGE_SCROLL_WAIT_SPD==0) {
|
||||||
|
if (messageBoxCursor<messageBoxRefText.length()) {
|
||||||
|
char c = messageBoxRefText[messageBoxCursor++];
|
||||||
|
printf("%c",c);
|
||||||
|
if (c=='\n') {
|
||||||
|
if (!firstNewline) {
|
||||||
|
firstNewline=true;
|
||||||
|
goto next;
|
||||||
|
} else if (!secondNewline) {
|
||||||
|
secondNewline=true;
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (firstNewline&&!secondNewline) {
|
||||||
|
messageBoxSpeaker+=c;
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
messageBoxText+=c;
|
||||||
|
if (GetTextSizeProp(messageBoxText).x>WIDTH-16) {
|
||||||
|
int tempIndex=messageBoxCursor;
|
||||||
|
while (messageBoxText[--tempIndex]!=' ') {
|
||||||
|
messageBoxText.erase(tempIndex);
|
||||||
|
}
|
||||||
|
messageBoxText.erase(tempIndex++);
|
||||||
|
messageBoxText+='\n';
|
||||||
|
while (tempIndex<messageBoxCursor) {
|
||||||
|
messageBoxText+=messageBoxRefText[tempIndex++];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
next:
|
||||||
if (GetKey(olc::F1).bPressed) {
|
if (GetKey(olc::F1).bPressed) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,6 +283,17 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (CURRENT_CUTSCENE) {
|
||||||
|
case CUTSCENE_4:{
|
||||||
|
if (!messageBoxVisible) {
|
||||||
|
if (!CUTSCENE_FLAGS[0]) {
|
||||||
|
CUTSCENE_FLAGS[0]=true;
|
||||||
|
DisplayMessageBox(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (GAME_STATE) {
|
switch (GAME_STATE) {
|
||||||
case CUTSCENE_1:
|
case CUTSCENE_1:
|
||||||
case CUTSCENE_3:{
|
case CUTSCENE_3:{
|
||||||
@ -337,6 +385,12 @@ public:
|
|||||||
GradientFillRectDecal({WIDTH/2,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1});
|
GradientFillRectDecal({WIDTH/2,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1});
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
if (messageBoxVisible) {
|
||||||
|
DrawDialogBox({4,HEIGHT-60},{WIDTH/3,16},olc::Pixel(18, 0, 33,180));
|
||||||
|
DrawDialogBox({0,HEIGHT-48},{WIDTH,48},olc::Pixel(18, 0, 33,180));
|
||||||
|
DrawStringPropDecal({8,HEIGHT-40},messageBoxText);
|
||||||
|
DrawStringPropDecal({8,HEIGHT-57},messageBoxSpeaker);
|
||||||
|
}
|
||||||
FillRectDecal({0,0},{WIDTH,HEIGHT},olc::Pixel(0,0,0,transparency));
|
FillRectDecal({0,0},{WIDTH,HEIGHT},olc::Pixel(0,0,0,transparency));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,6 +407,17 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DrawDialogBox(const olc::vi2d &pos, const olc::vi2d &size, olc::Pixel p = olc::WHITE, olc::Pixel p2 = olc::DARK_GREY, olc::Pixel p3 = olc::VERY_DARK_GREY) {
|
||||||
|
FillRectDecal({pos.x,pos.y},size,p2);
|
||||||
|
FillRectDecal({pos.x+1,pos.y+1},{size.x-2,size.y-2},p);
|
||||||
|
FillRectDecal({pos.x+2,pos.y+2},{size.x-4,size.y-4},p3);
|
||||||
|
FillRectDecal({pos.x+3,pos.y+3},{size.x-5,size.y-5},p);
|
||||||
|
Draw({pos.x,pos.y},olc::BLACK);
|
||||||
|
Draw({pos.x+size.x,pos.y+size.y},olc::BLACK);
|
||||||
|
Draw({pos.x+size.x,pos.y},olc::BLACK);
|
||||||
|
Draw({pos.x,pos.y+size.y},olc::BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
void fadeOut() {
|
void fadeOut() {
|
||||||
fade=true;
|
fade=true;
|
||||||
}
|
}
|
||||||
@ -364,6 +429,7 @@ public:
|
|||||||
messageBoxCursor=0;
|
messageBoxCursor=0;
|
||||||
messageBoxSpeaker="";
|
messageBoxSpeaker="";
|
||||||
messageBoxText="";
|
messageBoxText="";
|
||||||
|
messageBoxRefText=STORY_DIALOG[dialogNumber];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
File diff suppressed because one or more lines are too long
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user