BOOL CQuestSystem::InitOneFile(const char* filename,tagQuestList& QuestList ) { TiXmlNode* pQuestNode = NULL; TiXmlDocument pStrDoc(filename); if( !pStrDoc.LoadFile() ) { char s[126]; sprintf(s,"装载配置文件<%s>出错!",filename); PutDebugString(s); return FALSE; } pQuestNode = pStrDoc.FirstChild("role"); if( pQuestNode == NULL) return FALSE; TiXmlElement* pEle = pQuestNode->ToElement(); if( pEle == NULL ) return FALSE; TiXmlElement* pAttr = pEle->FirstChildElement(); for(; pAttr != NULL; pAttr = pAttr->NextSiblingElement() ) { CQuest* quest = new CQuest; if( quest->Init(pAttr,QuestList.lTextType)) if( !AddQuest(QuestList,quest)) delete quest; } return TRUE; }
void AMech_RPGCharacter::NPCInteract(AMech_RPGCharacter* character) { if (character->GetQuests().Num() > 0) { for (UQuest* quest : character->GetQuests()) { if (!GetQuests().Contains(quest)) { AddQuest(quest); } } } if (OnNPCInteractEvent.IsBound()) { OnNPCInteractEvent.Broadcast(character); } GetGroup()->NPCInteract(character); }