//=========================================== // Sprite::Sprite //=========================================== Sprite::Sprite(const XmlNode data) : Asset(internString("Sprite")), Entity(data.nthChild(0)), EntityAnimations(this, data.nthChild(1)), EntityTransformations(this, data.nthChild(2)) { XML_NODE_CHECK(data, Sprite); }
//=========================================== // PauseMenu::PauseMenu //=========================================== PauseMenu::PauseMenu(const XmlNode data) : Asset(internString("PauseMenu")), Entity(data.firstChild().firstChild().firstChild()), Menu(data.firstChild()) { try { AssetManager assetManager; XML_NODE_CHECK(data, PauseMenu); XmlNode node = data.nthChild(1); XML_NODE_CHECK(node, flare); XmlAttribute attr = node.firstAttribute(); XML_ATTR_CHECK(attr, ptr); long id = attr.getLong(); m_flare = boost::dynamic_pointer_cast<CSprite>(assetManager.getAssetPointer(id)); if (!m_flare) throw XmlException("Bad asset id for flare item", __FILE__, __LINE__); m_flare->addToWorld(); } catch (XmlException& e) { e.prepend("Error parsing XML for instance of class PauseMenu; "); throw; } }
//=========================================== // CreditsMenu::CreditsMenu //=========================================== CreditsMenu::CreditsMenu(const XmlNode data) : Asset(internString("CreditsMenu")), Entity(data.firstChild().firstChild().firstChild()), Menu(data.firstChild()) { try { AssetManager assetManager; XML_NODE_CHECK(data, CreditsMenu); XmlNode node = data.nthChild(1); XML_NODE_CHECK(node, font); XmlAttribute attr = node.firstAttribute(); XML_ATTR_CHECK(attr, ptr); long id = attr.getLong(); m_font = boost::dynamic_pointer_cast<Dodge::Font>(assetManager.getAssetPointer(id)); if (!m_font) throw XmlException("Bad font asset id", __FILE__, __LINE__); node = node.nextSibling(); XML_NODE_CHECK(node, fadeInTime); m_fadeInTime = node.getFloat(); } catch (XmlException& e) { e.prepend("Error parsing XML for instance of class CreditsMenu; "); throw; } init(); }
//=========================================== // PhysicalSprite::PhysicalSprite //=========================================== explicit PhysicalSprite(const XmlNode data) : Asset(internString("PhysicalSprite")), Entity(data.firstChild().firstChild()), Sprite(data.firstChild()), T_PHYSICS(this, data.nthChild(1)) { XML_NODE_CHECK(data, PhysicalSprite); }
//=========================================== // PhysicalSprite::assignData //=========================================== virtual void assignData(const XmlNode data) { if (data.isNull() || data.name() != "PhysicalSprite") return; XmlNode node = data.firstChild(); if (!node.isNull() && node.name() == "Sprite") { Sprite::assignData(node); node = node.nextSibling(); } if (!node.isNull() && node.name() == "EntityPhysics") { T_PHYSICS::assignData(data.nthChild(1)); } }
//=========================================== // Soil::Soil //=========================================== Soil::Soil(const XmlNode data) : Asset(internString("Soil")), Entity(data.firstChild().firstChild()), Item(data.firstChild()), Sprite(data.nthChild(1)) { try { XML_NODE_CHECK(data, Soil); } catch (XmlException& e) { e.prepend("Error parsing XML for instance of class Soil; "); throw; } init(); }
//=========================================== // TextEntity::TextEntity //=========================================== TextEntity::TextEntity(const XmlNode data) : Asset(internString("TextEntity")), Entity(data.firstChild()), m_renderer(Renderer::getInstance()), m_model(Renderer::TRIANGLES) { try { XML_NODE_CHECK(data, TextEntity); XmlNode node = data.nthChild(1); XML_NODE_CHECK(node, font); XmlAttribute attr = node.firstAttribute(); XML_ATTR_CHECK(attr, ptr); long fontId = attr.getLong(); AssetManager assetManager; pFont_t font = boost::dynamic_pointer_cast<Dodge::Font>(assetManager.getAssetPointer(fontId)); if (!font) throw XmlException("Bad asset id", __FILE__, __LINE__); m_font = font; node = node.nextSibling(); XML_NODE_CHECK(node, textSize); m_size = Vec2f(node.firstChild()); node = node.nextSibling(); XML_NODE_CHECK(node, text); setText(node.getString()); } catch (XmlException& e) { e.prepend("Error parsing XML for instance of class TextEntity; "); throw; } }
//=========================================== // TextEntity::assignData //=========================================== void TextEntity::assignData(const XmlNode data) { try { if (data.isNull() || data.name() != "TextEntity") return; XmlNode node = data.nthChild(1); if (!node.isNull() && node.name() == "font") { XmlAttribute attr = node.firstAttribute(); if (!attr.isNull() && attr.name() == "ptr") { long fontId = attr.getLong(); AssetManager assetManager; pFont_t font = boost::dynamic_pointer_cast<Dodge::Font>(assetManager.getAssetPointer(fontId)); if (!font) throw XmlException("Bad asset id", __FILE__, __LINE__); m_font = font; } node = node.nextSibling(); } if (!node.isNull() && node.name() == "textSize") { m_size = Vec2f(node.firstChild()); node = node.nextSibling(); } XML_NODE_CHECK(node, text); setText(node.getString()); } catch (XmlException& e) { e.prepend("Error parsing XML for instance of class TextEntity; "); throw; } }