本文整理汇总了C++中PlayerInfo::Save方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerInfo::Save方法的具体用法?C++ PlayerInfo::Save怎么用?C++ PlayerInfo::Save使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerInfo
的用法示例。
在下文中一共展示了PlayerInfo::Save方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: player
LoadPanel::LoadPanel(PlayerInfo &player, UI &gamePanels)
: player(player), gamePanels(gamePanels), selectedPilot(player.Identifier())
{
// If you have a player loaded, and the player is on a planet, makes sure
// the player is saved so that any snapshot you create will be of the
// player's current state, rather than one planet ago.
if(player.GetPlanet() && !player.IsDead())
player.Save();
UpdateLists();
}
示例2: player
LoadPanel::LoadPanel(PlayerInfo &player, UI &gamePanels)
: player(player), gamePanels(gamePanels), selectedPilot(player.Identifier())
{
// If you have a player loaded, and the player is on a planet, makes sure
// the player is saved so that any snapshot you create will be of the
// player's current state, rather than one planet ago. Only do this if the
// game is paused, i.e. the "main panel" is not on top:
if(player.GetPlanet() && !player.IsDead() && !gamePanels.IsTop(&*gamePanels.Root()))
player.Save();
UpdateLists();
}
示例3: main
//.........这里部分代码省略.........
{
UI &activeUI = (menuPanels.IsEmpty() ? gamePanels : menuPanels);
// The caps lock key slows the game down (to make it easier to
// see and debug things that are happening quickly).
if(debugMode && (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)
&& event.key.keysym.sym == SDLK_CAPSLOCK)
{
timer.SetFrameRate((event.key.keysym.mod & KMOD_CAPS) ? 10 : 60);
}
else if(debugMode && event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_BACKQUOTE)
{
isPaused = !isPaused;
}
else if(event.type == SDL_KEYDOWN && menuPanels.IsEmpty()
&& Command(event.key.keysym.sym).Has(Command::MENU)
&& !gamePanels.IsEmpty() && gamePanels.Top()->IsInterruptible())
{
menuPanels.Push(shared_ptr<Panel>(
new MenuPanel(player, gamePanels)));
}
else if(event.type == SDL_QUIT)
{
menuPanels.Quit();
}
else if(event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
{
int width = event.window.data1 & ~1;
int height = event.window.data2 & ~1;
if(width != Screen::RawWidth() || height != Screen::RawHeight())
{
Screen::SetRaw(width, height);
if((event.window.data1 | event.window.data2) & 1)
SDL_SetWindowSize(window, Screen::RawWidth(), Screen::RawHeight());
SDL_GL_GetDrawableSize(window, &width, &height);
glViewport(0, 0, width, height);
}
}
else if(event.type == SDL_KEYDOWN
&& (Command(event.key.keysym.sym).Has(Command::FULLSCREEN)
|| (event.key.keysym.sym == SDLK_RETURN && event.key.keysym.mod & KMOD_ALT)))
{
if(restoreWidth)
{
SDL_SetWindowFullscreen(window, 0);
Screen::SetRaw(restoreWidth, restoreHeight);
SDL_SetWindowSize(window, Screen::RawWidth(), Screen::RawHeight());
restoreWidth = 0;
restoreHeight = 0;
}
else
{
restoreWidth = Screen::RawWidth();
restoreHeight = Screen::RawHeight();
Screen::SetRaw(maxWidth, maxHeight);
SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
}
int width, height;
SDL_GL_GetDrawableSize(window, &width, &height);
glViewport(0, 0, width, height);
}
else if(activeUI.Handle(event))
{
// No need to do anything more!
}
}
Font::ShowUnderlines(SDL_GetModState() & KMOD_ALT);
// Tell all the panels to step forward, then draw them.
((!isPaused && menuPanels.IsEmpty()) ? gamePanels : menuPanels).StepAll();
Audio::Step();
// That may have cleared out the menu, in which case we should draw
// the game panels instead:
(menuPanels.IsEmpty() ? gamePanels : menuPanels).DrawAll();
SDL_GL_SwapWindow(window);
timer.Wait();
}
// If you quit while landed on a planet, save the game.
if(player.GetPlanet())
player.Save();
// The Preferences class reads the screen dimensions, so update them if
// the window is full screen:
bool isFullscreen = (restoreWidth != 0);
Preferences::Set("fullscreen", isFullscreen);
if(isFullscreen)
Screen::SetRaw(restoreWidth, restoreHeight);
Preferences::Save();
Cleanup(window, context);
}
catch(const runtime_error &error)
{
DoError(error.what());
}
return 0;
}
示例4: OnSuccess
void ReqLogin::OnSuccess()
{
// Check for session ID or login failure
TheVe1ReqManager::Instance()->SetLoggedIn(false);
// Format of XML:
// <session/> <- Child(1)
PXml p = m_xml.getChildNode(1);
if (SafeStrCmp(p.getName(), "session"))
{
#ifdef XML_DEBUG
std::cout << "found session element\n";
#endif
std::string sessionId = p.getText();
std::string playername;
int objId = -1; // object ID for local player
// Get player name and object ID for local player
p = m_xml.getChildNode(2);
if (SafeStrCmp(p.getName(), "playername"))
{
playername = p.getText();
std::cout << "**Got player name! \"" << playername << "\"\n";
}
else
{
// Got session ID but no player name, WTF ?
std::cout << "Got session ID but no player name, WTF??\n";
}
p = m_xml.getChildNode(3);
if (SafeStrCmp(p.getName(), "objid"))
{
objId = ToInt(p.getText());
std::cout << "**Got local player object ID: " << objId << "\n";
}
else
{
// Got session ID but we don't know the object ID for the local player. WTF ?
std::cout << "Got session ID but we don't know the object ID for the local player. WTF?\n";
}
p = m_xml.getChildNode(4);
if (SafeStrCmp(p.getName(), "loc"))
{
int loc = ToInt(p.getText());
// TODO Use ResetLocalPlayer() to set start pos/loc ?????
TheGSStartGame::Instance()->SetStartLoc(loc);
std::cout << "Got start location: " << loc << "\n";
}
else
{
// Reset here to well known start location.
ResetLocalPlayer();
std::cout << "No start location.\n";
}
std::cout << "Got session ID! " << sessionId << "\n";
TheVe1ReqManager::Instance()->SetSessionId(sessionId);
TheVe1ReqManager::Instance()->SetLoggedIn(true);
// Check if we are set up
std::string playerInfoFilename = playername + ".txt";
// TODO Sanitise the filename
ThePlayerInfoManager::Instance()->SetCurrentPlayer(playerInfoFilename);
ThePlayerInfoManager::Instance()->Save();
PlayerInfo* pi = ThePlayerInfoManager::Instance()->GetPI();
pi->PISetInt(PI_KEY("player obj id"), objId);
pi->PISetString(PI_KEY("playername"), playername);
pi->PISetString(PI_KEY("email"), m_email);
pi->Save();
// Set options for this player
TheGSOptions::Instance()->LoadSettingsFromPI(pi);
// TODO Do we need to set this via ObjectUpdater too, so it gets sent to all clients ?
// Set ID of this player object as the local player ID
SetLocalPlayerId(objId);
Assert(pi);
// Play happy logged in sound
TheSoundManager::Instance()->PlayWav("Sound/button112.wav");
if (GetGameMode() == AMJU_MODE_EDIT)
{
TheGame::Instance()->SetCurrentState(TheGSStartGame::Instance());
}
else
{
// Handle research info: session, mode, etc.
ChooseMode();
}
//.........这里部分代码省略.........