コード例 #1
0
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;
}
コード例 #2
0
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] ) );
      }
    }