From 5227bcfa382b914fff3f01e856a433a7f841b943 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sat, 9 Jan 2016 10:06:35 -0500 Subject: xml: dialog options --- xml/playerSpawnHill1.xml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'xml') diff --git a/xml/playerSpawnHill1.xml b/xml/playerSpawnHill1.xml index c924d7e..94292ab 100644 --- a/xml/playerSpawnHill1.xml +++ b/xml/playerSpawnHill1.xml @@ -9,14 +9,20 @@ - + - + Hello there! + - - Lol + + gg. + + + + Frrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr -- cgit v1.2.3 From 66c99350e63ab6b32ec7fcda45e2e6b8c9f658da Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sun, 10 Jan 2016 14:53:08 -0500 Subject: xml: more npc functionality --- src/gameplay.cpp | 35 ++++++++++++++++++++++++++++++++--- src/world.cpp | 4 +--- xml/playerSpawnHill1.xml | 19 +++++++++++++++---- 3 files changed, 48 insertions(+), 10 deletions(-) (limited to 'xml') diff --git a/src/gameplay.cpp b/src/gameplay.cpp index 9cae698..aede91a 100644 --- a/src/gameplay.cpp +++ b/src/gameplay.cpp @@ -46,6 +46,7 @@ int commonAIFunc(NPC *speaker){ XMLDocument xml; XMLElement *exml,*oxml; unsigned int idx; + bool stop = false; for(auto &n : npcd){ if(n.npc == speaker){ @@ -102,6 +103,22 @@ int commonAIFunc(NPC *speaker){ ui::dialogBox(speaker->name,"",false,exml->GetText()); ui::waitForDialog(); } + if(exml->Attribute("call")){ + for(auto &n : currentWorld->npc){ + if(!strcmp(n->name,exml->Attribute("call"))){ + if(exml->QueryUnsignedAttribute("callid",&idx) == XML_NO_ERROR){ + for(auto &n2 : npcd){ + if(n2.npc == n){ + n2.index = idx; + break; + } + } + } + n->addAIFunc(commonAIFunc,false); + break; + } + } + } if(exml->QueryUnsignedAttribute("nextid",&idx) == XML_NO_ERROR){ for(auto &n : npcd){ if(n.npc == speaker){ @@ -109,7 +126,11 @@ int commonAIFunc(NPC *speaker){ break; } } - return 1; + if(exml->QueryBoolAttribute("stop",&stop) == XML_NO_ERROR && stop) + return 0; + else if(exml->QueryBoolAttribute("pause",&stop) == XML_NO_ERROR && stop) + return 1; + else return commonAIFunc(speaker); } return 0; } @@ -127,6 +148,7 @@ void initEverything(void){ std::vector xmlFiles; static char *file; bool dialog; + float spawnx; XMLDocument xml; XMLElement *wxml; @@ -158,9 +180,16 @@ void initEverything(void){ earth.back()->generate(wxml->UnsignedAttribute("width")); } }else if(!strcmp(name,"mob")){ - earth.back()->addMob(wxml->UnsignedAttribute("type"),wxml->FloatAttribute("x"),wxml->FloatAttribute("y")); + if(wxml->QueryFloatAttribute("x",&spawnx) != XML_NO_ERROR) + earth.back()->addMob(wxml->UnsignedAttribute("type"),getRand() % earth.back()->getTheWidth() / 2,100); + else + earth.back()->addMob(wxml->UnsignedAttribute("type"),wxml->FloatAttribute("x"),wxml->FloatAttribute("y")); }else if(!strcmp(name,"npc")){ - earth.back()->addNPC(wxml->FloatAttribute("x"),wxml->FloatAttribute("y")); + if(wxml->QueryFloatAttribute("x",&spawnx) != XML_NO_ERROR) + earth.back()->addNPC(getRand() % earth.back()->getTheWidth() / 2.0f,100); + else + earth.back()->addNPC(wxml->FloatAttribute("x"),wxml->FloatAttribute("y")); + if(wxml->Attribute("name")){ delete[] earth.back()->npc.back()->name; earth.back()->npc.back()->name = new char[strlen(wxml->Attribute("name"))+1]; diff --git a/src/world.cpp b/src/world.cpp index e97ec56..68d5d2f 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -770,11 +770,9 @@ LOOP2: cline[i].y-=(yoff-DRAW_Y_OFFSET); } //glEnd(); - //glUseProgram(0); + glUseProgram(0); glDisable(GL_TEXTURE_2D); - //glUseProgram(0); - /* * Draw non-structure entities. */ diff --git a/xml/playerSpawnHill1.xml b/xml/playerSpawnHill1.xml index 94292ab..f3036a5 100644 --- a/xml/playerSpawnHill1.xml +++ b/xml/playerSpawnHill1.xml @@ -3,9 +3,10 @@