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 }
bool CGUIWindowPrograms::OnPlayMedia(int iItem) { if ( iItem < 0 || iItem >= (int)m_vecItems->Size() ) return false; CFileItemPtr pItem = m_vecItems->Get(iItem); if (pItem->IsDVD()) return MEDIA_DETECT::CAutorun::PlayDisc(); if (pItem->m_bIsFolder) return false; // launch xbe... char szPath[1024]; char szParameters[1024]; m_database.IncTimesPlayed(pItem->GetPath()); int iRegion = m_iRegionSet?m_iRegionSet:GetRegion(iItem); DWORD dwTitleId = 0; if (!pItem->IsOnDVD()) dwTitleId = m_database.GetTitleId(pItem->GetPath()); if (!dwTitleId) dwTitleId = CUtil::GetXbeID(pItem->GetPath()); CStdString strTrainer = m_database.GetActiveTrainer(dwTitleId); if (strTrainer != "") { CTrainer trainer; if (trainer.Load(strTrainer)) { m_database.GetTrainerOptions(strTrainer,dwTitleId,trainer.GetOptions(),trainer.GetNumberOfOptions()); CUtil::InstallTrainer(trainer); } } m_database.Close(); memset(szParameters, 0, sizeof(szParameters)); strcpy(szPath, pItem->GetPath().c_str()); if (pItem->IsShortCut()) { CUtil::RunShortcut(pItem->GetPath().c_str()); return false; } if (strlen(szParameters)) CUtil::RunXBE(szPath, szParameters,F_VIDEO(iRegion)); else CUtil::RunXBE(szPath,NULL,F_VIDEO(iRegion)); return true; }