GH-338, GH-513, GH-700 Unify edit instance with console window

* The resulting instance window can be closed at any point.
* Main window is kept open and running instances are marked with a badge.
* Multiple instances can now run from the same MultiMC - it's even more **multi** now.
* MultiMC can be entirely closed, keeping Minecraft(s) running.
This commit is contained in:
Petr Mrázek
2016-08-06 15:39:29 +02:00
parent c44d41ee9b
commit bc6d1b5304
29 changed files with 630 additions and 351 deletions

View File

@ -92,11 +92,14 @@ bool BaseInstance::isRunning() const
void BaseInstance::setRunning(bool running)
{
if(running && !m_isRunning)
if(running == m_isRunning)
return;
if(running)
{
m_timeStarted = QDateTime::currentDateTime();
}
else if(!running && m_isRunning)
else
{
qint64 current = settings()->get("totalTimePlayed").toLongLong();
QDateTime timeEnded = QDateTime::currentDateTime();
@ -104,6 +107,8 @@ void BaseInstance::setRunning(bool running)
emit propertiesChanged(this);
}
m_isRunning = running;
emit runningStatusChanged(running);
}
int64_t BaseInstance::totalTimePlayed() const
@ -179,7 +184,7 @@ void BaseInstance::unsetFlag(const BaseInstance::InstanceFlag flag)
bool BaseInstance::canLaunch() const
{
return !(flags() & VersionBrokenFlag);
return (!(flags() & VersionBrokenFlag)) && (!isRunning());
}
bool BaseInstance::reload()
@ -268,3 +273,8 @@ QStringList BaseInstance::extraArguments() const
{
return Commandline::splitArgs(settings()->get("JvmArgs").toString());
}
std::shared_ptr<LaunchTask> BaseInstance::getLaunchTask()
{
return m_launchProcess;
}