diff options
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/world.cpp b/src/world.cpp index 2df0712..306933d 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -122,6 +122,10 @@ void World::deleteEntities(void){ delete npc.back(); npc.pop_back(); } + while(!merchant.empty()){ + delete merchant.back(); + merchant.pop_back(); + } while(!build.empty()){ delete build.back(); build.pop_back(); @@ -945,7 +949,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. @@ -953,8 +958,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; @@ -1070,6 +1075,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); @@ -1636,8 +1649,29 @@ World *loadWorldFromXMLNoSave(const char *path){ (char*)vil->Attribute("texture"), ptr); - tmp->village.back().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); + 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); + } } + tmp->village.back().build.push_back(tmp->build.back()); if(tmp->village.back().build.back()->loc.x < tmp->village.back().start.x){ tmp->village.back().start.x = tmp->village.back().build.back()->loc.x; } |