int Building::Save( MemBuffer &file ) const { file.Write16( b_id ); file.Write16( b_pos.x ); file.Write16( b_pos.y ); file.Write16( b_flags ); file.Write16( b_crystals ); file.Write16( b_maxcrystals ); file.Write32( b_uprod ); file.Write8( b_cprod ); file.Write8( b_pid ); file.Write8( b_minweight ); file.Write8( b_maxweight ); file.Write8( b_name_id ); return 0; }
int MkSurface::SaveImageData( const string &from, MemBuffer &out, bool tp ) { int rc = LoadBMP( from.c_str() ); if ( rc == 0 ) { if ( s_surface->format->BitsPerPixel == 8 ) { SDL_Palette *palette = s_surface->format->palette; int i; out.Write16( Width() ); out.Write16( Height() ); out.Write8( s_surface->format->BitsPerPixel ); out.Write8( tp ? RAW_DATA_TRANSPARENT : 0 ); out.Write16( palette->ncolors ); // only for <= 256 colors (bpp = 8) if ( tp ) { int ck = GuessColorKey(); // transparent color first out.Write8( palette->colors[ck].r ); out.Write8( palette->colors[ck].g ); out.Write8( palette->colors[ck].b ); } for ( i = 0; i < palette->ncolors; ++i ) { out.Write8( palette->colors[i].r ); out.Write8( palette->colors[i].g ); out.Write8( palette->colors[i].b ); } // save surface lines to file for ( i = 0; i < Height(); ++i ) { Uint8 *pix = (Uint8 *)s_surface->pixels + i * s_surface->pitch; out.Write( pix, Width() ); } } else { cerr << "Error: Couldn't find palette in image " << from << endl << "Make sure it is 8 bit (<= 256 colors) only" << endl; rc = -1; } } else cerr << "Error: Couldn't load image " << from << endl; return rc; }
int Locale::Save( MemBuffer &file ) { file.Write16( lib.size() ); for ( map<const string, Language>::iterator iter = lib.begin(); iter != lib.end(); ++iter ) { if ( iter->second.WriteCatalog( file ) == -1 ) return -1; } return lib.size(); }
int Transport::Save( MemBuffer &file ) const { Unit::Save( file ); file.Write16( t_crystals ); return 0; }