mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-03 21:19:40 +00:00
[Client] Add CellController methods to fetch Actors without needing Ptrs
This commit is contained in:
parent
0ef9e014eb
commit
61cedfa192
2 changed files with 52 additions and 9 deletions
|
@ -166,11 +166,20 @@ void CellController::removeLocalActorRecord(std::string actorIndex)
|
||||||
|
|
||||||
bool CellController::isLocalActor(MWWorld::Ptr ptr)
|
bool CellController::isLocalActor(MWWorld::Ptr ptr)
|
||||||
{
|
{
|
||||||
|
if (ptr.mRef == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
std::string mapIndex = generateMapIndex(ptr);
|
std::string mapIndex = generateMapIndex(ptr);
|
||||||
|
|
||||||
return (localActorsToCells.count(mapIndex) > 0);
|
return (localActorsToCells.count(mapIndex) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CellController::isLocalActor(std::string refId, int refNumIndex, int mpNum)
|
||||||
|
{
|
||||||
|
std::string mapIndex = generateMapIndex(refId, refNumIndex, mpNum);
|
||||||
|
return (localActorsToCells.count(mapIndex) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
LocalActor *CellController::getLocalActor(MWWorld::Ptr ptr)
|
LocalActor *CellController::getLocalActor(MWWorld::Ptr ptr)
|
||||||
{
|
{
|
||||||
std::string actorIndex = generateMapIndex(ptr);
|
std::string actorIndex = generateMapIndex(ptr);
|
||||||
|
@ -179,6 +188,14 @@ LocalActor *CellController::getLocalActor(MWWorld::Ptr ptr)
|
||||||
return cellsActive.at(cellIndex)->getLocalActor(actorIndex);
|
return cellsActive.at(cellIndex)->getLocalActor(actorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LocalActor *CellController::getLocalActor(std::string refId, int refNumIndex, int mpNum)
|
||||||
|
{
|
||||||
|
std::string actorIndex = generateMapIndex(refId, refNumIndex, mpNum);
|
||||||
|
std::string cellIndex = localActorsToCells.at(actorIndex);
|
||||||
|
|
||||||
|
return cellsActive.at(cellIndex)->getLocalActor(actorIndex);
|
||||||
|
}
|
||||||
|
|
||||||
void CellController::setDedicatedActorRecord(std::string actorIndex, std::string cellIndex)
|
void CellController::setDedicatedActorRecord(std::string actorIndex, std::string cellIndex)
|
||||||
{
|
{
|
||||||
dedicatedActorsToCells[actorIndex] = cellIndex;
|
dedicatedActorsToCells[actorIndex] = cellIndex;
|
||||||
|
@ -189,8 +206,17 @@ void CellController::removeDedicatedActorRecord(std::string actorIndex)
|
||||||
dedicatedActorsToCells.erase(actorIndex);
|
dedicatedActorsToCells.erase(actorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CellController::isDedicatedActor(std::string refId, int refNumIndex, int mpNum)
|
||||||
|
{
|
||||||
|
std::string mapIndex = generateMapIndex(refId, refNumIndex, mpNum);
|
||||||
|
return (dedicatedActorsToCells.count(mapIndex) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
bool CellController::isDedicatedActor(MWWorld::Ptr ptr)
|
bool CellController::isDedicatedActor(MWWorld::Ptr ptr)
|
||||||
{
|
{
|
||||||
|
if (ptr.mRef == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
std::string mapIndex = generateMapIndex(ptr);
|
std::string mapIndex = generateMapIndex(ptr);
|
||||||
|
|
||||||
return (dedicatedActorsToCells.count(mapIndex) > 0);
|
return (dedicatedActorsToCells.count(mapIndex) > 0);
|
||||||
|
@ -204,22 +230,32 @@ DedicatedActor *CellController::getDedicatedActor(MWWorld::Ptr ptr)
|
||||||
return cellsActive.at(cellIndex)->getDedicatedActor(actorIndex);
|
return cellsActive.at(cellIndex)->getDedicatedActor(actorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CellController::generateMapIndex(MWWorld::Ptr ptr)
|
DedicatedActor *CellController::getDedicatedActor(std::string refId, int refNumIndex, int mpNum)
|
||||||
|
{
|
||||||
|
std::string actorIndex = generateMapIndex(refId, refNumIndex, mpNum);
|
||||||
|
std::string cellIndex = dedicatedActorsToCells.at(actorIndex);
|
||||||
|
|
||||||
|
return cellsActive.at(cellIndex)->getDedicatedActor(actorIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CellController::generateMapIndex(std::string refId, int refNumIndex, int mpNum)
|
||||||
{
|
{
|
||||||
std::string mapIndex = "";
|
std::string mapIndex = "";
|
||||||
mapIndex += ptr.getCellRef().getRefId();
|
mapIndex += refId;
|
||||||
mapIndex += "-" + Utils::toString(ptr.getCellRef().getRefNum().mIndex);
|
mapIndex += "-" + Utils::toString(refNumIndex);
|
||||||
mapIndex += "-" + Utils::toString(ptr.getCellRef().getMpNum());
|
mapIndex += "-" + Utils::toString(mpNum);
|
||||||
return mapIndex;
|
return mapIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CellController::generateMapIndex(MWWorld::Ptr ptr)
|
||||||
|
{
|
||||||
|
return generateMapIndex(ptr.getCellRef().getRefId(),
|
||||||
|
ptr.getCellRef().getRefNum().mIndex, ptr.getCellRef().getMpNum());
|
||||||
|
}
|
||||||
|
|
||||||
std::string CellController::generateMapIndex(BaseActor baseActor)
|
std::string CellController::generateMapIndex(BaseActor baseActor)
|
||||||
{
|
{
|
||||||
std::string mapIndex = "";
|
return generateMapIndex(baseActor.refId, baseActor.refNumIndex, baseActor.mpNum);
|
||||||
mapIndex += baseActor.refId;
|
|
||||||
mapIndex += "-" + Utils::toString(baseActor.refNumIndex);
|
|
||||||
mapIndex += "-" + Utils::toString(baseActor.mpNum);
|
|
||||||
return mapIndex;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CellController::isActiveCell(const ESM::Cell& cell)
|
bool CellController::isActiveCell(const ESM::Cell& cell)
|
||||||
|
|
|
@ -30,14 +30,21 @@ namespace mwmp
|
||||||
|
|
||||||
void setLocalActorRecord(std::string actorIndex, std::string cellIndex);
|
void setLocalActorRecord(std::string actorIndex, std::string cellIndex);
|
||||||
void removeLocalActorRecord(std::string actorIndex);
|
void removeLocalActorRecord(std::string actorIndex);
|
||||||
|
|
||||||
bool isLocalActor(MWWorld::Ptr ptr);
|
bool isLocalActor(MWWorld::Ptr ptr);
|
||||||
|
bool isLocalActor(std::string refId, int refNumIndex, int mpNum);
|
||||||
virtual LocalActor *getLocalActor(MWWorld::Ptr ptr);
|
virtual LocalActor *getLocalActor(MWWorld::Ptr ptr);
|
||||||
|
virtual LocalActor *getLocalActor(std::string refId, int refNumIndex, int mpNum);
|
||||||
|
|
||||||
void setDedicatedActorRecord(std::string actorIndex, std::string cellIndex);
|
void setDedicatedActorRecord(std::string actorIndex, std::string cellIndex);
|
||||||
void removeDedicatedActorRecord(std::string actorIndex);
|
void removeDedicatedActorRecord(std::string actorIndex);
|
||||||
bool isDedicatedActor(MWWorld::Ptr ptr);
|
|
||||||
virtual DedicatedActor *getDedicatedActor(MWWorld::Ptr ptr);
|
|
||||||
|
|
||||||
|
bool isDedicatedActor(MWWorld::Ptr ptr);
|
||||||
|
bool isDedicatedActor(std::string refId, int refNumIndex, int mpNum);
|
||||||
|
virtual DedicatedActor *getDedicatedActor(MWWorld::Ptr ptr);
|
||||||
|
virtual DedicatedActor *getDedicatedActor(std::string refId, int refNumIndex, int mpNum);
|
||||||
|
|
||||||
|
std::string generateMapIndex(std::string refId, int refNumindex, int mpNum);
|
||||||
std::string generateMapIndex(MWWorld::Ptr ptr);
|
std::string generateMapIndex(MWWorld::Ptr ptr);
|
||||||
std::string generateMapIndex(mwmp::BaseActor baseActor);
|
std::string generateMapIndex(mwmp::BaseActor baseActor);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue