message: Use attributesToDictionary to load view parameters
  Restrict attribute scope to following loops.
diff: @@ -452,24 +452,21 @@ void TileMap::serialize(NAS2D::Xml::XmlElement* element)
  void TileMap::deserialize(NAS2D::Xml::XmlElement* element)
  {
  // VIEW PARAMETERS
  - int view_x = 0, view_y = 0, view_depth = 0;
  auto* view_parameters = element->firstChildElement("view_parameters");
  - auto* attribute = view_parameters->firstAttribute();
  - while (attribute)
  - {
  - if (attribute->name() == "viewlocation_x") { attribute->queryIntValue(view_x); }
  - else if (attribute->name() == "viewlocation_y") { attribute->queryIntValue(view_y); }
  - else if (attribute->name() == "currentdepth") { attribute->queryIntValue(view_depth); }
  - attribute = attribute->next();
  - }
  + const auto dictionary = NAS2D::attributesToDictionary(*view_parameters);
  +
  + const auto view_x = dictionary.get<int>("viewlocation_x");
  + const auto view_y = dictionary.get<int>("viewlocation_y");
  + const auto view_depth = dictionary.get<int>("currentdepth");
  mapViewLocation({view_x, view_y});
  currentDepth(view_depth);
  +
  for (auto* mineElement = element->firstChildElement("mines")->firstChildElement("mine"); mineElement; mineElement = mineElement->nextSiblingElement())
  {
  int x = 0, y = 0;
  - attribute = mineElement->toElement()->firstAttribute();
  + auto* attribute = mineElement->toElement()->firstAttribute();
  while (attribute)
  {
  if (attribute->name() == "x") { attribute->queryIntValue(x); }
  @@ -495,7 +492,7 @@ void TileMap::deserialize(NAS2D::Xml::XmlElement* element)
  {
  int x = 0, y = 0, depth = 0, index = 0;
  - attribute = tileElement->toElement()->firstAttribute();
  + auto* attribute = tileElement->toElement()->firstAttribute();
  while (attribute)
  {
  if (attribute->name() == "x") { attribute->queryIntValue(x); }
  