void __fastcall TfrmText::ebSaveClick(TObject *Sender) { xr_string fn; if (EFS.GetSaveName(_import_,fn,NULL,2)){ CMemoryWriter F; F.w_stringZ (mmText->Text.c_str()); if (!F.save_to(fn.c_str())) Log ("!Can't save text file:",fn.c_str()); } }
void CLevel::net_Save (LPCSTR name) // Game Save { if (0==Server) { Msg("KERNEL::Can't save game on pure client"); return; } // 1. Create stream CMemoryWriter fs; // 2. Description fs.open_chunk (fsSLS_Description); fs.w_stringZ (net_SessionName()); fs.close_chunk (); // 3. Server state fs.open_chunk (fsSLS_ServerState); Server->SLS_Save (fs); fs.close_chunk (); // Save it to file fs.save_to (name); }
IC void write_file_header (LPCSTR file_name, const u32 &crc, const u32 &ptr, const u32 &size_real, const u32 &size_compressed) { #ifndef PROTECTED_BUILD fs_desc.w_stringZ (file_name); fs_desc.w_u32 (crc); // crc fs_desc.w_u32 (ptr); fs_desc.w_u32 (size_real); fs_desc.w_u32 (size_compressed); #else // PROTECTED_BUILD u32 file_name_size = (xr_strlen(file_name) + 0)*sizeof(char); u32 buffer_size = file_name_size + 4*sizeof(u32); VERIFY (buffer_size <= 65535); u32 full_buffer_size = buffer_size + sizeof(u16); u8 *buffer = (u8*)_alloca(full_buffer_size); u8 *buffer_start = buffer; *(u16*)buffer = (u16)buffer_size; buffer += sizeof(u16); *(u32*)buffer = size_real; buffer += sizeof(u32); *(u32*)buffer = size_compressed; buffer += sizeof(u32); *(u32*)buffer = crc; buffer += sizeof(u32); Memory.mem_copy (buffer,file_name,file_name_size); buffer += file_name_size; *(u32*)buffer = ptr; // trivial_encryptor::encode (buffer_start,full_buffer_size,buffer_start); fs_desc.w (buffer_start,full_buffer_size); #endif // PROTECTED_BUILD }