From b18d9c1b0fa305f82ddd0633e969a1a38869db6d Mon Sep 17 00:00:00 2001
From: Clyne Sullivan <tullivan99@gmail.com>
Date: Fri, 5 Feb 2016 08:29:56 -0500
Subject: font improvements

---
 src/config.cpp    |  7 +++++-
 src/gameplay.cpp  | 64 ++++++++++++++++++++++++++++++++++++++++++++-----------
 src/inventory.cpp |  6 ++++++
 src/ui.cpp        | 12 ++++++-----
 src/world.cpp     | 14 +++++++-----
 5 files changed, 80 insertions(+), 23 deletions(-)

(limited to 'src')

diff --git a/src/config.cpp b/src/config.cpp
index 8ec361d..ca6db1b 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -1,5 +1,7 @@
 #include <config.h>
 
+#include <ui.h>
+
 using namespace tinyxml2;
 
 extern unsigned int HLINE;
@@ -44,7 +46,10 @@ void readConfig(){
 	VOLUME_MASTER = vol->FirstChildElement("master")->FloatAttribute("volume");
 	VOLUME_MUSIC  = vol->FirstChildElement("music")->FloatAttribute("volume");
 	VOLUME_SFX    = vol->FirstChildElement("sfx")->FloatAttribute("volume");
-
+	
+	std::cout<<"Loading font through settings.xml..."<<std::endl;
+	ui::initFonts();
+	ui::setFontFace(xml.FirstChildElement("font")->Attribute("path"));
 }
 
 void updateConfig(){
diff --git a/src/gameplay.cpp b/src/gameplay.cpp
index 1103cfa..00faf70 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,47 @@ int commonAIFunc(NPC *speaker){
 	return 0;
 }
 
+void commonTriggerFunc(Mob *callee){
+	static bool lock = false;
+	XMLDocument xml;
+	XMLElement *exml;
+	
+	char *text,*pch;
+	
+	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;
+
+		ui::toggleBlackFast();
+		ui::waitForCover();
+		
+		text = new char[256];
+		strcpy(text,exml->GetText());
+		pch = strtok(text,"\n");
+		
+		while(pch){
+			ui::importantText(pch);
+			ui::waitForDialog();
+			
+			pch = strtok(NULL,"\n");
+		}
+		
+		delete[] text;
+		
+		ui::toggleBlackFast();
+		
+		callee->alive = false;
+		lock = false;
+	}
+}
+
 void destroyEverything(void);
 void initEverything(void){
 	std::vector<std::string> xmlFiles;
@@ -227,17 +268,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 +282,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..56a88a3 100644
--- a/src/ui.cpp
+++ b/src/ui.cpp
@@ -227,8 +227,8 @@ namespace ui {
 				buf[j*4  ]=fontColor[0];
 				buf[j*4+1]=fontColor[1];
 				buf[j*4+2]=fontColor[2];
-				//buf[j*4+3]=ftf->glyph->bitmap.buffer[j] == 255 ? 255 : 0;
-				buf[j*4+3]=ftf->glyph->bitmap.buffer[j];
+				buf[j*4+3]=ftf->glyph->bitmap.buffer[j] ? 255 : 0;
+				//buf[j*4+3]=ftf->glyph->bitmap.buffer[j];
 			}
 			
 			ftexwh[i-33].x=ftf->glyph->bitmap.width;
@@ -537,7 +537,7 @@ namespace ui {
 				  
 		dialogBoxExists = true;
 		dialogImportant = true;
-		toggleBlack();
+		//toggleBlack();
 	}
 	void draw(void){
 		unsigned char i;
@@ -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();
 	}
 	
-- 
cgit v1.2.3