您的位置:首页 > 其它

九宫格广播

2014-02-12 14:34 363 查看
/////////////////////////////////////////////////////////
//// 九宫格广播,广播给周围九宫范围内的对象
/////////////////////////////////////////////////////////
BOOL CGameWorld::Broadcast9GridMessage(POINTS ptCurTile, int nGridWidth, int nGridHeight, DWORD dwMsg, LPCSTR buf, int nLen)
{
static WORD s_wCreateMsgID = MAKE_MSGID(MAINACTION_CIRCULTYPE_BCM, MAINACTION_MSGID_CREATE);
static WORD s_wDestroyMsgID= MAKE_MSGID(MAINACTION_CIRCULTYPE_BCM, MAINACTION_MSGID_DESTROY);
MapItemEnumMsgData Data;
Data.buf=buf;
Data.dwMsg=dwMsg;
Data.nLen=nLen;
RECT rcBroadcast;
POINT pt;
pt.x=ptCurTile.x;
pt.y=ptCurTile.y;
m_9GridMan.GetScreenAll9Grid(pt,nGridWidth,nGridHeight,rcBroadcast);
m_BroadcastMonitor.BroadCast(pt.x/16,pt.y/16);

int nListCount = 4096;
SNAP_ITEM snap[4096];
if(dwMsg == s_wCreateMsgID || dwMsg == s_wDestroyMsgID)
{
if(!m_MapContainerDecorate.SnapshotRectItem(rcBroadcast, nListCount, snap))
{
return FALSE;
}
}
else
{
if(!m_MapContainerDecorate.SnapshotRectActorItem(rcBroadcast, nListCount, snap))
{
return FALSE;
}
}

for(int i = 0; i < nListCount; i++)
{
if(!(m_MapContainer.GetTile(snap[i].ptTile).FindItem(snap[i].pItem)))
{
continue;
}

m_MapItemEnumSink.OnEnumMapItemMessage(snap[i].ptTile, snap[i].pItem, &Data);
}

return TRUE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: