コード例 #1
0
ファイル: noBuilding.cpp プロジェクト: kumzugloom/s25client
/**
 *
 *
 *  @author OLiver
 */
void noBuilding::Destroy_noBuilding()
{
    // Feuer erzeugen (bei Hütten und Bergwerken kleine Feuer, bei allen anderen große!)
    // Feuer setzen
    gwg->SetNO(new noFire(pos, (GetSize() == BQ_HUT || GetSize() == BQ_MINE) ? 0 : 1), pos);

    Destroy_noBaseBuilding();
}
コード例 #2
0
void noBuildingSite::Destroy_noBuildingSite()
{
    // Bauarbeiter/Planierer Bescheid sagen
    if(builder)
    {
        builder->LostWork();
        builder = NULL;
    }else if(planer)
    {
        planer->LostWork();
        planer = NULL;
    }else
        gwg->GetPlayer(player).JobNotWanted(this);

    RTTR_Assert(!builder);
    RTTR_Assert(!planer);

    // Bestellte Waren Bescheid sagen
    for(std::list<Ware*>::iterator it = ordered_boards.begin(); it != ordered_boards.end(); ++it)
        WareNotNeeded(*it);
    ordered_boards.clear();
    for(std::list<Ware*>::iterator it = ordered_stones.begin(); it != ordered_stones.end(); ++it)
        WareNotNeeded(*it);
    ordered_stones.clear();

    // und Feld wird leer
    gwg->SetNO(pos, NULL);

    // Baustelle wieder aus der Liste entfernen - dont forget about expedition harbor status
    bool expeditionharbor = IsHarborBuildingSiteFromSea();
    gwg->GetPlayer(player).RemoveBuildingSite(this);

    Destroy_noBaseBuilding();

    // Hafenbaustelle?
    if(expeditionharbor)
    {
        // Land neu berechnen nach zerstören weil da schon straßen etc entfernt werden
        gwg->RecalcTerritory(*this, true, false);
    }
    gwg->RecalcBQAroundPointBig(pos);
}