예제 #1
0
	//Wirtualna metoda ³aduj¹ca dane z xml wywo³ywana przez implementacje klas potomnych
	bool CPhysicalTemplate::Load(CXml &xml)
	{
		//nazwa pliku xml
		m_templ_filename = xml.GetFilename();

		//typ obiektu
		if (xml_node<> *node = xml.GetRootNode())
			m_templ_type = xml.GetString(node, "type");

		//nazwa "gatunku" obiektu (np. robot, human, gun, etc.)
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "genre"))
			m_templ_genre = xml.GetWString(node, "genre");

		//zakres promienia detekcji kolizji
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "radius"))
		{
			m_templ_circle_radius = xml.GetFloat(node, "circle_radius");
		}

		//wektor przechowuj¹cy rozmiar obszaru prostok¹tnego
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "rect_size"))
		{
			m_templ_rect_size.x = xml.GetFloat(node, "rect_size_x");
			m_templ_rect_size.y = xml.GetFloat(node, "rect_size_y");
		}

		//skala obiektu (body and head)
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "scale"))
		{
			m_templ_scale_body = xml.GetFloat(node, "scale_body");
			m_templ_scale_head = xml.GetFloat(node, "scale_head");
		}

		//wartoœæ pu³apu obiektu wzglêdem pod³o¿a
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "altitude"))
		{
			m_templ_altitude = xml.GetFloat(node, "altitude");
		}

		//pola konfiguracyjne - potrzebne przy podejmowaniu decyzji - wygl¹d obiektu
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "physical_config"))
		{
			m_templ_use_displayable_body = xml.GetBool(node, "use_displayable_body");
			m_templ_use_shadow_body = xml.GetBool(node, "use_shadow_body");
			m_templ_use_displayable_head = xml.GetBool(node, "use_displayable_head");
			m_templ_use_shadow_head = xml.GetBool(node, "use_shadow_head");
		}

		//nazwy dla animacji (body i head) - (docelowo ³adowane s¹ ca³e zestawy - tu tylko do testów)
		if (xml_node<> *node = xml.GetChild(xml.GetRootNode(), "unit_animation"))
		{
			m_templ_animation_name_body = xml.GetString(node, "animation_body");
			m_templ_animation_name_head = xml.GetString(node, "animation_head");
		}

		//wszystkie podklasy sprawdzaj¹, czy xml jest poprawny
		return true;
	}
예제 #2
0
	//Metoda ³aduj¹ca dane
	bool CBulletTemplate::Load(CXml &xml)
	{
		if (!CPhysicalTemplate::Load(xml)) return false;

		//sprawdzamy, czy xml zawiera informacjê, ¿e jest to bullet
		if (xml.GetString(xml.GetRootNode(), "type") != "bullet")
			return false;

		//plik xml pocisku przypomina plik physical'a
		//ewentualne ³adowanie danych generycznych pocisku...


		//if (xml_node<>*	node = xml.GetChild(xml.GetRootNode(), "zabawa z pociskiem..."))

		//mMinDamage = xml.GetFloat( "damage", "min" );
		//mMaxDamage = xml.GetFloat( "damage", "max" );

		//node = xml.GetChild(0, "anim");
		//if (node)
		  //  mAnimation = gAnimationManager.GetAnimation(xml.GetString(node,"name"));

		//for (node=xml.GetChild(0,"image"); node; node=xml.GetSibl(node,"image") )
		//	mImages.push_back( xml.GetString(node,"filename") );

		//for (node=xml.GetChild(0,"effect"); node; node=xml.GetSibl(node,"effect") )
		//	mEffects.push_back( xml.GetString(node,"name") );

		//for (node=xml.GetChild(0,"destroyEffect"); node; node=xml.GetSibl(node,"destroyEffect") )
		//	mDestroyEffects.push_back( xml.GetString(node,"name") );

		return true;
	}
예제 #3
0
	//Wirtualna metoda ³aduj¹ca dane z xml ³aduje cechy CMonster
	bool CMonsterTemplate::Load(CXml &xml)
	{
		//sprawdzamy, czy xml zawiera informacjê, ¿e jest potwór
		if (xml.GetString(xml.GetRootNode(), "type") != "monster")
			return false;

		//sprawdzamy, czy mo¿na za³adowaæ dane z klasy bazowej
		if (!CActorTemplate::Load(xml))
			return false;

		//gdyby w klasie CMonster by³y jakieœ pola
		//to tutaj, w klasie jej fabryki
		//nale¿a³oby wczytaæ te pola z pliku xml,
		//aby fabryka by³a kompletna

		return true;
	}