Example #1
0
TiXmlNode * SpaceObject::WriteNode(TiXmlNode * node, const Player * viewer) const
{
	if (!SeenBy(viewer))
		return NULL;

	if (mAlsoHere && mAlsoHere->at(0) != this && dynamic_cast<Planet *>(mAlsoHere->at(0)) != NULL) {
		TiXmlElement *loc = new TiXmlElement("Location");
		AddString(loc, "Planet", mAlsoHere->at(0)->GetName(NULL).c_str());
		node->LinkEndChild(loc);
	} else
		Location::WriteNode(node);

	if (SeenBy(viewer) & SEEN_OWNER) {
		if (GetOwner() == NULL)
			AddLong(node, "Owner", 0);
		else
			AddLong(node, "Owner", GetOwner()->GetID());
	}

	assert(mID != 0);
	TiXmlElement * tie = node->ToElement();
	tie->SetAttribute("IDNumber", mID);

	if (viewer == NULL)
		node->LinkEndChild(Rules::WriteArray("SeenBy", "Race", "Number", mSeenBy));

	return node;
}
Example #2
0
void SpaceObject::CheckSeenByChasers()
{
	int i;
	for (i = 0; i < mChasers.size(); ++i)
		if (!SeenBy(mChasers[i]->GetOwnerID()-1))
			mChasers[i]->ChaseeGone(this);
}
Example #3
0
long SpaceObject::SeenBy(const Player * p) const
{
	if (p == NULL)
		return SEEN_HOST;
	else if (p == GetOwner())
		return SEEN_BYOWNER;
	else
		return SeenBy(p->GetID()-1);
}
Example #4
0
TiXmlNode * Salvage::WriteNode(TiXmlNode * node, const Player * viewer) const
{
	if (viewer != NULL && !SeenBy(viewer))
		return NULL;

	CargoHolder::WriteNode(node, viewer);
	if (viewer == NULL)
		AddLong(node, "TurnCreated", TurnCreated);

	return node;
}