예제 #1
0
bool SaveGameEntry::load(const std::string& filename)
{
	CharacterCoreReader reader;
	CharacterCoreData data;
	if (!reader.readCharacterCore(filename.c_str(), data))
	{
		g_logger->logError("SaveGameEntry", "Could not load data from file: " + std::string(filename));
		return false;
	}

	m_filename = filename;

	// format date saved
	char buff[20];
	strftime(buff, 20, "%Y-%m-%d %H:%M:%S", localtime(&data.dateSaved));
	m_dateSaved.setString(string(buff));
	m_name.setString(data.saveGameName);

	// format time played
	int secondsPlayed = static_cast<int>(data.timePlayed.asSeconds());
	int hoursPlayed = secondsPlayed / 3600;
	int minutesPlayed = (secondsPlayed / 60) % 60;
	secondsPlayed = (secondsPlayed % 60);
	string stringHours = hoursPlayed > 0 ? to_string(hoursPlayed) + " h - " : "";
	string stringMinutes = minutesPlayed > 0 ? to_string(minutesPlayed) + " m - " : "";
	string stringSeconds = to_string(secondsPlayed) + " s";
	string formattedTime = stringHours + stringMinutes + stringSeconds;
	m_timePlayed.setString(formattedTime);
	return true;
}
예제 #2
0
bool CharacterCore::load(const std::string& fileName) {
	CharacterCoreReader reader;

	if (!reader.readCharacterCore(fileName, m_data)) {
		return false;
	}

	// measuring the time played with this save.
	m_stopwatch.restart();
	reloadAttributes();
	loadQuests();
	return true;
}