本文整理汇总了C++中PlayerInfo::LastName方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerInfo::LastName方法的具体用法?C++ PlayerInfo::LastName怎么用?C++ PlayerInfo::LastName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerInfo
的用法示例。
在下文中一共展示了PlayerInfo::LastName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BlockedMessage
// Get a string to show if this mission is "blocked" from being offered
// because it requires you to have more passenger or cargo space free. After
// calling this function, any future calls to it will return an empty string
// so that you do not display the same message multiple times.
string Mission::BlockedMessage(const PlayerInfo &player)
{
if(blocked.empty())
return "";
int extraCrew = 0;
if(player.Flagship())
extraCrew = player.Flagship()->Crew() - player.Flagship()->RequiredCrew();
int cargoNeeded = cargoSize - (player.Cargo().Free() + player.Cargo().CommoditiesSize());
int bunksNeeded = passengers - (player.Cargo().Bunks() + extraCrew);
if(cargoNeeded < 0 && bunksNeeded < 0)
return "";
map<string, string> subs;
subs["<first>"] = player.FirstName();
subs["<last>"] = player.LastName();
if(player.Flagship())
subs["<ship>"] = player.Flagship()->Name();
ostringstream out;
if(bunksNeeded > 0)
out << (bunksNeeded == 1 ? "another bunk" : to_string(bunksNeeded) + " more bunks");
if(bunksNeeded > 0 && cargoNeeded > 0)
out << " and ";
if(cargoNeeded > 0)
out << (cargoNeeded == 1 ? "another ton" : to_string(cargoNeeded) + " more tons") << " of cargo space";
subs["<capacity>"] = out.str();
string message = Format::Replace(blocked, subs);
blocked.clear();
return message;
}
示例2: player
ConversationPanel::ConversationPanel(PlayerInfo &player, const Conversation &conversation, const System *system)
: player(player), conversation(conversation), scroll(0), system(system)
{
subs["<first>"] = player.FirstName();
subs["<last>"] = player.LastName();
if(player.Flagship())
subs["<ship>"] = player.Flagship()->Name();
Goto(0);
}
示例3: if
// Constructor.
ConversationPanel::ConversationPanel(PlayerInfo &player, const Conversation &conversation, const System *system, const Ship *ship)
: player(player), conversation(conversation), scroll(0.), system(system)
{
// These substitutions need to be applied on the fly as each paragraph of
// text is prepared for display.
subs["<first>"] = player.FirstName();
subs["<last>"] = player.LastName();
if(ship)
subs["<ship>"] = ship->Name();
else if(player.Flagship())
subs["<ship>"] = player.Flagship()->Name();
// Begin at the start of the conversation.
Goto(0);
}
示例4: Do
void MissionAction::Do(PlayerInfo &player, UI *ui, const System *destination) const
{
bool isOffer = (trigger == "offer");
if(!conversation.IsEmpty())
{
ConversationPanel *panel = new ConversationPanel(player, conversation, destination);
if(isOffer)
panel->SetCallback(&player, &PlayerInfo::MissionCallback);
ui->Push(panel);
}
else if(!dialogText.empty())
{
map<string, string> subs;
subs["<first>"] = player.FirstName();
subs["<last>"] = player.LastName();
if(player.Flagship())
subs["<ship>"] = player.Flagship()->Name();
string text = Format::Replace(dialogText, subs);
if(isOffer)
ui->Push(new Dialog(text, player, destination));
else
ui->Push(new Dialog(text));
}
else if(isOffer && ui)
player.MissionCallback(Conversation::ACCEPT);
Ship *flagship = player.Flagship();
for(const auto &it : gifts)
{
int count = it.second;
string name = it.first->Name();
if(!count || name.empty())
continue;
string message;
if(abs(count) == 1)
{
char c = tolower(name.front());
bool isVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
message = (isVowel ? "An " : "A ") + name + " was ";
}
else
message = to_string(abs(count)) + " " + name + "s were ";
if(count > 0)
message += "added to your ";
else
message += "removed from your ";
bool didCargo = false;
bool didShip = false;
int cargoCount = player.Cargo().Get(it.first);
if(count < 0 && cargoCount)
{
int moved = min(cargoCount, -count);
count += moved;
player.Cargo().Transfer(it.first, moved);
didCargo = true;
}
while(flagship && count)
{
int moved = (count > 0) ? 1 : -1;
if(flagship->Attributes().CanAdd(*it.first, moved))
{
flagship->AddOutfit(it.first, moved);
didShip = true;
}
else
break;
count -= moved;
}
if(count > 0)
{
player.Cargo().Transfer(it.first, -count);
didCargo = true;
if(count > 0)
{
string special = "The " + name + (count == 1 ? " was" : "s were");
special += " put in your cargo hold because there is not enough space to install ";
special += (count == 1) ? "it" : "them";
special += " in your ship.";
ui->Push(new Dialog(special));
}
}
if(didCargo && didShip)
message += "cargo hold and your flagship.";
else if(didCargo)
message += "cargo hold.";
else
message += "flagship.";
Messages::Add(message);
}
if(payment)
player.Accounts().AddCredits(payment);
for(const auto &it : events)
player.AddEvent(*GameData::Events().Get(it.first), player.GetDate() + it.second);
//.........这里部分代码省略.........
示例5: Do
void MissionAction::Do(PlayerInfo &player, UI *ui, const System *destination) const
{
bool isOffer = (trigger == "offer");
if(!conversation.IsEmpty() && ui)
{
ConversationPanel *panel = new ConversationPanel(player, conversation, destination);
if(isOffer)
panel->SetCallback(&player, &PlayerInfo::MissionCallback);
ui->Push(panel);
}
else if(!dialogText.empty() && ui)
{
map<string, string> subs;
subs["<first>"] = player.FirstName();
subs["<last>"] = player.LastName();
if(player.Flagship())
subs["<ship>"] = player.Flagship()->Name();
string text = Format::Replace(dialogText, subs);
if(isOffer)
ui->Push(new Dialog(text, player, destination));
else
ui->Push(new Dialog(text));
}
else if(isOffer && ui)
player.MissionCallback(Conversation::ACCEPT);
// If multiple outfits are being transferred, first remove them before
// adding any new ones.
for(const auto &it : gifts)
if(it.second < 0)
DoGift(player, it.first, it.second, ui);
for(const auto &it : gifts)
if(it.second > 0)
DoGift(player, it.first, it.second, ui);
if(payment)
player.Accounts().AddCredits(payment);
for(const auto &it : events)
player.AddEvent(*GameData::Events().Get(it.first), player.GetDate() + it.second);
if(!fail.empty())
{
// Failing missions invalidates iterators into the player's mission list,
// but does not immediately delete those missions. So, the safe way to
// iterate over all missions is to make a copy of the list before we
// begin to remove items from it.
vector<const Mission *> failedMissions;
for(const Mission &mission : player.Missions())
if(fail.count(mission.Identifier()))
failedMissions.push_back(&mission);
for(const Mission *mission : failedMissions)
player.RemoveMission(Mission::FAIL, *mission, ui);
}
// Check if applying the conditions changes the player's reputations.
player.SetReputationConditions();
conditions.Apply(player.Conditions());
player.CheckReputationConditions();
}