IPlayerProfile* CUIManager::GetCurrentProfile() { if (!gEnv->pGame || !gEnv->pGame->GetIGameFramework() || !gEnv->pGame->GetIGameFramework()->GetIPlayerProfileManager()) { assert(false); return NULL; } IPlayerProfileManager* pProfileManager = gEnv->pGame->GetIGameFramework()->GetIPlayerProfileManager(); return pProfileManager->GetCurrentProfile( pProfileManager->GetCurrentUser() ); }
void CFlashMenuObject::UpdateProfiles() { IPlayerProfileManager *pProfileMan = g_pGame->GetOptions()->GetProfileManager(); if(!pProfileMan) return; m_pPlayerProfileManager = pProfileMan; IPlayerProfileManager::EProfileOperationResult result; m_pPlayerProfileManager->SaveProfile(m_pPlayerProfileManager->GetCurrentUser(), result); if(m_apFlashMenuScreens[MENUSCREEN_FRONTENDSTART]) { m_apFlashMenuScreens[MENUSCREEN_FRONTENDSTART]->Invoke("Root.MainMenu.Profile.resetProfiles"); const char *userName = m_pPlayerProfileManager->GetCurrentUser(); for(int i = 0; i < m_pPlayerProfileManager->GetProfileCount(userName); ++i ) { IPlayerProfileManager::SProfileDescription profDesc; pProfileMan->GetProfileInfo(userName, i, profDesc); const IPlayerProfile *pProfile = m_pPlayerProfileManager->PreviewProfile(userName, profDesc.name); string buffer; if(pProfile && pProfile->GetAttribute("Singleplayer.LastSavedGame", buffer)) { int pos = buffer.rfind('/'); if(pos) buffer = buffer.substr(pos+1, buffer.length()); } SFlashVarValue args[3] = {profDesc.name, buffer.c_str(), GetMappedProfileName(profDesc.name) }; m_apFlashMenuScreens[MENUSCREEN_FRONTENDSTART]->Invoke("Root.MainMenu.Profile.addProfileToList", args, 3); } m_pPlayerProfileManager->PreviewProfile(userName, NULL); IPlayerProfile *pProfile = pProfileMan->GetCurrentProfile(userName); if(pProfile) m_apFlashMenuScreens[MENUSCREEN_FRONTENDSTART]->Invoke("setActiveProfile", GetMappedProfileName(pProfile->GetName())); } }
EContextEstablishTaskResult OnStep(SContextEstablishState& state) { IActionMapManager *pActionMapMan = CCryAction::GetCryAction()->GetIActionMapManager(); CRY_ASSERT(pActionMapMan); IActionMap* pDefaultActionMap = NULL; IActionMap* pDebugActionMap = NULL; IActionMap* pPlayerActionMap = NULL; IActionMap* pPlayerGamemodeActionMap = NULL; const char* disableGamemodeActionMapName = "player_mp"; const char* gamemodeActionMapName = "player_sp"; if(gEnv->bMultiplayer) { disableGamemodeActionMapName = "player_sp"; gamemodeActionMapName = "player_mp"; } if (true) { IPlayerProfileManager* pPPMgr = CCryAction::GetCryAction()->GetIPlayerProfileManager(); if (pPPMgr) { int userCount = pPPMgr->GetUserCount(); IPlayerProfile* pProfile = NULL; const char* userId = "UNKNOWN"; if (userCount == 0) { if (gEnv->pSystem->IsDevMode()) { #ifndef _RELEASE //In devmode and not release get the default user if no users are signed in e.g. autotesting, map on the command line pProfile = pPPMgr->GetDefaultProfile(); if (pProfile) { userId = pProfile->GetUserId(); } #endif // #ifndef _RELEASE } else { CryFatalError("[PlayerProfiles] CGameContext::StartGame: No users logged in"); return eCETR_Failed; } } if (userCount > 0) { IPlayerProfileManager::SUserInfo info; pPPMgr->GetUserInfo(0, info); pProfile = pPPMgr->GetCurrentProfile(info.userId); userId = info.userId; } if (pProfile) { pDefaultActionMap = pProfile->GetActionMap("default"); pDebugActionMap = pProfile->GetActionMap("debug"); pPlayerActionMap = pProfile->GetActionMap("player"); if (pDefaultActionMap == 0 && pPlayerActionMap == 0) { CryFatalError("[PlayerProfiles] CGameContext::StartGame: User '%s' has no actionmap 'default'!", userId); return eCETR_Failed; } } else { CryFatalError("[PlayerProfiles] CGameContext::StartGame: User '%s' has no active profile!", userId); return eCETR_Failed; } } else { CryFatalError("[PlayerProfiles] CGameContext::StartGame: No player profile manager!"); return eCETR_Failed; } } if (pDefaultActionMap == 0 ) { // use action map without any profile stuff pActionMapMan->EnableActionMap( "default", true ); pDefaultActionMap = pActionMapMan->GetActionMap("default"); CRY_ASSERT_MESSAGE(pDefaultActionMap, "'default' action map not found!"); } if (pDebugActionMap == 0 ) { // use action map without any profile stuff pActionMapMan->EnableActionMap( "debug", true ); pDebugActionMap = pActionMapMan->GetActionMap("debug"); } if (pPlayerActionMap == 0) { pActionMapMan->EnableActionMap( "player", true ); pPlayerActionMap = pActionMapMan->GetActionMap("player"); } if (!pDefaultActionMap) return eCETR_Failed; EntityId actorId = GetListener(); if (!actorId) return eCETR_Wait; if(pDefaultActionMap) { pDefaultActionMap->SetActionListener( actorId ); } if(pDebugActionMap) { pDebugActionMap->SetActionListener( actorId ); } if(pPlayerActionMap) { pPlayerActionMap->SetActionListener( actorId ); } pActionMapMan->EnableActionMap(disableGamemodeActionMapName, false); pActionMapMan->EnableActionMap(gamemodeActionMapName, true); pPlayerGamemodeActionMap = pActionMapMan->GetActionMap(gamemodeActionMapName); if(pPlayerGamemodeActionMap) { pPlayerGamemodeActionMap->SetActionListener(actorId); } // TODO: callback to game code for game specific action maps { IActionMap* crysis2_common = pActionMapMan->GetActionMap("crysis2_common"); if (crysis2_common != NULL) crysis2_common->SetActionListener( actorId ); IActionMap* crysis2_suitmenu_opened = pActionMapMan->GetActionMap("crysis2_suitmenu_opened"); if (crysis2_suitmenu_opened != NULL) crysis2_suitmenu_opened->SetActionListener( actorId ); IActionMap* crysis2_suitmenu_closed = pActionMapMan->GetActionMap("crysis2_suitmenu_closed"); if (crysis2_suitmenu_closed != NULL) crysis2_suitmenu_closed->SetActionListener( actorId ); IActionMap* player_cine = pActionMapMan->GetActionMap("player_cine"); if (player_cine != NULL) player_cine->SetActionListener( actorId ); IActionMap* booss_duell = pActionMapMan->GetActionMap("boss_duell"); if (booss_duell != NULL) booss_duell->SetActionListener( actorId ); } CCryAction::GetCryAction()->GetIActionMapManager()->Enable(true); return eCETR_Ok; }