From c8c09860cb732006e161d26f25ff46e508770218 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Wed, 9 Mar 2016 08:40:58 -0500 Subject: [PATCH] XML'd pages --- .gitattributes | 2 +- Changelog | 7 ++++++ assets/pages/gootaGoFast.png | Bin 20663 -> 20631 bytes config/items.h | 45 ----------------------------------- config/quest_list.txt | 1 - include/Texture.h | 2 +- include/ui.h | 2 ++ src/gameplay.cpp | 18 ++++++++++++-- src/ui.cpp | 42 +++++++++++++++++++++++++------- src/world.cpp | 27 ++++++++++++--------- xml/playerSpawnHill1.xml | 3 +++ 11 files changed, 79 insertions(+), 70 deletions(-) delete mode 100644 config/items.h delete mode 100644 config/quest_list.txt diff --git a/.gitattributes b/.gitattributes index b98fd9b..7bb2418 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ +include/tinyxml2.h linguist-vendored src/tinyxml2.cpp linguist-vendored src/threadpool.cpp linguist-vendored -include/tinyxml2.h linguist-vendored include/threadpool.h linguist-vendored include/SDL2/* linguist-vendored include/freetype/* linguist-vendored diff --git a/Changelog b/Changelog index bac3a64..795aa0d 100644 --- a/Changelog +++ b/Changelog @@ -749,3 +749,10 @@ - fixed world draw shadings - improved merchant menu + +3/9/2016: +========= + + - pages are XMLable and can be drawn + - dialogs are cool with threads + - better lighting diff --git a/assets/pages/gootaGoFast.png b/assets/pages/gootaGoFast.png index a113f5d940cb5b89c7b75ef7883564e469681eac..639c0f0f2a98b8c56b03caeced9e1c4470036e46 100644 GIT binary patch literal 20631 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�`Nd<5q^#s<#=-w9oR(>rnMSRjZB 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 CFaAIP literal 20663 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 dopt; void destroyEverything(void); -void segFault(){ +inline void segFault() { (*((int *)NULL))++; } @@ -210,6 +209,21 @@ CONT: return 0; } +void commonPageFunc( Mob *callee ) +{ + static bool lock = false; + + if ( !lock ) { + lock = true; + + ui::drawPage( callee->heyid ); + ui::waitForDialog(); + + callee->alive = false; + lock = false; + } +} + void commonTriggerFunc(Mob *callee){ static bool lock = false; XMLDocument xml; diff --git a/src/ui.cpp b/src/ui.cpp index eb25e2e..50ae9de 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -82,6 +82,8 @@ Mix_Chunk *battleStart; Mix_Chunk *sanic; +static GLuint pageTex = 0; + void Menu::gotoParent(){ if(parent == NULL){ currentMenu = NULL; @@ -655,12 +657,28 @@ namespace ui { } + void drawPage( std::string path ) { + pageTex = Texture::loadTexture( path ); + } + void draw(void){ unsigned char i; float x,y,tmp; char *rtext; - if(dialogBoxExists){ + if ( pageTex ) { + + glEnable( GL_TEXTURE_2D); + glBindTexture( GL_TEXTURE_2D, pageTex ); + glBegin( GL_QUADS ); + glTexCoord2i( 0, 0 ); glVertex2i( offset.x - 300, SCREEN_HEIGHT - 100 ); + glTexCoord2i( 1, 0 ); glVertex2i( offset.x + 300, SCREEN_HEIGHT - 100 ); + glTexCoord2i( 1, 1 ); glVertex2i( offset.x + 300, SCREEN_HEIGHT - 600 ); + glTexCoord2i( 0, 1 ); glVertex2i( offset.x - 300, SCREEN_HEIGHT - 600 ); + glEnd(); + glDisable( GL_TEXTURE_2D); + + } else if (dialogBoxExists){ rtext=typeOut(dialogBoxText); @@ -692,7 +710,7 @@ namespace ui { glVertex2f(x+1+(SCREEN_WIDTH/3),y+1); glVertex2f(x+1+(SCREEN_WIDTH/3),y-1-SCREEN_HEIGHT*.6); glVertex2f(x-1,y-1-SCREEN_HEIGHT*.6); - glVertex2f(x,y+1); + glVertex2f(x - 1,y+1); glEnd(); glColor3ub(0,0,0); @@ -787,11 +805,11 @@ namespace ui { glColor3ub(255, 255, 255); glBegin(GL_LINE_STRIP); - glVertex2f(x-1 ,y+1); - glVertex2f(x+1+SCREEN_WIDTH-HLINE*16,y+1); - glVertex2f(x+1+SCREEN_WIDTH-HLINE*16,y-1-SCREEN_HEIGHT/4); - glVertex2f(x-1 ,y-1-SCREEN_HEIGHT/4); - glVertex2f(x ,y+1); + glVertex2i(x-1 ,y+1); + glVertex2i(x+1 +SCREEN_WIDTH-HLINE*16,y+1); + glVertex2i(x+1+SCREEN_WIDTH-HLINE*16,y-1-SCREEN_HEIGHT/4); + glVertex2i(x-1 ,y-1-SCREEN_HEIGHT/4); + glVertex2i( x - 1, y + 1 ); glEnd(); glColor3ub(0,0,0); @@ -1199,6 +1217,13 @@ namespace ui { void dialogAdvance(void){ unsigned char i; + + if ( pageTex ) { + glDeleteTextures( 1, &pageTex ); + pageTex = 0; + return; + } + if(!typeOutDone){ typeOutDone = true; return; @@ -1214,7 +1239,6 @@ namespace ui { } } DONE: - // handle important text if(dialogImportant){ @@ -1254,7 +1278,7 @@ DONE: // mouse clicks case SDL_MOUSEBUTTONDOWN: // right click advances dialog - if ( ( e.button.button & SDL_BUTTON_RIGHT ) && dialogBoxExists ) + if ( ( e.button.button & SDL_BUTTON_RIGHT ) && (dialogBoxExists | pageTex) ) dialogAdvance(); // left click uses item if ( ( e.button.button & SDL_BUTTON_LEFT ) && !dialogBoxExists ) diff --git a/src/world.cpp b/src/world.cpp index 5ce0b2d..af28ac5 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -23,7 +23,8 @@ using namespace tinyxml2; extern Player *player; // main.cpp? extern World *currentWorld; // main.cpp extern int commonAIFunc(NPC *); // entities.cpp -extern void commonTriggerFunc(Mob *); // entities.cpp +extern void commonTriggerFunc(Mob *); // gameplay.cpp +extern void commonPageFunc(Mob *); // gameplay.cpp extern bool inBattle; extern unsigned int tickCount; // main.cpp @@ -1342,7 +1343,8 @@ loadWorldFromXMLNoSave( std::string path ) { float spawnx, randx; bool dialog,Indoor; - const char *ptr,*name; + const char *ptr; + std::string name; currentXML = (std::string)"xml/" + path; @@ -1364,18 +1366,18 @@ loadWorldFromXMLNoSave( std::string path ) { while(wxml){ name = wxml->Name(); - if(!strcmp(name,"link")){ + if ( name == "link" ) { if((ptr = wxml->Attribute("left"))) tmp->setToLeft(ptr); else if((ptr = wxml->Attribute("right"))) tmp->setToRight(ptr); else abort(); - }else if(!strcmp(name,"style")){ + } else if ( name == "style" ) { tmp->setStyle(wxml->StrAttribute("folder")); tmp->setBackground((WorldBGType)wxml->UnsignedAttribute("background")); tmp->setBGM(wxml->StrAttribute("bgm")); - }else if(!strcmp(name,"generation")){ + } else if ( name == "generation" ) { if(!strcmp(wxml->Attribute("type"),"Random")){ if(Indoor) ((IndoorWorld *)tmp)->generate(wxml->UnsignedAttribute("width")); @@ -1385,7 +1387,7 @@ loadWorldFromXMLNoSave( std::string path ) { } }else if(Indoor) abort(); - }else if(!strcmp(name,"mob")){ + } else if ( name == "mob" ) { unsigned int type; type = wxml->UnsignedAttribute("type"); if(wxml->QueryFloatAttribute("x",&spawnx) != XML_NO_ERROR) @@ -1395,7 +1397,7 @@ loadWorldFromXMLNoSave( std::string path ) { if(wxml->QueryBoolAttribute("aggressive",&dialog) == XML_NO_ERROR) tmp->mob.back()->aggressive = dialog; - }else if(!strcmp(name,"npc")){ + } else if ( name == "npc" ) { const char *npcname; if(wxml->QueryFloatAttribute("x",&spawnx) != XML_NO_ERROR) @@ -1415,7 +1417,7 @@ loadWorldFromXMLNoSave( std::string path ) { tmp->npc.back()->addAIFunc(commonAIFunc,false); else tmp->npc.back()->dialogIndex = 9999; - }else if(!strcmp(name,"structure")){ + } else if ( name == "structure" ) { tmp->addStructure((BUILD_SUB)wxml->UnsignedAttribute("type"), wxml->QueryFloatAttribute("x",&spawnx) != XML_NO_ERROR ? getRand() % tmp->getTheWidth() / 2.0f : @@ -1423,9 +1425,12 @@ loadWorldFromXMLNoSave( std::string path ) { 100, wxml->StrAttribute("texture"), wxml->StrAttribute("inside")); - }else if(!strcmp(name,"trigger")){ + } else if ( name == "trigger" ) { tmp->addMob(MS_TRIGGER,wxml->FloatAttribute("x"),0,commonTriggerFunc); tmp->mob.back()->heyid = wxml->Attribute("id"); + } else if ( name == "page" ) { + tmp->addMob( MS_PAGE, wxml->FloatAttribute("x"), 0, commonPageFunc ); + tmp->mob.back()->heyid = wxml->Attribute("id"); } wxml = wxml->NextSiblingElement(); @@ -1449,13 +1454,13 @@ loadWorldFromXMLNoSave( std::string path ) { * READS DATA ABOUT STRUCTURE CONTAINED IN VILLAGE */ - if(!strcmp(name,"structure")){ + if ( name == "structure" ) { tmp->addStructure((BUILD_SUB)vil->UnsignedAttribute("type"), vil->QueryFloatAttribute("x", &spawnx) != XML_NO_ERROR ? randx : spawnx, 100, vil->StrAttribute("texture"), vil->StrAttribute("inside")); - }else if(!strcmp(name, "stall")){ + }else if ( name == "stall" ) { if(!strcmp(vil->Attribute("type"),"market")){ std::cout << "Market" << std::endl; tmp->addStructure((BUILD_SUB)70, diff --git a/xml/playerSpawnHill1.xml b/xml/playerSpawnHill1.xml index 2e8b2aa..c79b93f 100644 --- a/xml/playerSpawnHill1.xml +++ b/xml/playerSpawnHill1.xml @@ -10,6 +10,9 @@ + + + -- 2.39.5