本文整理汇总了C++中Message::AddItem方法的典型用法代码示例。如果您正苦于以下问题:C++ Message::AddItem方法的具体用法?C++ Message::AddItem怎么用?C++ Message::AddItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Message
的用法示例。
在下文中一共展示了Message::AddItem方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SendNormalMessages
void Bombing::SendNormalMessages()
{
// Check if there was a bomb
if(mNormalBombingPlayers.size() == 0)
return;
// First to Planet Owner
Message * mess = mTargetPlanet->AddMessageOwner("PlanetBombed");
mess->AddItem("Target", this);
mess->AddLong("Population lost", mPopulationLoss);
mess->AddFloat("Defense effectiveness", mNormalPercentageStopped);
mess->AddLong("Factories lost", mFactoriesLoss);
mess->AddLong("Mines lost", mMinesLoss);
mess->AddLong("Defenses lost", mDefensesLoss);
// Other Players
for (deque<Player*>::iterator i = mNormalBombingPlayers.begin(); i != mNormalBombingPlayers.end(); ++i)
{
Message * mess = (*i)->AddMessage("FleetBombed");
mess->AddItem("Target", this);
mess->AddLong("Population lost", mPopulationLoss);
mess->AddFloat("Defense effectiveness", mNormalPercentageStopped);
mess->AddLong("Installations lost", mFactoriesLoss + mMinesLoss + mDefensesLoss);
}
}
示例2: SendTerraMessages
void Bombing::SendTerraMessages()
{
// Check if there was a bomb
if(mTerraBombingPlayers.size() == 0)
return;
// First to Planet Owner
Message * mess = mTargetPlanet->AddMessageOwner("PlanetTerraBombed");
mess->AddItem("Target", this);
///@todo add needed data
// Other Players
for (deque<Player*>::iterator i = mTerraBombingPlayers.begin(); i != mTerraBombingPlayers.end(); ++i)
{
Message * mess = (*i)->AddMessage("FleetTerraBombed");
mess->AddItem("Target", this);
///@todo add needed data
}
}
示例3: ParseNode
bool SpaceObject::ParseNode(const TiXmlNode * node)
{
unsigned long num = GetLong(node->FirstChild("Owner"));
if (num < 0 || num > mGame->NumberPlayers()) {
Message * mess = mGame->AddMessage("Error: Invalid player number");
mess->AddLong("", num);
mess->AddItem("Owener of", this);
return false;
}
return ParseNode(node, mGame->NCGetPlayer(num));
}
示例4: ChaseeGone
void TempFleet::ChaseeGone(SpaceObject * chasee)
{
Planet * planet = chasee->InOrbit();
Message * mess = NCGetOwner()->AddMessage("Chasee has vanished", chasee);
if (planet == NULL)
mess->AddItem("Last location", new Location(*chasee), true);
else
mess->AddItem("Last location", planet);
Fleet * f = dynamic_cast<Fleet *>(GetRealCH());
if (f != NULL) {
deque<WayOrder *> const & ords = f->GetOrders();
int i;
for (i = 0; i < ords.size(); ++i) {
if (ords[i]->GetLocation() == chasee) {
if (planet == NULL)
ords[i]->SetLocation(new Location(*chasee), true);
else
ords[i]->SetLocation(planet);
}
}
}
}
示例5: ProcessUnload
void CargoHolder::ProcessUnload(CargoHolder * dest, CargoType ct, TransferType tt, long value) // value usage depends on TransferType
{
assert(dest->IsWith(*this));
assert(dest != this);
if (value < 0) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is negative", this);
mess->AddLong("Amount transferred", value);
return;
}
if (value > Rules::GetConstant("MaxTransfer")) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is over max", this);
mess->AddLong("Amount transferred", value);
return;
}
long destAmt = dest->GetContain(ct);
if (GetOwner() != dest->GetOwner() && (ct == POPULATION || !dest->CanLoadBy(GetOwner())))
destAmt = 0;
long amount = 0; // actual amount moved;
switch (tt) {
case TRANSFER_LOADALL:
// processing unloads, skip loads.
break;
case TRANSFER_DROPNLOAD:
case TRANSFER_UNLOADALL:
amount = TransferAmount(ct, this, dest, GetContain(ct));
break;
case TRANSFER_LOADAMT:
// processing unloads, skip loads.
break;
case TRANSFER_UNLOADAMT:
amount = TransferAmount(ct, this, dest, value);
break;
case TRANSFER_FILLPER:
case TRANSFER_WAITPER: // affects movement too
// processing unloads, skip loads.
break;
case TRANSFER_LOADDUNN:
// processing unloads, skip loads.
break;
case TRANSFER_SETTOPER:
if (value > 100) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer percent over 100%", this);
mess->AddLong("Amount transferred", value);
return;
}
value = GetCargoCapacity() * value / 100;
// drop to a regualr transfer amount
case TRANSFER_AMOUNTTO:
if (GetContain(ct) > value)
amount = TransferAmount(ct, this, dest, GetContain(ct) - value);
break;
case TRANSFER_DESTTO:
// Allow set dest to for pop to do a maximal invade, followed by a setto load
if (ct == POPULATION && GetOwner() != dest->GetOwner())
amount = TransferAmount(ct, this, dest, GetContain(ct));
else if (destAmt < value)
amount = TransferAmount(ct, this, dest, value - destAmt);
break;
default:
Message * mess = NCGetOwner()->AddMessage("Error: Invalid transfer order", this);
mess->AddLong("Transfer code", tt);
return;
}
if (amount > 0 && ct == POPULATION && GetOwner() != dest->GetOwner()) {
// try to drop pop on an uninhabited world
if (dest->GetOwner() == NULL) {
Message * mess;
mess = NCGetOwner()->AddMessage("Warning: Pop drop on unowned world", this);
return;
}
// Dropping pop on a world with a base
Planet * destP = dynamic_cast<Planet *>(dest);
if (destP && destP->GetBaseNumber() >= 0) {
Message * mess;
mess = NCGetOwner()->AddMessage("Warning: Pop drop with base", this);
mess->AddItem("", destP);
return;
}
// unloading pop to some one elses fleet
Fleet * destF = dynamic_cast<Fleet *>(dest);
if (destF) {
Message * mess;
mess = NCGetOwner()->AddMessage("Warning: Transfer pop to unowned fleet", this);
mess->AddItem("", destF);
return;
//.........这里部分代码省略.........
示例6: TransferCargo
void CargoHolder::TransferCargo(CargoHolder * dest, CargoType ct, long * amount, Player * player)
{
if (*amount == 0)
return;
assert(*amount > 0);
if (GetContain(ct) < *amount) {
Message * mess = player->AddMessage("Warning: Transfer more then carried", this);
mess->AddLong("Attempted amount", *amount);
*amount = GetContain(ct);
mess->AddLong("Actual amount", *amount);
}
if (ct == POPULATION) {
*amount -= *amount % Rules::PopEQ1kT; // only transfer full groups
if (dest->GetCargoCapacity() >= 0 && dest->GetCargoCapacity() < dest->GetCargoMass() + (*amount / Rules::PopEQ1kT)) {
Message * mess = player->AddMessage("Warning: Transfer more then capacity", this);
mess->AddItem("", dest);
mess->AddLong("Attempted amount", *amount);
*amount = (dest->GetCargoCapacity() - dest->GetCargoMass()) * Rules::PopEQ1kT;
mess->AddLong("Actual amount", *amount);
}
} else if (ct == FUEL) {
Fleet * destf = dynamic_cast<Fleet *>(dest);
if (destf->GetFuelCapacity() >= 0 && destf->GetFuelCapacity() < destf->GetFuel() + *amount) {
Message * mess = player->AddMessage("Warning: Transfer more then capacity", this);
mess->AddItem("", dest);
mess->AddLong("Attempted amount", *amount);
*amount = destf->GetFuelCapacity() - destf->GetFuel();
mess->AddLong("Actual amount", *amount);
}
} else {
if (dest->GetCargoCapacity() >= 0 && dest->GetCargoCapacity() < dest->GetCargoMass() + *amount) {
Message * mess = player->AddMessage("Warning: Transfer more then capacity", this);
mess->AddItem("", dest);
mess->AddLong("Attempted amount", *amount);
*amount = dest->GetCargoCapacity() - dest->GetCargoMass();
mess->AddLong("Actual amount", *amount);
}
}
if (ct == POPULATION && GetOwner() != dest->GetOwner()) {
assert(false); // should never get here now
Planet * destp = dynamic_cast<Planet *>(dest);
if (destp) {
if (destp->GetBaseNumber() >= 0) {
player->AddMessage("Warning: Invading world with base", this);
return;
} else {
AdjustAmounts(ct, -*amount);
destp->Invade(NCGetOwner(), *amount);
return;
}
} else {
Message * mess = player->AddMessage("Warning: Transfer pop to unowned fleet", this);
mess->AddItem("", dest);
return;
}
}
dest->AdjustAmounts(ct, *amount);
AdjustAmounts(ct, -*amount);
}
示例7: ProcessLoad
void CargoHolder::ProcessLoad(CargoHolder * dest, CargoType ct, TransferType tt, long value, bool dunnage) // value usage depends on TransferType
{
assert(dest->IsWith(*this));
assert(dest != this);
if (value < 0) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is negative", this);
mess->AddLong("Amount transferred", value);
return;
}
if (value > Rules::GetConstant("MaxTransfer")) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is over max", this);
mess->AddLong("Amount transferred", value);
return;
}
long destAmt = dest->GetContain(ct);
if (GetOwner() != dest->GetOwner() && (ct == POPULATION || !dest->CanLoadBy(GetOwner())))
destAmt = 0;
long amount = 0; // actual amount moved;
switch (tt) {
case TRANSFER_DROPNLOAD:
case TRANSFER_LOADALL:
if (dunnage) break;
amount = TransferAmount(ct, dest, this, destAmt);
break;
case TRANSFER_UNLOADALL:
break;
case TRANSFER_LOADAMT:
if (dunnage) break;
amount = TransferAmount(ct, dest, this, value);
break;
case TRANSFER_UNLOADAMT:
break;
case TRANSFER_FILLPER:
case TRANSFER_WAITPER: // affects movement too
if (dunnage) break;
if (value > 100) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer percent over 100%", this);
mess->AddLong("Amount transferred", value);
return;
}
amount = TransferAmount(ct, dest, this, GetCargoCapacity() * value / 100);
break;
case TRANSFER_LOADDUNN:
if (!dunnage) break;
// order of loading is different, but this is basicly a loadall -- execpt fuel
if (ct == FUEL) {
Fleet * f = dynamic_cast<Fleet *>(this);
int Need = f->GetFuelNeeded() - f->GetFuel();
if (Need > 0)
amount = TransferAmount(ct, dest, this, Need);
else
amount = -TransferAmount(ct, this, dest, -Need);
} else {
amount = TransferAmount(ct, dest, this, destAmt);
}
break;
case TRANSFER_SETTOPER:
if (value > 100) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer percent over 100%", this);
mess->AddLong("Amount transferred", value);
return;
}
value = GetCargoCapacity() * value / 100;
// drop to a regualr transfer amount
case TRANSFER_AMOUNTTO:
if (dunnage) break;
if (GetContain(ct) < value)
amount = TransferAmount(ct, dest, this, value - GetContain(ct));
break;
case TRANSFER_DESTTO:
if (dunnage) break;
if (destAmt > value)
amount = TransferAmount(ct, dest, this, destAmt - value);
break;
default:
Message * mess = NCGetOwner()->AddMessage("Error: Invalid transfer order", this);
mess->AddLong("Transfer code", tt);
return;
}
assert(amount >= 0 || tt == TRANSFER_LOADDUNN && ct == FUEL);
if (amount > 0 && dest->GetOwner() != GetOwner()) {
if (!dest->CanLoadBy(GetOwner())) {
Message * mess = NCGetOwner()->AddMessage("Warning: No theiving component at location", this);
mess->AddItem("", dest);
//.........这里部分代码省略.........
示例8: ParseNode
bool WayOrderList::ParseNode(const TiXmlNode * node, Player * player, Game *game)
{
const TiXmlNode * child1;
const TiXmlNode * child2;
WayOrder * wo;
Location * loc;
bool fmo;
Player * player2;
long speed;
nPlayer = player->GetID();
// don't verify the fleet, it might not yet exist
if (nFleet <= 0 || nFleet > Rules::MaxFleets) {
Message * mess = player->AddMessage("Error: invalid fleet number");
mess->AddLong("Waypoint order", nFleet);
nFleet = 0;
return true;
}
for (child1 = node->FirstChild("Waypoint"); child1; child1 = child1->NextSibling("Waypoint")) {
wo = NULL;
loc = NULL;
fmo = false;
speed = 0;
unsigned long pnum = GetLong(child1->FirstChild("Player"));
if (pnum < 0 || pnum > game->NumberPlayers()) {
Message * mess = player->AddMessage("Error: invalid player number");
mess->AddLong("", pnum);
mess->AddItem("Where", "Fleet destination");
continue;
}
player2 = game->NCGetPlayer(pnum);
for (child2 = child1->FirstChild(); child2; child2 = child2->NextSibling()) {
if (child2->Type() == TiXmlNode::COMMENT)
continue;
if (stricmp(child2->Value(), "Location") == 0) {
if (loc != NULL)
continue;
Location * nl = new Location();
if (!nl->ParseNode(child2, game)) {
delete nl;
continue;
}
loc = nl;
fmo = true;
} else if (stricmp(child2->Value(), "Planet") == 0) {
if (loc != NULL)
continue;
Planet * planet = game->GetGalaxy()->GetPlanet(GetString(child2));
if (!planet) {
Message * mess = player->AddMessage("Error: invalid planet");
mess->AddItem("", GetString(child2));
mess->AddItem("Where", "Waypoint order");
continue;
}
loc = planet;
} else if (stricmp(child2->Value(), "Minefield") == 0) {
if (loc != NULL)
continue;
///@todo add after mines are added
} else if (stricmp(child2->Value(), "Scrap") == 0) {
if (loc != NULL)
continue;
long l = GetLong(child2);
Salvage * salvage = game->GetGalaxy()->GetSalvage(l);
if (!salvage || !salvage->SeenBy(player)) {
Message * mess = player->AddMessage("Error: invalid salvage pile");
mess->AddLong("Waypoint order", l);
continue;
}
loc = salvage;
} else if (stricmp(child2->Value(), "Packet") == 0) {
if (loc != NULL)
continue;
///@todo add after packets are added
} else if (stricmp(child2->Value(), "Trader") == 0) {
if (loc != NULL)
continue;
///@todo add after Mystery Traders are added
} else if (stricmp(child2->Value(), "Fleet") == 0) {
if (loc != NULL)
continue;
if (player2 == player) {
loc = new TempFleet(game, GetLong(child2), player);
fmo = true;
} else {
Fleet * f2 = player2->NCGetFleet(GetLong(child2));
if (!f2 || !f2->SeenBy(player)) {
Message * mess = player->AddMessage("Error: invalid fleet number");
mess->AddLong("Waypoint order", GetLong(child2));
//.........这里部分代码省略.........