From 9ba1cd15e7f902cae705ff22451e4f76ad0d71ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 22 Sep 2015 01:06:45 +0200 Subject: GH-1217 add simple instance play time tracking Not reliable in the face of crashes... but what is? --- logic/BaseInstance.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'logic/BaseInstance.cpp') diff --git a/logic/BaseInstance.cpp b/logic/BaseInstance.cpp index 3e02235e..b0235b47 100644 --- a/logic/BaseInstance.cpp +++ b/logic/BaseInstance.cpp @@ -38,6 +38,7 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s connect(ENV.icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString))); m_settings->registerSetting("notes", ""); m_settings->registerSetting("lastLaunchTime", 0); + m_settings->registerSetting("totalTimePlayed", 0); // Custom Commands auto commandSetting = m_settings->registerSetting({"OverrideCommands","OverrideLaunchCmd"}, false); @@ -93,9 +94,31 @@ bool BaseInstance::isRunning() const void BaseInstance::setRunning(bool running) { + if(running && !m_isRunning) + { + m_timeStarted = QDateTime::currentDateTime(); + } + else if(!running && m_isRunning) + { + qint64 current = settings()->get("totalTimePlayed").toLongLong(); + QDateTime timeEnded = QDateTime::currentDateTime(); + settings()->set("totalTimePlayed", current + m_timeStarted.secsTo(timeEnded)); + emit propertiesChanged(this); + } m_isRunning = running; } +int64_t BaseInstance::totalTimePlayed() +{ + qint64 current = settings()->get("totalTimePlayed").toLongLong(); + if(m_isRunning) + { + QDateTime timeNow = QDateTime::currentDateTime(); + return current + m_timeStarted.secsTo(timeNow); + } + return current; +} + QString BaseInstance::instanceType() const { return m_settings->get("InstanceType").toString(); -- cgit v1.2.3