void ScenarioMapLoader::Impl::decodeTerrain(Tile &oTile, CityPtr city )
{
  if (!oTile.isMasterTile() && oTile.getMasterTile()!=NULL)
    return;
  
  TerrainTile& terrain = oTile.getTerrain();

  LandOverlayPtr overlay; // This is the overlay object, if any

  if( terrain.isRoad() )   // road
  {
    overlay = ConstructionManager::getInstance().create( B_ROAD ).as<LandOverlay>();
  }
  else if (terrain.isBuilding())
  {
    StringHelper::debug( 0xff, "Building at ( %d, %d ) with ID: %x", oTile.getI(), oTile.getJ(), terrain.getOriginalImgId() );
  
    switch ( terrain.getOriginalImgId() )
    {
      case 0xb0e:
      case 0xb0f:
      case 0xb0b:
      case 0xb0c:
	      overlay = ConstructionManager::getInstance().create( B_NATIVE_HUT ).as<LandOverlay>();
        break;
      case 0xb10:
      case 0xb0d:
	      overlay =  ConstructionManager::getInstance().create( B_NATIVE_CENTER ).as<LandOverlay>();
        StringHelper::debug( 0xff, "creation of Native center at (%d,%d)", oTile.getI(), oTile.getJ() );
	      break;
      case 0xb11:
      case 0xb44:
       	overlay = ConstructionManager::getInstance().create( B_NATIVE_FIELD ).as<LandOverlay>();
	      break;
    }
  }

  //terrain.setOverlay( overlay );
  if( overlay != NULL )
  {
    overlay->build( oTile.getIJ() );
    city->getOverlayList().push_back(overlay);
  }
}
Пример #2
0
void GameLoaderC3Map::Impl::decodeTerrain(Tile &oTile, CityPtr city )
{
  if (!oTile.isMasterTile() && oTile.getMasterTile()!=NULL)
    return;
  
  TileOverlayPtr overlay; // This is the overlay object, if any

  if( oTile.getFlag( Tile::tlRoad ) )   // road
  {
    overlay = TileOverlayFactory::getInstance().create( B_ROAD ).as<TileOverlay>();
  }
  else if( oTile.getFlag( Tile::tlBuilding ) )
  {
    StringHelper::debug( 0xff, "Building at ( %d, %d ) with ID: %x", oTile.getI(), oTile.getJ(), oTile.getOriginalImgId() );
  
    switch ( oTile.getOriginalImgId() )
    {
      case 0xb0e:
      case 0xb0f:
      case 0xb0b:
      case 0xb0c:
        overlay = TileOverlayFactory::getInstance().create( B_NATIVE_HUT ).as<TileOverlay>();
        break;
      case 0xb10:
      case 0xb0d:
        overlay =  TileOverlayFactory::getInstance().create( B_NATIVE_CENTER ).as<TileOverlay>();
        StringHelper::debug( 0xff, "creation of Native center at (%d,%d)", oTile.getI(), oTile.getJ() );
	      break;
      case 0xb11:
      case 0xb44:
        overlay = TileOverlayFactory::getInstance().create( B_NATIVE_FIELD ).as<TileOverlay>();
	      break;
    }
  }

  //terrain.setOverlay( overlay );
  if( overlay != NULL )
  {
    overlay->build( city, oTile.getIJ() );
    city->getOverlayList().push_back(overlay);
  }
}