Exemplo n.º 1
0
Float EvaluateIf(Script * script)
{
	if (script->VerifyArguments(2) == true)
	{
		Word * term = script->GetNextWord();
		Word * subscriptID = script->GetNextOriginalWord();

		if ((bool)term->value == true)
		{
			Script * subscript = script->GetSubscript(subscriptID->value);
			if (subscript != NULL)
			{
				return subscript->ActivateScript(false);
			}
		}
		else
		{
			Word * nextWord = script->GetNextWord();
			if ((nextWord != NULL) && (nextWord->type == ACTION) && (nextWord->value == KEYWORD_ELSE))
			{
				return EvaluateElse(script);
			}
		}
	}
	return false;
}
Exemplo n.º 2
0
Float EvaluateElse(Script * script)
{
	if (script->VerifyArguments(1) == true)
	{
		Word * subscriptID = script->GetNextOriginalWord();
		Script * subscript = script->GetSubscript(subscriptID->value);
		if (subscript != NULL)
		{
			return subscript->ActivateScript(false);
		}
	}
	return false;
}
Exemplo n.º 3
0
Float ForLoop(Script * script)
{
	if (script->VerifyArguments(2) == true)
	{
		Word * amount = script->GetNextWord();
		Word * subscriptID = script->GetNextOriginalWord();
		Script * subscript = script->GetSubscript(subscriptID->value);

		if (subscript != NULL)
		{
			for (uint32 i = 0; i < (int32)amount->value; i++)
			{
				subscript->ActivateScript(false);
			}
		}
		return true;
	}
	return false;
}
Exemplo n.º 4
0
bool LoadAnimationData()
{
	if (AnimationData == NULL)
	{
		FILE * file = fopen("Assets\\XML\\animation.xml", "r");

		if (file == NULL)
		{
			return false;
		}

		fseek(file, 0, SEEK_END);
		uint32 fileSize = ftell(file);
		fseek(file, 0, SEEK_SET);

		char * fileData = new char[fileSize];

		fread(fileData, fileSize, 1, file);

		fclose(file);

		TiXmlDocument AnimXML;
		AnimXML.Parse(fileData);

		TiXmlNode * node = AnimXML.FirstChild("AnimationData");
		TiXmlElement * element = node->ToElement();

		node = element->FirstChild();
		element = node->ToElement();

		TiXmlElement * lastElement = element;
		for (uint32 i = 0;; i++)
		{
			if (lastElement == NULL)
			{
				if (i > 0)
				{
					animDataSize = i;
					AnimationData = new Animation[animDataSize];
					break;
				}
				else
				{
					return false;
				}
			}
			lastElement = lastElement->NextSiblingElement();
		}

		node = element->FirstChild();
		TiXmlElement * secondaryElement = node->ToElement();

		for (uint32 i = 0; i < animDataSize; i++)
		{
			AnimationData[i].SetName(element->Attribute("Name"));

			if ((secondaryElement != NULL) && (secondaryElement->GetText() != NULL))
			{
				const char * text = secondaryElement->GetText();
				AnimationData[i].sprite = new Sprite;
				AnimationData[i].sprite->LoadSprite(text);
			}
			secondaryElement = secondaryElement->NextSiblingElement();

			if ((secondaryElement != NULL) && (secondaryElement->GetText() != NULL))
			{
				const char * text = secondaryElement->GetText();
				Float word = LookupWord(text, LOOKUP_VALUE);
				if (word == NOT_FOUND)
				{
					word = atof(text);
				}

				AnimationData[i].SetUInt32Value(ANIM_VAR_DURATION, word);
			}
			secondaryElement = secondaryElement->NextSiblingElement();

			if ((secondaryElement != NULL) && (secondaryElement->GetText() != NULL))
			{
				const char * text = secondaryElement->GetText();

				Script onInit;
				onInit.LoadScript(text, &AnimationData[i]);
				onInit.ActivateScript(true);
			}
			secondaryElement = secondaryElement->NextSiblingElement();

			if ((secondaryElement != NULL) && (secondaryElement->GetText() != NULL))
			{
				const char * text = secondaryElement->GetText();
				AnimationData[i].onAdd.LoadScript(text, &AnimationData[i]);
			}
			secondaryElement = secondaryElement->NextSiblingElement();

			if ((secondaryElement != NULL) && (secondaryElement->GetText() != NULL))
			{
				const char * text = secondaryElement->GetText();
				AnimationData[i].script.LoadScript(text, &AnimationData[i]);
			}
			secondaryElement = secondaryElement->NextSiblingElement();

			element = element->NextSiblingElement();
			if (element != NULL)
			{
				node = element->FirstChild();
				secondaryElement = node->ToElement();
			}
			else
			{
				break;
			}
		}

		AnimXML.Clear();
		Delete(fileData);

		return true;
	}
	return false;
}