bool NFPatrolState::RandomPatrol(const NFGUID& self, NFIStateMachine* pStateMachine) { //首先,得看有没路径 //没有的话,随机找个地址走吧(以出生点为中心开始找,种子地址)NPCConfigID const std::string& strConfigID = m_pKernelModule->GetPropertyString(self, "NPCConfigID"); const std::string& strNPCID = m_pKernelModule->GetPropertyString(self, "ConfigID"); if (!strConfigID.empty()) { NF_SHARE_PTR<NFIPropertyManager> xPropertyManager = m_pElementModule->GetPropertyManager(strConfigID); if (xPropertyManager) { NF_SHARE_PTR<NFIProperty> xPropertyX = xPropertyManager->GetElement("SeedX"); NF_SHARE_PTR<NFIProperty> xPropertyY = xPropertyManager->GetElement("SeedY"); NF_SHARE_PTR<NFIProperty> xPropertyZ = xPropertyManager->GetElement("SeedZ"); double fCurX = xPropertyX->GetFloat(); double fCurY = xPropertyY->GetFloat(); double fCurZ = xPropertyZ->GetFloat(); double fPosOffestX = (double)(rand() / double(RAND_MAX) - 0.5); double fPosOffestZ = (double)(rand() / double(RAND_MAX) - 0.5); fPosOffestX *= 10; fPosOffestZ *= 10; fCurX += fPosOffestX; fCurZ += fPosOffestZ; //if (fCurX > 0.0f && fCurZ > 0.0f) { //看能否寻路,不能寻路则重来 NFAI_STATE eStateType = NFAI_STATE::ChaseState; double fRand = (double)(rand() / double(RAND_MAX)); if (fRand < 0.5f) { eStateType = NFAI_STATE::ChaseState; } NFDataList valueList; valueList.AddFloat(fCurX); valueList.AddFloat(fCurY); valueList.AddFloat(fCurZ); //m_pKernelModule->DoEvent(self, NFED_ON_CLIENT_REQUIRE_MOVE, valueList); m_pKernelModule->SetPropertyFloat(self, "X", fCurX); m_pKernelModule->SetPropertyFloat(self, "Y", fCurY); m_pKernelModule->SetPropertyFloat(self, "Z", fCurZ); return true; } } } return false; }
double NFCPropertyManager::GetPropertyFloat(const std::string& strPropertyName) { NF_SHARE_PTR<NFIProperty> pProperty = GetElement(strPropertyName); if (pProperty) { return pProperty->GetFloat(); } return 0.0; }
double NFCElementInfoModule::GetPropertyFloat(const std::string& strConfigName, const std::string& strPropertyName) { NF_SHARE_PTR<NFIProperty> pProperty = GetProperty(strConfigName, strPropertyName); if (pProperty.get()) { return pProperty->GetFloat(); } return 0.0; }
double NFCRecordManager::GetRecordFloat(const std::string& strRecordName, const int nRow, const std::string& strColTag) { NF_SHARE_PTR<NFIRecord> pRecord = GetElement(strRecordName); if (pRecord.get()) { return pRecord->GetFloat(nRow, strColTag); } return 0.0; }
float NFCObject::GetRecordFloat(const std::string& strRecordName, const int nRow, const int nCol) { NF_SHARE_PTR<NFIRecord> pRecord = GetRecordManager()->GetElement(strRecordName); if (pRecord.get()) { return pRecord->GetFloat(nRow, nCol); } return 0.0f; }
float NFCObject::GetPropertyFloat(const std::string& strPropertyName) { NF_SHARE_PTR<NFIProperty> pProperty = GetPropertyManager()->GetElement(strPropertyName); if (pProperty.get()) { return pProperty->GetFloat(); } return 0.0f; }
bool NFCCreateRoleModule::ConvertPropertyManagerToPB(const NF_SHARE_PTR<NFIPropertyManager>& pProps, NFMsg::ObjectPropertyList * pPropertyData) { if (pProps) { NF_SHARE_PTR<NFIProperty> xPropert = pProps->First(); while (xPropert) { if (xPropert->GetCache() || xPropert->GetSave()) { switch (xPropert->GetType()) { case NFDATA_TYPE::TDATA_INT: { NFMsg::PropertyInt* pData = pPropertyData->add_property_int_list(); pData->set_property_name(xPropert->GetKey()); pData->set_data(xPropert->GetInt()); } break; case NFDATA_TYPE::TDATA_FLOAT: { NFMsg::PropertyFloat* pData = pPropertyData->add_property_float_list(); pData->set_property_name(xPropert->GetKey()); pData->set_data(xPropert->GetFloat()); } break; case NFDATA_TYPE::TDATA_OBJECT: { NFMsg::PropertyObject* pData = pPropertyData->add_property_object_list(); pData->set_property_name(xPropert->GetKey()); *(pData->mutable_data()) = NFINetModule::NFToPB(xPropert->GetObject()); } break; case NFDATA_TYPE::TDATA_STRING: { NFMsg::PropertyString* pData = pPropertyData->add_property_string_list(); pData->set_property_name(xPropert->GetKey()); pData->set_data(xPropert->GetString()); std::cout << xPropert->GetKey() << " " << xPropert->GetString() << std::endl; } break; case NFDATA_TYPE::TDATA_VECTOR2: { NFMsg::PropertyVector2* pData = pPropertyData->add_property_vector2_list(); pData->set_property_name(xPropert->GetKey()); *(pData->mutable_data()) = NFINetModule::NFToPB(xPropert->GetVector2()); } break; case NFDATA_TYPE::TDATA_VECTOR3: { NFMsg::PropertyVector3* pData = pPropertyData->add_property_vector3_list(); pData->set_property_name(xPropert->GetKey()); *(pData->mutable_data()) = NFINetModule::NFToPB(xPropert->GetVector3()); } break; default: break; } } xPropert = pProps->Next(); } } return false; }
bool NFCCreateRoleModule::ConvertRecordToPB(const NF_SHARE_PTR<NFIRecord>& pRecord, NFMsg::ObjectRecordBase * pRecordData) { pRecordData->set_record_name(pRecord->GetName()); for (int iRow = 0; iRow < pRecord->GetRows(); iRow++) { if (!pRecord->IsUsed(iRow)) { continue; } NFMsg::RecordAddRowStruct* pRowData = pRecordData->add_row_struct(); if (!pRowData) { continue; } pRowData->set_row(iRow); for (int iCol = 0; iCol < pRecord->GetCols(); iCol++) { const int nType = pRecord->GetColType(iCol); switch (nType) { case TDATA_INT: { NFMsg::RecordInt* pPropertyData = pRowData->add_record_int_list(); const NFINT64 xPropertyValue = pRecord->GetInt(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); pPropertyData->set_data(xPropertyValue); } } break; case TDATA_FLOAT: { NFMsg::RecordFloat* pPropertyData = pRowData->add_record_float_list(); const double xPropertyValue = pRecord->GetFloat(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); pPropertyData->set_data(xPropertyValue); } } break; case TDATA_STRING: { NFMsg::RecordString* pPropertyData = pRowData->add_record_string_list(); const std::string& xPropertyValue = pRecord->GetString(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); pPropertyData->set_data(xPropertyValue); } } break; case TDATA_OBJECT: { NFMsg::RecordObject* pPropertyData = pRowData->add_record_object_list(); const NFGUID xPropertyValue = pRecord->GetObject(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); *pPropertyData->mutable_data() = NFINetModule::NFToPB(xPropertyValue); } } break; case TDATA_VECTOR2: { NFMsg::RecordVector2* pPropertyData = pRowData->add_record_vector2_list(); const NFVector2 xPropertyValue = pRecord->GetVector2(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); NFMsg::Vector2* pVec = pPropertyData->mutable_data(); pVec->set_x(xPropertyValue.X()); pVec->set_y(xPropertyValue.Y()); } } break; case TDATA_VECTOR3: { NFMsg::RecordVector3* pPropertyData = pRowData->add_record_vector3_list(); const NFVector3 xPropertyValue = pRecord->GetVector3(iRow, iCol); if (pPropertyData) { pPropertyData->set_col(iCol); pPropertyData->set_row(iRow); NFMsg::Vector3* pVec = pPropertyData->mutable_data(); pVec->set_x(xPropertyValue.X()); pVec->set_y(xPropertyValue.Y()); pVec->set_z(xPropertyValue.Z()); } } break; default: break; } } } return true; }
const bool NFCObjectSaveModule::SaveDataToNoSql( const NFIDENTID& self ) { NF_SHARE_PTR<NFIObject> pObject = m_pKernelModule->GetObject( self ); if ( pObject.get() ) { NF_SHARE_PTR<NFIPropertyManager> pProManager = pObject->GetPropertyManager(); NF_SHARE_PTR<NFIRecordManager> pRecordManager = pObject->GetRecordManager(); std::vector<std::string> vFieldVec; std::vector<std::string> vValueVec; //witch property to save std::string strName; NF_SHARE_PTR<NFIProperty> xProperty = pProManager->First(strName); while (xProperty) { if (xProperty->GetSave()) { vFieldVec.push_back(strName); vValueVec.push_back(xProperty->ToString()); } strName.clear(); xProperty = pProManager->Next(strName); } //witch Record to save NF_SHARE_PTR<NFIRecord> xRecord = pRecordManager->First(strName); while (xRecord) { if (xRecord->GetSave()) { NFMsg::PlayerRecordBase xRecordData; xRecordData.set_record_name(strName); for (int i = 0; i < xRecord->GetRows(); ++i) { if(xRecord->IsUsed(i)) { for (int j = 0; j < xRecord->GetCols(); ++j) { switch (xRecord->GetColType(j)) { case TDATA_INT: { NFMsg::RecordInt* pRecordInt = xRecordData.add_record_int_list(); pRecordInt->set_row(i); pRecordInt->set_col(j); pRecordInt->set_data(xRecord->GetInt(i, j)); } break; case TDATA_FLOAT: { NFMsg::RecordFloat* xRecordFloat = xRecordData.add_record_float_list(); xRecordFloat->set_row(i); xRecordFloat->set_col(j); xRecordFloat->set_data(xRecord->GetFloat(i, j)); } break; case TDATA_STRING: { NFMsg::RecordString* xRecordString = xRecordData.add_record_string_list(); xRecordString->set_row(i); xRecordString->set_col(j); xRecordString->set_data(xRecord->GetString(i, j)); } break; case TDATA_OBJECT: { NFMsg::RecordObject* xRecordObejct = xRecordData.add_record_object_list(); xRecordObejct->set_row(i); xRecordObejct->set_col(j); *xRecordObejct->mutable_data() = NFINetModule::NFToPB(xRecord->GetObject(i, j)); } break; default: break; } } } } std::string strRecordValue; if(xRecordData.SerializeToString(&strRecordValue)) { vFieldVec.push_back(strName); vValueVec.push_back(strRecordValue); } } strName.clear(); xRecord = pRecordManager->Next(strName); } const std::string& strClass = m_pKernelModule->GetPropertyString(self, "ClassName"); if(!m_pClusterSQLModule->Updata(strClass, self.ToString(), vFieldVec, vValueVec)) { return false; } return true; } return false; }