aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.cpp')
-rw-r--r--src/world.cpp48
1 files changed, 41 insertions, 7 deletions
diff --git a/src/world.cpp b/src/world.cpp
index 4fa71d8..80ddc5a 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -148,9 +148,11 @@ deleteEntities( void )
delete mob.back();
mob.pop_back();
}
-
- // free npcs
- while ( !npc.empty() ) {
+
+ while(!merchant.empty()){
+ merchant.pop_back();
+ }
+ while(!npc.empty()){
delete npc.back();
npc.pop_back();
}
@@ -187,7 +189,6 @@ deleteEntities( void )
delete village.back();
village.pop_back();
}
-
}
/**
@@ -813,7 +814,6 @@ singleDetect( Entity *e )
void World::
detect( Player *p )
{
-
// handle the player
std::thread( &World::singleDetect, this, p).detach();
@@ -935,6 +935,14 @@ void World::addNPC(float x,float y){
entity.push_back(npc.back());
}
+void World::addMerchant(float x, float y){
+ merchant.push_back(new Merchant());
+ merchant.back()->spawn(x,y);
+
+ npc.push_back(merchant.back());
+ entity.push_back(npc.back());
+}
+
void World::addObject(/*ITEM_ID i*/std::string in,const char *p, float x, float y){
object.push_back(new Object(in,p));
object.back()->spawn(x,y);
@@ -1342,7 +1350,7 @@ World *loadWorldFromXMLNoSave(const char *path){
xml.LoadFile(currentXML.c_str());
wxml = xml.FirstChildElement("World");
-
+
if(wxml){
wxml = wxml->FirstChildElement();
vil = xml.FirstChildElement("World")->FirstChildElement("village");
@@ -1451,8 +1459,34 @@ World *loadWorldFromXMLNoSave(const char *path){
(char*)vil->Attribute("texture"),
ptr);
- vptr->build.push_back(tmp->build.back());
+ }else if(!strcmp(name, "stall")){
+ if(!strcmp(vil->Attribute("type"),"market")){
+ std::cout << "Market" << std::endl;
+ tmp->addStructure((BUILD_SUB)70,
+ vil->QueryFloatAttribute("x", &spawnx) != XML_NO_ERROR ?
+ randx : spawnx,
+ 100,
+ (char*)vil->Attribute("texture"),
+ ptr);
+ tmp->addMerchant(0,100);
+ if(!strcmp(name,"buy")){
+ std::cout << "Buying";
+ }else if(!strcmp(name,"sell")){
+ std::cout << "Selling";
+ }
+ strcpy(tmp->merchant.back()->name,"meme");
+
+ }else if(!strcmp(vil->Attribute("type"),"trader")){
+ std::cout << "Trader" << std::endl;
+ tmp->addStructure((BUILD_SUB)71,
+ vil->QueryFloatAttribute("x", &spawnx) != XML_NO_ERROR ?
+ randx : spawnx,
+ 100,
+ (char*)vil->Attribute("texture"),
+ ptr);
+ }
}
+ vptr->build.push_back(tmp->build.back());
if(vptr->build.back()->loc.x < vptr->start.x){
vptr->start.x = vptr->build.back()->loc.x;
}