void nobStorehouse::Destroy_nobStorehouse() { // Der Wirtschaftsverwaltung Bescheid sagen gwg->GetPlayer(player)->RemoveWarehouse(this); Destroy_nobBaseWarehouse(); }
void nobHQ::Destroy_nobHQ() { Destroy_nobBaseWarehouse(); // Land drumherum neu berechnen (nur wenn es schon besetzt wurde!) // Nach dem BaseDestroy erst, da in diesem erst das Feuer gesetzt, die Straße gelöscht wird usw. gwg->RecalcTerritory(*this, true, false); // Wieder aus dem Militärquadrat rauswerfen gwg->GetMilitarySquares().Remove(this); }
void nobHarborBuilding::Destroy() { em->RemoveEvent(orderware_ev); players->getElement(player)->HarborDestroyed(this); // Der Wirtschaftsverwaltung Bescheid sagen gwg->GetPlayer(player)->RemoveWarehouse(this); gwg->GetPlayer(player)->RemoveHarbor(this); // Baumaterialien in der Inventur verbuchen if(expedition.active) { gwg->GetPlayer(player)->DecreaseInventoryWare(GD_BOARDS,expedition.boards); gwg->GetPlayer(player)->DecreaseInventoryWare(GD_STONES,expedition.stones); // Und Bauarbeiter (später) rausschicken if(expedition.builder) ++real_goods.people[JOB_BUILDER]; } // Waiting Wares löschen for(std::list<Ware*>::iterator it = wares_for_ships.begin();it!=wares_for_ships.end();++it) { (*it)->WareLost(player); delete (*it); } wares_for_ships.clear(); // Leute, die noch aufs Schiff warten, rausschicken for(std::list<FigureForShip>::iterator it = figures_for_ships.begin();it!=figures_for_ships.end();++it) { gwg->AddFigure(it->fig,x,y); it->fig->Abrogate(); it->fig->StartWandering(); it->fig->StartWalking(RANDOM.Rand(__FILE__,__LINE__,obj_id,6)); } figures_for_ships.clear(); for(std::list<SoldierForShip>::iterator it = soldiers_for_ships.begin();it!=soldiers_for_ships.end();++it) { gwg->AddFigure(it->attacker,x,y); it->attacker->CancelAtHomeMilitaryBuilding(); it->attacker->StartWandering(); it->attacker->StartWalking(RANDOM.Rand(__FILE__,__LINE__,obj_id,6)); } soldiers_for_ships.clear(); Destroy_nobBaseWarehouse(); // Land drumherum neu berechnen (nur wenn es schon besetzt wurde!) // Nach dem BaseDestroy erst, da in diesem erst das Feuer gesetzt, die Straße gelöscht wird usw. gwg->RecalcTerritory(this,HARBOR_ALONE_RADIUS,true, false); // Wieder aus dem Militärquadrat rauswerfen gwg->GetMilitarySquare(x,y).erase(this); }
void nobHarborBuilding::Destroy() { em->RemoveEvent(orderware_ev); // Der Wirtschaftsverwaltung Bescheid sagen GameClientPlayer& owner = gwg->GetPlayer(player); owner.RemoveHarbor(this); // Remove also the warehouse so lost wares won't consider this one! owner.RemoveWarehouse(this); owner.HarborDestroyed(this); // Baumaterialien in der Inventur verbuchen if(expedition.active) { owner.DecreaseInventoryWare(GD_BOARDS, expedition.boards); owner.DecreaseInventoryWare(GD_STONES, expedition.stones); // Und Bauarbeiter (später) rausschicken if(expedition.builder) inventory.Add(JOB_BUILDER); else owner.OneJobNotWanted(JOB_BUILDER, this); } //cancel order for scouts if (exploration_expedition.active) { inventory.real.Add(JOB_SCOUT, exploration_expedition.scouts); for (unsigned i = exploration_expedition.scouts; i < SCOUTS_EXPLORATION_EXPEDITION; i++) { owner.OneJobNotWanted(JOB_SCOUT, this); } } //cancel all jobs wanted for this building owner.JobNotWanted(this,true); // Waiting Wares löschen for(std::list<Ware*>::iterator it = wares_for_ships.begin(); it != wares_for_ships.end(); ++it) { (*it)->WareLost(player); (*it)->Destroy(); delete (*it); } wares_for_ships.clear(); // Leute, die noch aufs Schiff warten, rausschicken for(std::list<FigureForShip>::iterator it = figures_for_ships.begin(); it != figures_for_ships.end(); ++it) { noFigure* figure = it->fig; gwg->AddFigure(figure, pos); figure->Abrogate(); figure->StartWandering(); figure->StartWalking(RANDOM.Rand(__FILE__, __LINE__, GetObjId(), 6)); } figures_for_ships.clear(); for(std::list<SoldierForShip>::iterator it = soldiers_for_ships.begin(); it != soldiers_for_ships.end(); ++it) { nofAttacker* soldier = it->attacker; gwg->AddFigure(soldier, pos); soldier->CancelSeaAttack(); RTTR_Assert(!soldier->GetAttackedGoal()); RTTR_Assert(soldier->HasNoHome()); RTTR_Assert(soldier->HasNoGoal()); soldier->StartWandering(); soldier->StartWalking(RANDOM.Rand(__FILE__, __LINE__, GetObjId(), 6)); } soldiers_for_ships.clear(); Destroy_nobBaseWarehouse(); // Land drumherum neu berechnen (nur wenn es schon besetzt wurde!) // Nach dem BaseDestroy erst, da in diesem erst das Feuer gesetzt, die Straße gelöscht wird usw. gwg->RecalcTerritory(*this, true, false); // Wieder aus dem Militärquadrat rauswerfen gwg->GetMilitarySquares().Remove(this); }