aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.cpp')
-rw-r--r--src/world.cpp50
1 files changed, 44 insertions, 6 deletions
diff --git a/src/world.cpp b/src/world.cpp
index eb9f12e..9e891fb 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -118,6 +118,9 @@ void World::deleteEntities(void){
delete mob.back();
mob.pop_back();
}
+ while(!merchant.empty()){
+ merchant.pop_back();
+ }
while(!npc.empty()){
delete npc.back();
npc.pop_back();
@@ -144,7 +147,6 @@ void World::deleteEntities(void){
delete village.back();
village.pop_back();
}
-
}
World::~World(void){
@@ -950,7 +952,8 @@ void World::detect(Player *p){
*/
//auto pl = std::async(&World::singleDetect,this,p);
- std::thread(&World::singleDetect,this, p).detach();
+ //std::thread(&World::singleDetect,this, p).detach();
+ singleDetect(p);
/*
* Handle all remaining entities in this world.
@@ -958,8 +961,8 @@ void World::detect(Player *p){
//LOOOOP:
for(auto &e : entity)
- std::thread(&World::singleDetect,this,e).detach();
- //hey->singleDetect(e);
+ //std::thread(&World::singleDetect,this,e).detach();
+ singleDetect(e);
for(auto &part : particles){
int l;
unsigned int i;
@@ -1075,6 +1078,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);
@@ -1537,14 +1548,15 @@ World *loadWorldFromXMLNoSave(const char *path){
xml.LoadFile(currentXML);
wxml = xml.FirstChildElement("World");
- vil = xml.FirstChildElement("World")->FirstChildElement("village");
if(wxml){
wxml = wxml->FirstChildElement();
+ vil = xml.FirstChildElement("World")->FirstChildElement("village");
Indoor = false;
tmp = new World();
}else if((wxml = xml.FirstChildElement("IndoorWorld"))){
wxml = wxml->FirstChildElement();
+ vil = NULL;
Indoor = true;
tmp = new IndoorWorld();
}
@@ -1644,8 +1656,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;
}