void Minimap::Impl::getBuildingColours(const Tile& tile, int &c1, int &c2) { LandOverlayPtr overlay = tile.getOverlay(); if (overlay == NULL) return; BuildingType type = overlay->getType(); switch(type) { case B_HOUSE: { switch (overlay->getSize().getWidth()) { case 1: { c1 = colors->colour(MinimapColors::MAP_HOUSE, 0); c2 = colors->colour(MinimapColors::MAP_HOUSE, 1); break; } default: { c1 = colors->colour(MinimapColors::MAP_HOUSE, 2); c2 = colors->colour(MinimapColors::MAP_HOUSE, 0); } } break; } case B_RESERVOIR: { c1 = colors->colour(MinimapColors::MAP_AQUA, 1); c2 = colors->colour(MinimapColors::MAP_AQUA, 0); break; } default: { switch (overlay->getSize().getWidth()) { case 1: { c1 = colors->colour(MinimapColors::MAP_BUILDING, 0); c2 = colors->colour(MinimapColors::MAP_BUILDING, 1); break; } default: { c1 = colors->colour(MinimapColors::MAP_BUILDING, 0); c2 = colors->colour(MinimapColors::MAP_BUILDING, 2); } } } } c1 |= 0xff000000; c2 |= 0xff000000; }
void DisasterEvent::exec( Game& game ) { Tilemap& tmap = game.getCity()->getTilemap(); Tile& tile = tmap.at( _pos ); TilePos rPos = _pos; if( tile.getFlag( Tile::isDestructible ) ) { Size size( 1 ); LandOverlayPtr overlay = tile.getOverlay(); if( overlay.isValid() ) { overlay->deleteLater(); size = overlay->getSize(); rPos = overlay->getTile().getIJ(); } //bool deleteRoad = false; TilemapArea clearedTiles = tmap.getFilledRectangle( rPos, size ); foreach( Tile* tile, clearedTiles ) { BuildingType dstr2constr[] = { B_BURNING_RUINS, B_COLLAPSED_RUINS, B_PLAGUE_RUINS }; bool canCreate = ConstructionManager::getInstance().canCreate( dstr2constr[_type] ); if( canCreate ) { GameEventMgr::append( BuildEvent::create( tile->getIJ(), dstr2constr[_type] ) ); } }