示例#1
0
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;
}
示例#2
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;
}
示例#3
0
文件: lang.cpp 项目: drodin/Crimson
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();
}
示例#4
0
int Transport::Save( MemBuffer &file ) const {
  Unit::Save( file );
  file.Write16( t_crystals );
  return 0;
}