Example #1
0
		void LocalHighscores::parse() {
			ARK2D::getLog()->v("Parsing LocalHighscores");

			string s;
			#if defined(ARK2D_ANDROID)  
				if (m_threaded && m_data != NULL) { 
					s = string((char*) m_data);
				} else if (StringUtil::file_exists(m_filename.c_str())) {
					s = StringUtil::file_get_contents(m_filename.c_str());
				} else {
					s = string((char*) m_data);
				}
			#else

				if (m_data != NULL) {
					s = string((char*) m_data);
				} else {
					s = StringUtil::file_get_contents(m_filename.c_str());
				}

			#endif
			ARK2D::getLog()->v(StringUtil::append("JSON String is: ", s));

			if (s.length() == 0) {
				ARK2D::getLog()->e("JSON String was empty. Huh?");
				return;
			} 

			if (s == "[]") { 
				ARK2D::getLog()->v("Local highscores were blank. That's fine. ");
			} else {
	 
				JSONNode* arr = libJSON::Parse(s);
				if (arr == NULL) {
					ARK2D::getLog()->e("Could not parse json");
					return;
				}
				for(unsigned int i = 0; i < arr->NodeSize(); i++) { 
					JSONNode* item = arr->NodeAt(i);

					LocalHighscoreItem* it = new LocalHighscoreItem();
					it->name = item->GetNode("name")->NodeAsString();
					it->score = item->GetNode("score")->NodeAsInt();
	 
					//StringUtil::str_replace("\"", "\\\"", it->name); 

					m_items.push_back(it);
				}
				ARK2D::getLog()->i("loaded local highscores");

				// fix memory leaks
				ARK2D::getLog()->i("Freeing up memory.");
				libJSON::Delete(arr);

			}

			this->sort();
		}