mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-14 00:01:30 -04:00
149 lines
5.5 KiB
C++
Executable File
149 lines
5.5 KiB
C++
Executable File
// ======================================================================
|
|
//
|
|
// GroupWaypointBuilder.cpp
|
|
//
|
|
// Copyright 2004 Sony Online Entertainment
|
|
//
|
|
// ======================================================================
|
|
|
|
#include "serverGame/FirstServerGame.h"
|
|
#include "serverGame/GroupWaypointBuilder.h"
|
|
|
|
#include "serverGame/ConfigServerGame.h"
|
|
#include "serverGame/CreatureObject.h"
|
|
#include "serverGame/GroupObject.h"
|
|
#include "serverGame/PlayerCreatureController.h"
|
|
#include "serverGame/PlayerObject.h"
|
|
#include "sharedUtility/Location.h"
|
|
#include "sharedObject/NetworkIdManager.h"
|
|
|
|
// ======================================================================
|
|
|
|
namespace GroupWaypointBuilderNamespace
|
|
{
|
|
void buildGroupWaypoints(GroupObject const &groupObject, PlayerObject::WaypointMap &groupWaypoints);
|
|
void buildGroupWaypoints(PlayerObject const &playerObject, PlayerObject::WaypointMap &groupWaypoints);
|
|
void updateGroupWaypoints(GroupObject const &groupObject, PlayerObject::WaypointMap const &groupWaypoints);
|
|
void updateGroupWaypoints(PlayerObject &playerObject, PlayerObject::WaypointMap const &groupWaypoints);
|
|
}
|
|
|
|
using namespace GroupWaypointBuilderNamespace;
|
|
|
|
// ======================================================================
|
|
// GroupWaypointBuilderNamespace
|
|
// ======================================================================
|
|
|
|
void GroupWaypointBuilderNamespace::buildGroupWaypoints(GroupObject const &groupObject, PlayerObject::WaypointMap &groupWaypoints)
|
|
{
|
|
GroupObject::GroupMemberVector const & groupMemberVector = groupObject.getGroupMembers();
|
|
for (GroupObject::GroupMemberVector::const_iterator groupMemberVectorIter = groupMemberVector.begin(); groupMemberVectorIter != groupMemberVector.end(); ++groupMemberVectorIter)
|
|
{
|
|
Object const * const object = NetworkIdManager::getObjectById(groupMemberVectorIter->first);
|
|
if (!object)
|
|
continue;
|
|
|
|
ServerObject const * serverObject = object->asServerObject();
|
|
if (!serverObject || !serverObject->isPlayerControlled())
|
|
continue;
|
|
|
|
CreatureObject const * const creatureObject = serverObject->asCreatureObject();
|
|
if (!creatureObject)
|
|
continue;
|
|
|
|
PlayerObject const * const playerObject = PlayerCreatureController::getPlayerObject(creatureObject);
|
|
if (!playerObject)
|
|
continue;
|
|
|
|
buildGroupWaypoints(*playerObject, groupWaypoints);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void GroupWaypointBuilderNamespace::buildGroupWaypoints(PlayerObject const &playerObject, PlayerObject::WaypointMap &groupWaypoints)
|
|
{
|
|
PlayerObject::WaypointMap const &waypoints = playerObject.getWaypoints();
|
|
if (!waypoints.empty())
|
|
{
|
|
for (PlayerObject::WaypointMap::const_iterator i = waypoints.begin(); i != waypoints.end(); ++i)
|
|
if ((*i).second.isActive() && !strcmp((*i).second.getLocation().getSceneId(), ConfigServerGame::getSceneID()))
|
|
groupWaypoints[(*i).first] = (*i).second;
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void GroupWaypointBuilderNamespace::updateGroupWaypoints(GroupObject const &groupObject, PlayerObject::WaypointMap const &groupWaypoints)
|
|
{
|
|
GroupObject::GroupMemberVector const &groupMemberVector = groupObject.getGroupMembers();
|
|
for (GroupObject::GroupMemberVector::const_iterator groupMemberVectorIter = groupMemberVector.begin(); groupMemberVectorIter != groupMemberVector.end(); ++groupMemberVectorIter)
|
|
{
|
|
Object * const object = NetworkIdManager::getObjectById(groupMemberVectorIter->first);
|
|
if (!object)
|
|
continue;
|
|
|
|
ServerObject * const serverObject = object->asServerObject();
|
|
if (!serverObject || !serverObject->isPlayerControlled())
|
|
continue;
|
|
|
|
CreatureObject * const creatureObject = serverObject->asCreatureObject();
|
|
if (!creatureObject)
|
|
continue;
|
|
|
|
PlayerObject * const playerObject = PlayerCreatureController::getPlayerObject(creatureObject);
|
|
if (!playerObject)
|
|
continue;
|
|
|
|
updateGroupWaypoints(*playerObject, groupWaypoints);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void GroupWaypointBuilderNamespace::updateGroupWaypoints(PlayerObject &playerObject, PlayerObject::WaypointMap const &groupWaypoints)
|
|
{
|
|
if (playerObject.isAuthoritative())
|
|
playerObject.setGroupWaypoints(groupWaypoints);
|
|
}
|
|
|
|
// ======================================================================
|
|
// PUBLIC GroupWaypointBuilder
|
|
// ======================================================================
|
|
|
|
void GroupWaypointBuilder::updateGroupWaypoints(GroupObject const &groupObject)
|
|
{
|
|
#if 0
|
|
PlayerObject::WaypointMap groupWaypoints;
|
|
buildGroupWaypoints(groupObject, groupWaypoints);
|
|
GroupWaypointBuilderNamespace::updateGroupWaypoints(groupObject, groupWaypoints);
|
|
#endif
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void GroupWaypointBuilder::updateGroupWaypoints(PlayerObject &playerObject, bool const updateGroup)
|
|
{
|
|
#if 0
|
|
CreatureObject const * const creatureObject = playerObject.getCreatureObject();
|
|
if (creatureObject)
|
|
{
|
|
GroupObject const * const groupObject = creatureObject->getGroup();
|
|
if (groupObject && updateGroup)
|
|
{
|
|
PlayerObject::WaypointMap groupWaypoints;
|
|
buildGroupWaypoints(*groupObject, groupWaypoints);
|
|
GroupWaypointBuilderNamespace::updateGroupWaypoints(*groupObject, groupWaypoints);
|
|
}
|
|
else
|
|
{
|
|
PlayerObject::WaypointMap groupWaypoints;
|
|
buildGroupWaypoints(playerObject, groupWaypoints);
|
|
GroupWaypointBuilderNamespace::updateGroupWaypoints(playerObject, groupWaypoints);
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
// ======================================================================
|
|
|