bool NFCSceneAOIModule::DestroySceneNPC(const int nSceneID, const int nGroupID) { NF_SHARE_PTR<NFCSceneInfo> pSceneInfo = GetElement(nSceneID); if (pSceneInfo) { if (pSceneInfo->GetElement(nGroupID)) { NFDataList xMonsterlistObject; if (m_pKernelModule->GetGroupObjectList(nSceneID, nGroupID, xMonsterlistObject, false)) { for (int i = 0; i < xMonsterlistObject.GetCount(); ++i) { NFGUID ident = xMonsterlistObject.Object(i); m_pKernelModule->DestroyObject(ident); } } pSceneInfo->RemoveElement(nGroupID); return true; } } return false; }
bool NFCTileModule::RemoveTile(const NFGUID & self, const int nX, const int nY) { NF_SHARE_PTR<TileData> xTileData = mxTileData.GetElement(self); if (!xTileData) { return false; } NF_SHARE_PTR<NFMapEx<int, TileState>> xStateDataMap = xTileData->mxTileState.GetElement(nX); if (!xStateDataMap) { return false; } if (xStateDataMap->ExistElement(nY)) { xStateDataMap->RemoveElement(nY); //save SaveTileData(self); return true; } return false; }
bool NFCEventProcessModule::Execute(const float fLasFrametime, const float fStartedTime) { NFIDENTID ident; NF_SHARE_PTR<NFList<int>> pList = mRemoveEventListEx.First(ident); while (nullptr != pList) { //删除对象的某个事�? NF_SHARE_PTR<NFCObjectEventInfo> pObjectEventInfo = mObjectEventInfoMapEx.GetElement(ident); if (pObjectEventInfo) { int nEvent = 0; bool bRet = pList->First(nEvent); while (bRet) { pObjectEventInfo->RemoveElement(nEvent); bRet = pList->Next(nEvent); } } pList = NULL; pList = mRemoveEventListEx.Next(); } mRemoveEventListEx.ClearAll(); ////////////////////////////////////////////////////////////////////////// //删除事件对象 bool bRet = mRemoveObjectListEx.First(ident); while (bRet) { mObjectEventInfoMapEx.RemoveElement(ident); bRet = mRemoveObjectListEx.Next(ident); } mRemoveObjectListEx.ClearAll(); return true; }