예제 #1
0
void City::onObjectEnter(Object* object)
{
    PlayerObject* player = (PlayerObject*)object;
    //player->setCityRegionId(this->getId());

	addVisitor(object);

	DLOG(INFO) << player->getFirstName().getAnsi() << " entered " 
        << mCityName << " (" << mVisitingPlayers.size() << " players in city)";
}
예제 #2
0
void CampRegion::onObjectEnter(Object* object) {
    if (object->getType() != ObjType_Player) {
        return;
    }

    PlayerObject* visitor = dynamic_cast<PlayerObject*>(object);
    if (!visitor) {
        return;
    }

    if (!addVisitor(visitor)) {
        return;
    }

    auto it = std::find_if(links.begin(), links.end(), [=] (campLink* link) {
        return link->objectID == visitor->getId();
    });

    if (it != links.end()) {
        campLink* temp = new campLink;
        temp->objectID = visitor->getId();
        temp->lastSeenTime = gWorldManager->GetCurrentGlobalTick();
        temp->tickCount = 0;

        links.push_back(temp);
    }

    PlayerObject* owner = dynamic_cast<PlayerObject*>(gWorldManager->getObjectById(mOwnerId));

    if (owner && (owner->getId() != visitor->getId())) {
        std::string text = "You have entered " + this->getCampOwnerName() + "'s camp.";
        gMessageLib->SendSystemMessage(std::wstring(text.begin(), text.end()).c_str(), visitor);
    } else {
        //ensure it's not time to destroy the camp
        mAbandoned = false;
    }
}