mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-31 01:15:48 -04:00
Added serverGame library
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
// ======================================================================
|
||||
//
|
||||
// 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
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
Reference in New Issue
Block a user