Example #1
0
//===========================================
// GameSettings::GameSettings
//===========================================
GameSettings::GameSettings(const XmlNode data)
   : Asset(internString("GameSettings")) {

   try {
      XML_NODE_CHECK(data, GameSettings);

      XmlNode node = data.firstChild();
      XML_NODE_CHECK(node, soundTrack);
      musicTrack = gGetWorkingDir() + "/" + node.getString();

      node = node.nextSibling();
      XML_NODE_CHECK(node, bgColour);
      bgColour = Colour(node.firstChild());

      node = node.nextSibling();
      XML_NODE_CHECK(node, minefieldBoundary);
      minefieldBoundary = Range(node.firstChild());

      node = node.nextSibling();
      XML_NODE_CHECK(node, tileSize);
      tileSize = Vec2f(node.firstChild());

      node = node.nextSibling();
      XML_NODE_CHECK(node, startMenuId);
      startMenuId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, pauseMenuId);
      pauseMenuId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, gameOptionsMenuId);
      gameOptionsMenuId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, playerId);
      playerId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, exitId);
      exitId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, numericTileProtoId);
      numericTileProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, mineProtoId);
      mineProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, soilProtoId);
      soilProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, coinProtoId);
      coinProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, nuggetProtoId);
      nuggetProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, throwableProtoId);
      throwableProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, zombieProtoId);
      zombieProtoId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, timeCounterId);
      timeCounterId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, scoreCounterId);
      scoreCounterId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, txtRestartId);
      txtRestartId = node.getLong();

      node = node.nextSibling();
      XML_NODE_CHECK(node, gameModes);
      parseGameModes(node);
   }
   catch (XmlException& e) {
      e.prepend("Error loading game settings; ");
      throw;
   }
}