bool CIwMapGame::GetLocation(s3eLocation& location) { uint64 timer = s3eTimerGetMs(); if (g_lastGpsLookup == 0 || (timer - g_lastGpsLookup) > 500) { if (S3E_RESULT_SUCCESS != s3eLocationGet(&location)) { return false; } s3eFilePrintf(g_pFile, "%lld\t%lld\t%4.9f\t%4.9f\t%4.9f\t%4.9f\t%4.9f\r\n", timer, location.m_TimeStampUTC, location.m_Longitude, location.m_Latitude, location.m_Altitude, location.m_HorizontalAccuracy, location.m_VerticalAccuracy); s3eFileFlush(g_pFile); if (g_bTrackingDistance) { g_distanceTravelled += LiveMaps::CalculateDistance(g_lastLocation, location); } g_lastLocation = location; g_lastGpsLookup = timer; return true; } else { if (g_lastGpsLookup) { location = g_lastLocation; return true; } return false; } }
int CIwGameXmlNode::SaveAttributes(CIwGameFile* file) { for (CIwGameXmlAttributeList::iterator i = Attributes.begin(); i != Attributes.end(); ++i) { int err = s3eFilePrintf(file->getFileHandle(), " %s=\"%s\"", (*i)->Name.c_str(), (*i)->Value.c_str()); if (err < 0) return err; } return 0; }
int CIwGameXmlNode::Save(const char* filename) { // Dont save root node if (Name == ".") { CIwGameXmlNode* node = GetFirstNode(); if (node == NULL) return -1; return node->Save(filename); } CIwGameFile file; if (file.Open(filename, "wb", true)) { s3eFilePrintf(file.getFileHandle(), "<?xml version=\"1.0\"?>\n"); int err = SaveTree(&file); if (err < 0) return err; } else return -1; return 0; }
int CIwGameXmlNode::SaveTree(CIwGameFile* file, int level) { int err = 0; for (int t = 0; t < level; t++) { err = s3eFilePrintf(file->getFileHandle(), "\t"); if (err < 0) return err; } err = s3eFilePrintf(file->getFileHandle(), "<%s", Name.c_str()); if (err < 0) return err; err = SaveAttributes(file); if (err < 0) return err; if (HasValue) { if (Value.GetLength() == 0) { err = s3eFilePrintf(file->getFileHandle(), " />\n"); if (err < 0) return err; } else { err = s3eFilePrintf(file->getFileHandle(), ">"); if (err < 0) return err; err = s3eFilePrintf(file->getFileHandle(), "%s", Value.c_str()); if (err < 0) return err; } err = s3eFilePrintf(file->getFileHandle(), "</%s>\n", Name.c_str()); if (err < 0) return err; } else { if (Children.size() == 0) { err = s3eFilePrintf(file->getFileHandle(), " />\n"); if (err < 0) return err; } else { err = s3eFilePrintf(file->getFileHandle(), ">\n"); if (err < 0) return err; for (CIwGameXmlNodeList::iterator i = Children.begin(); i != Children.end(); ++i) { err = (*i)->SaveTree(file, level + 1); if (err < 0) return err; } for (int t = 0; t < level; t++) { err = s3eFilePrintf(file->getFileHandle(), "\t"); if (err < 0) return err; } err = s3eFilePrintf(file->getFileHandle(), "</%s>\n", Name.c_str()); if (err < 0) return err; } } return 0; }