本文整理汇总了C++中MapCell::GetPlayerCount方法的典型用法代码示例。如果您正苦于以下问题:C++ MapCell::GetPlayerCount方法的具体用法?C++ MapCell::GetPlayerCount怎么用?C++ MapCell::GetPlayerCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MapCell
的用法示例。
在下文中一共展示了MapCell::GetPlayerCount方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPlayerCountInRadius
uint32 MapScriptInterface::GetPlayerCountInRadius(float x, float y, float z /* = 0.0f */, float radius /* = 5.0f */)
{
// use a cell radius of 2
uint32 PlayerCount = 0;
uint32 cellX = mapMgr.GetPosX(x);
uint32 cellY = mapMgr.GetPosY(y);
uint32 endX = cellX < _sizeX ? cellX + 1 : _sizeX;
uint32 endY = cellY < _sizeY ? cellY + 1 : _sizeY;
uint32 startX = cellX > 0 ? cellX - 1 : 0;
uint32 startY = cellY > 0 ? cellY - 1 : 0;
MapCell* pCell;
ObjectSet::iterator iter, iter_end;
for(uint32 cx = startX; cx < endX; ++cx)
{
for(uint32 cy = startY; cy < endY; ++cy)
{
pCell = mapMgr.GetCell(cx, cy);
if(pCell == 0 || pCell->GetPlayerCount() == 0)
continue;
iter = pCell->Begin();
iter_end = pCell->End();
for(; iter != iter_end; ++iter)
{
if((*iter)->IsPlayer() &&
(*iter)->CalcDistance(x, y, (z == 0.0f ? (*iter)->GetPositionZ() : z)) < radius)
{
++PlayerCount;
}
}
}
}
return PlayerCount;
}