void CAutorun::ExecuteXBE(const CStdString &xbeFile) { #ifdef HAS_XBOX_HARDWARE int iRegion; if (g_guiSettings.GetBool("myprograms.gameautoregion")) { CXBE xbe; iRegion = xbe.ExtractGameRegion(xbeFile); if (iRegion < 1 || iRegion > 7) iRegion = 0; iRegion = xbe.FilterRegion(iRegion); } else iRegion = 0; #ifdef HAS_TRAINER CProgramDatabase database; database.Open(); DWORD dwTitleId = CUtil::GetXbeID(xbeFile); CStdString strTrainer = database.GetActiveTrainer(dwTitleId); if (strTrainer != "") { bool bContinue=false; if (CKaiClient::GetInstance()->IsEngineConnected()) { CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)m_gWindowManager.GetWindow(WINDOW_DIALOG_YES_NO); pDialog->SetHeading(714); pDialog->SetLine(0,"Use trainer or KAI?"); pDialog->SetLine(1, "Yes for trainer"); pDialog->SetLine(2, "No for KAI"); pDialog->DoModal(); if (pDialog->IsConfirmed()) { while (CKaiClient::GetInstance()->GetCurrentVector().size() > 1) CKaiClient::GetInstance()->ExitVector(); } else bContinue = true; } if (!bContinue) { CTrainer trainer; if (trainer.Load(strTrainer)) { database.GetTrainerOptions(strTrainer,dwTitleId,trainer.GetOptions(),trainer.GetNumberOfOptions()); CUtil::InstallTrainer(trainer); } } } database.Close(); #endif CUtil::RunXBE(xbeFile.c_str(), NULL,F_VIDEO(iRegion)); #endif }
int CGUIWindowPrograms::GetRegion(int iItem, bool bReload) { if (!g_guiSettings.GetBool("myprograms.gameautoregion")) return 0; int iRegion; if (bReload || m_vecItems->Get(iItem)->IsOnDVD()) { CXBE xbe; iRegion = xbe.ExtractGameRegion(m_vecItems->Get(iItem)->GetPath()); } else { m_database.Open(); iRegion = m_database.GetRegion(m_vecItems->Get(iItem)->GetPath()); m_database.Close(); } if (iRegion == -1) { if (g_guiSettings.GetBool("myprograms.gameautoregion")) { CXBE xbe; iRegion = xbe.ExtractGameRegion(m_vecItems->Get(iItem)->GetPath()); if (iRegion < 1 || iRegion > 7) iRegion = 0; m_database.SetRegion(m_vecItems->Get(iItem)->GetPath(),iRegion); } else iRegion = 0; } if (bReload) return CXBE::FilterRegion(iRegion,true); else return CXBE::FilterRegion(iRegion); }