コード例 #1
0
ファイル: p_usdf.cpp プロジェクト: DaZombieKiller/lxDoom
	bool Parse(int lumpnum, FileReader *lump, int lumplen)
	{
		char *buffer = new char[lumplen];
		lump->Read(buffer, lumplen);
		sc.OpenMem(Wads.GetLumpFullName(lumpnum), buffer, lumplen);
		delete [] buffer;
		sc.SetCMode(true);
		// Namespace must be the first field because everything else depends on it.
		if (sc.CheckString("namespace"))
		{
			sc.MustGetToken('=');
			sc.MustGetToken(TK_StringConst);
			namespc = sc.String;
			switch(namespc)
			{
			case NAME_ZDoom:
				namespace_bits = Zd;
				break;
			case NAME_Strife:
				namespace_bits = St;
				break;
			default:
				sc.ScriptMessage("Unknown namespace %s. Ignoring dialogue lump.\n", sc.String);
				return false;
			}
			sc.MustGetToken(';');
		}
		else
		{
			sc.ScriptMessage("Map does not define a namespace.\n");
			return false;
		}

		while (sc.GetString())
		{
			if (sc.Compare("conversation"))
			{
				sc.MustGetToken('{');
				if (!ParseConversation()) return false;
			}
			else if (sc.Compare("include"))
			{
				sc.MustGetToken('=');
				sc.MustGetToken(TK_StringConst);
				LoadScriptFile(sc.String, true);
				sc.MustGetToken(';');
			}
			else
			{
				Skip();
			}
		}
		return true;
	}
コード例 #2
0
void cConversationManager::Init(const string &lacConversationFile)
{
	TiXmlDocument doc(lacConversationFile);
	bool lbLoadOk = doc.LoadFile();
	if ( lbLoadOk )
	{
	
		TiXmlHandle lpRoot( &doc ); // Buscamos el Handle del Documento
		TiXmlElement *lpElem; 
	//	TiXmlAttribute* pAttrib; // Con estos punteros accedemos Elementos y Atributos
		lpRoot = lpRoot.FirstChildElement().Element(); //Nos posicionamos en la etiqueta "Conversations"

	// Read all the Characters (los Personajes,no los Chars)
		lpElem = lpRoot.FirstChild( "Characters" ).FirstChild().Element();
		for (lpElem; lpElem; lpElem = lpElem->NextSiblingElement())
		{			
			cCharacterSpeaker lCharacter;
			//Character ID
			lpElem->QueryIntAttribute("speakerId", &lCharacter.miCharacterId );
			assert(lCharacter.miCharacterId >= 0);

			// Character Name
			const char * lacName = lpElem->GetText();

			assert(lacName);
			lCharacter.macCharacterName = lacName;

			// Add the character to the Vector
			mSpeakers.push_back( lCharacter );
		}

	// Read all the conversations 
		lpElem = lpRoot.FirstChild( "Conversation" ).Element();
		for( lpElem; lpElem; lpElem = lpElem->NextSiblingElement("Conversation"))
		{			
			ParseConversation( lpElem );
		}

	}
}