AssetError AssetManager::ReadAssetLibV20(MultiFileLib * mfl, Stream *ci_s, int lib_version) { // number of clib parts mfl->num_data_files = ci_s->ReadInt32(); // filenames for all clib parts for (int i = 0; i < mfl->num_data_files; i++) { fgetstring_limit(mfl->data_filenames[i], ci_s, 50); } // number of files in clib mfl->num_files = ci_s->ReadInt32(); if (mfl->num_files > MAX_FILES) { return kAssetErrLibAssetCount; // too many files in clib, return error code } // read information on clib contents for (int i = 0; i < mfl->num_files; i++) { short nameLength; nameLength = ci_s->ReadInt16(); nameLength /= 5; ci_s->Read(mfl->filenames[i], nameLength); // decrypt filenames DecryptText(mfl->filenames[i], strlen(mfl->filenames[i])); } ci_s->ReadArrayOfInt32(&mfl->offset[0], mfl->num_files); ci_s->ReadArrayOfInt32(&mfl->length[0], mfl->num_files); ci_s->ReadArrayOfInt8((int8_t*)&mfl->file_datafile[0], mfl->num_files); return kAssetNoError; }
AssetError AssetManager::ReadAssetLibV10(MultiFileLib * mfl, Stream *ci_s, int lib_version) { // number of clib parts mfl->num_data_files = ci_s->ReadInt32(); // filenames for all clib parts; filename array is only 20 chars long in this format version for (int i = 0; i < mfl->num_data_files; i++) ci_s->ReadArray(&mfl->data_filenames[i][0], 20, 1); // number of files in clib mfl->num_files = ci_s->ReadInt32(); if (mfl->num_files > MAX_FILES) { return kAssetErrLibAssetCount; // too many files in clib, return error code } // read information on clib contents // filename array is only 25 chars long in this format version for (int i = 0; i < mfl->num_files; i++) ci_s->ReadArray(&mfl->filenames[i][0], 25, 1); ci_s->ReadArrayOfInt32(&mfl->offset[0], mfl->num_files); ci_s->ReadArrayOfInt32(&mfl->length[0], mfl->num_files); ci_s->ReadArrayOfInt8((int8_t*)&mfl->file_datafile[0], mfl->num_files); if (lib_version >= 11) { // decrypt filenames for (int i = 0; i < mfl->num_files; i++) { DecryptText(mfl->filenames[i], strlen(mfl->filenames[i])); } } return kAssetNoError; }
MFLUtil::MFLError MFLUtil::ReadV10(AssetLibInfo &lib, Stream *in, int lib_version) { // number of clib parts size_t mf_count = in->ReadInt32(); lib.LibFileNames.resize(mf_count); // filenames for all clib parts; filenames are only 20 chars long in this format version for (size_t i = 0; i < mf_count; ++i) { lib.LibFileNames[i].ReadCount(in, V10LibFileLen); } // number of files in clib size_t asset_count = in->ReadInt32(); // read information on clib contents lib.AssetInfos.resize(asset_count); // filename array is only 25 chars long in this format version char fn_buf[V10AssetFileLen]; for (size_t i = 0; i < asset_count; ++i) { in->Read(fn_buf, V10AssetFileLen); if (lib_version >= 11) DecryptText(fn_buf); lib.AssetInfos[i].FileName = fn_buf; } for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].Offset = in->ReadInt32(); for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].Size = in->ReadInt32(); for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].LibUid = in->ReadInt8(); return kMFLNoError; }
MFLUtil::MFLError MFLUtil::ReadV20(AssetLibInfo &lib, Stream *in) { // number of clib parts size_t mf_count = in->ReadInt32(); lib.LibFileNames.resize(mf_count); // filenames for all clib parts for (size_t i = 0; i < mf_count; ++i) { lib.LibFileNames[i].Read(in, MaxDataFileLen); } // number of files in clib size_t asset_count = in->ReadInt32(); // read information on clib contents lib.AssetInfos.resize(asset_count); char fn_buf[MaxAssetFileLen]; for (size_t i = 0; i < asset_count; ++i) { short len = in->ReadInt16(); len /= 5; // CHECKME: why 5? in->Read(fn_buf, len); // decrypt filenames DecryptText(fn_buf); lib.AssetInfos[i].FileName = fn_buf; } for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].Offset = in->ReadInt32(); for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].Size = in->ReadInt32(); for (size_t i = 0; i < asset_count; ++i) lib.AssetInfos[i].LibUid = in->ReadInt8(); return kMFLNoError; }
//--------------------------------------------------------------------------- void __fastcall TFrmLogin::CarregaInfoUser() { TZQuery *QyConsulta; String SenhaEmail; Variant Value; try { QyConsulta = new TZQuery(Application); QyConsulta->Connection = AppConnection; QyConsulta->SQL->Add("SELECT nome, email, ies_administrador FROM tbl_usuario"); QyConsulta->SQL->Add("WHERE usuario = '" + AppUser->Usuario + "';"); QyConsulta->Open(); AppParEmail->SMTPNomeExibicao = QyConsulta->FieldByName("nome")->AsString; AppParEmail->SMTPUsername = QyConsulta->FieldByName("email")->AsString; AppParEmail->SMTPConta = AppParEmail->SMTPUsername; Value = ValidacoesDB::GetParamValue(AppConnection,"CALL get_parametro_texto('epw_"+AppUser->Usuario+"');"); SenhaEmail = VarToStr(Value); if (SenhaEmail.Length() > 0) { SenhaEmail = DecryptText(SenhaEmail.c_str()); AppParEmail->SMTPPassword = SenhaEmail; } else { AppParEmail->SMTPPassword = ""; } if (AppUser->Usuario == "administrador") { AppUser->IsAdm = true; } else { AppUser->IsAdm = (QyConsulta->FieldByName("ies_administrador")->AsString == "S"); } } __finally{delete(QyConsulta);} }