aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog10
-rw-r--r--include/entities.h1
-rw-r--r--src/gameplay.cpp55
-rw-r--r--src/inventory.cpp6
-rw-r--r--src/ui.cpp6
-rw-r--r--src/world.cpp14
-rw-r--r--xml/playerSpawnHill1.xml8
7 files changed, 79 insertions, 21 deletions
diff --git a/Changelog b/Changelog
index 2f5cdf4..00a0a23 100644
--- a/Changelog
+++ b/Changelog
@@ -608,3 +608,13 @@
- removed old, unused and commented codes
- began working on XML'ing quests
- improved mouse
+
+2/4/2016:
+=========
+
+ - fixed world boundary glitch
+ - began work on XML'ing triggers
+ - npcs can assign quests through XML
+ - screenshots
+ - improved memory management
+ - more audio sliders
diff --git a/include/entities.h b/include/entities.h
index 41f2fff..9cc1b31 100644
--- a/include/entities.h
+++ b/include/entities.h
@@ -208,6 +208,7 @@ public:
bool aggressive;
double init_y;
void (*hey)(Mob *callee);
+ std::string heyid;
Mob(int);
~Mob();
diff --git a/src/gameplay.cpp b/src/gameplay.cpp
index 1103cfa..2b540d9 100644
--- a/src/gameplay.cpp
+++ b/src/gameplay.cpp
@@ -173,7 +173,7 @@ int commonAIFunc(NPC *speaker){
speaker->dialogIndex = 9999;
return 0;
}else if(exml->QueryBoolAttribute("pause",&stop) == XML_NO_ERROR && stop){
- speaker->dialogIndex = 9999;
+ //speaker->dialogIndex = 9999;
return 1;
}else return commonAIFunc(speaker);
}else{
@@ -191,6 +191,38 @@ int commonAIFunc(NPC *speaker){
return 0;
}
+void commonTriggerFunc(Mob *callee){
+ static bool lock = false;
+ XMLDocument xml;
+ XMLElement *exml;
+
+ if(!lock){
+ lock = true;
+
+ xml.LoadFile(currentXML);
+ exml = xml.FirstChildElement("Trigger");
+
+ while(strcmp(exml->Attribute("id"),callee->heyid.c_str()))
+ exml = exml->NextSiblingElement();
+
+ player->vel.x = 0;
+
+ std::cout<<"1\n";
+ ui::toggleBlackFast();
+ std::cout<<"2\n";
+ ui::waitForCover();
+ std::cout<<"3\n";
+ ui::importantText(exml->GetText());
+ std::cout<<"4\n";
+ ui::waitForDialog();
+ std::cout<<"5\n";
+ ui::toggleBlackFast();
+
+ callee->alive = false;
+ lock = false;
+ }
+}
+
void destroyEverything(void);
void initEverything(void){
std::vector<std::string> xmlFiles;
@@ -227,17 +259,6 @@ void initEverything(void){
}
}
- /*
- * Spawn the player and begin the game.
- */
-
- player = new Player();
- player->spawn(200,100);
-
- currentWorld->bgmPlay(NULL);
- atexit(destroyEverything);
- std::cout << "Hey";
-
pauseMenu.items.push_back(ui::createParentButton({-256/2,0},{256,75},{0.0f,0.0f,0.0f}, "Resume"));
pauseMenu.items.push_back(ui::createChildButton({-256/2,-100},{256,75},{0.0f,0.0f,0.0f}, "Options"));
pauseMenu.items.push_back(ui::createButton({-256/2,-200},{256,75},{0.0f,0.0f,0.0f}, "Save and Quit", ui::quitGame));
@@ -252,6 +273,16 @@ void initEverything(void){
optionsMenu.child = NULL;
optionsMenu.parent = &pauseMenu;
// optionsMenu.push_back(ui::createButton({-256/2,-200},{256,75},{0.0f,0.0f,0.0f}, (const char*)("Save and Quit"), );
+
+ /*
+ * Spawn the player and begin the game.
+ */
+
+ player = new Player();
+ player->spawn(200,100);
+
+ currentWorld->bgmPlay(NULL);
+ atexit(destroyEverything);
}
extern std::vector<int (*)(NPC *)> AIpreload;
diff --git a/src/inventory.cpp b/src/inventory.cpp
index de60030..93bdeb6 100644
--- a/src/inventory.cpp
+++ b/src/inventory.cpp
@@ -88,6 +88,12 @@ void initInventorySprites(void){
}
void destroyInventory(void){
+
+ while(!itemMap.empty()){
+ delete itemMap.front();
+ itemMap.erase(itemMap.begin());
+ }
+
Mix_FreeChunk(swordSwing);
}
diff --git a/src/ui.cpp b/src/ui.cpp
index 937367c..f666874 100644
--- a/src/ui.cpp
+++ b/src/ui.cpp
@@ -976,7 +976,7 @@ namespace ui {
fwrite(&bgr, 1,3*SCREEN_WIDTH*SCREEN_HEIGHT,bmp);
delete[] pixels;
-
+
fclose(bmp);
}
@@ -1000,8 +1000,10 @@ DONE:
if(dialogImportant){
dialogImportant = false;
setFontSize(16);
- toggleBlack();
+ //toggleBlack();
}
+ /*if(ui::fontSize != 16)
+ setFontSize(16);*/
dialogBoxExists = false;
}
diff --git a/src/world.cpp b/src/world.cpp
index 7126095..6118851 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -895,10 +895,10 @@ void World::singleDetect(Entity *e){
* Insure that the entity doesn't fall off either edge of the world.
*/
- if(e->loc.x<x_start){ // Left bound
+ if(e->loc.x < x_start){ // Left bound
e->vel.x=0;
- e->loc.x=x_start + HLINE / 2;
+ e->loc.x=(float)x_start + HLINE / 2;
}else if(e->loc.x + e->width + HLINE > x_start + getWidth(this)){ // Right bound
@@ -1071,6 +1071,7 @@ char *World::setToRight(const char *file){
World *World::goWorldLeft(Player *p){
World *tmp;
+
if(toLeft && p->loc.x < x_start + HLINE * 15){
tmp = loadWorldFromXML(toLeft);
@@ -1200,7 +1201,8 @@ void World::save(void){
#include <sstream>
-extern int commonAIFunc(NPC *);
+extern int commonAIFunc(NPC *);
+extern void commonTriggerFunc(Mob *);
void World::load(void){
std::string save,data,line;
@@ -1449,8 +1451,6 @@ World *loadWorldFromXML(const char *path){
strcpy(currentXML,"xml/");
strcat(currentXML,path);
- //std::cout<<currentXML<<std::endl;
-
xml.LoadFile(currentXML);
wxml = xml.FirstChildElement("World");
@@ -1523,7 +1523,11 @@ World *loadWorldFromXML(const char *path){
tmp->addStructure((BUILD_SUB)wxml->UnsignedAttribute("type"),getRand() % tmp->getTheWidth() / 2.0f,100,ptr);
else
tmp->addStructure((BUILD_SUB)wxml->UnsignedAttribute("type"),spawnx,wxml->FloatAttribute("y"),ptr);
+ }else if(!strcmp(name,"trigger")){
+ tmp->addMob(MS_TRIGGER,wxml->FloatAttribute("x"),0,commonTriggerFunc);
+ tmp->mob.back()->heyid = wxml->Attribute("id");
}
+
wxml = wxml->NextSiblingElement();
}
diff --git a/xml/playerSpawnHill1.xml b/xml/playerSpawnHill1.xml
index 53e6a3c..8fb98c7 100644
--- a/xml/playerSpawnHill1.xml
+++ b/xml/playerSpawnHill1.xml
@@ -7,12 +7,16 @@
<mob type="1" aggressive="false" />
+ <trigger x="-300" id="Test" />
+
<npc name="Ralph" hasDialog="true" />
<npc name="Johnny" hasDialog="true" />
<structure type="5" inside="playerSpawnHill1_Building1.xml" />
</World>
+<Trigger id="Test">It was a dark and stormy night...</Trigger>
+
<Dialog name="Ralph">
<text id="0">
@@ -32,12 +36,12 @@
</Dialog>
<Dialog name="Johnny">
- <text id="0" nextid="1" stop="true">
+ <text id="0" nextid="1" pause="true">
Sup bro!
<quest assign="Quest #1" />
</text>
- <text id="1" >
+ <text id="1" stop="true">
My name's Johnny.
<give id="Dank Maymay" count="1" />
</text>