summaryrefslogtreecommitdiffstats
path: root/libraries/logic/BaseInstance.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/logic/BaseInstance.h')
-rw-r--r--libraries/logic/BaseInstance.h243
1 files changed, 0 insertions, 243 deletions
diff --git a/libraries/logic/BaseInstance.h b/libraries/logic/BaseInstance.h
deleted file mode 100644
index 5e587c48..00000000
--- a/libraries/logic/BaseInstance.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/* Copyright 2013-2015 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <QObject>
-#include <QDateTime>
-#include <QSet>
-#include <QProcess>
-
-#include "settings/SettingsObject.h"
-
-#include "settings/INIFile.h"
-#include "BaseVersionList.h"
-#include "minecraft/auth/MojangAccount.h"
-#include "launch/MessageLevel.h"
-#include "pathmatcher/IPathMatcher.h"
-
-#include "multimc_logic_export.h"
-
-class QDir;
-class Task;
-class LaunchTask;
-class BaseInstance;
-
-// pointer for lazy people
-typedef std::shared_ptr<BaseInstance> InstancePtr;
-
-/*!
- * \brief Base class for instances.
- * This class implements many functions that are common between instances and
- * provides a standard interface for all instances.
- *
- * To create a new instance type, create a new class inheriting from this class
- * and implement the pure virtual functions.
- */
-class MULTIMC_LOGIC_EXPORT BaseInstance : public QObject, public std::enable_shared_from_this<BaseInstance>
-{
- Q_OBJECT
-protected:
- /// no-touchy!
- BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString &rootDir);
-
-public:
- /// virtual destructor to make sure the destruction is COMPLETE
- virtual ~BaseInstance() {};
-
- virtual void copy(const QDir &newDir) {}
-
- virtual void init() = 0;
-
- /// nuke thoroughly - deletes the instance contents, notifies the list/model which is
- /// responsible of cleaning up the husk
- void nuke();
-
- /// The instance's ID. The ID SHALL be determined by MMC internally. The ID IS guaranteed to
- /// be unique.
- virtual QString id() const;
-
- void setRunning(bool running);
- bool isRunning() const;
- int64_t totalTimePlayed() const;
- void resetTimePlayed();
-
- /// get the type of this instance
- QString instanceType() const;
-
- /// Path to the instance's root directory.
- QString instanceRoot() const;
-
- QString name() const;
- void setName(QString val);
-
- /// Value used for instance window titles
- QString windowTitle() const;
-
- QString iconKey() const;
- void setIconKey(QString val);
-
- QString notes() const;
- void setNotes(QString val);
-
- QString group() const;
- void setGroupInitial(QString val);
- void setGroupPost(QString val);
-
- QString getPreLaunchCommand();
- QString getPostExitCommand();
- QString getWrapperCommand();
-
- /// guess log level from a line of game log
- virtual MessageLevel::Enum guessLevel(const QString &line, MessageLevel::Enum level)
- {
- return level;
- };
-
- virtual QStringList extraArguments() const;
-
- virtual QString intendedVersionId() const = 0;
- virtual bool setIntendedVersionId(QString version) = 0;
-
- /*!
- * The instance's current version.
- * This value represents the instance's current version. If this value is
- * different from the intendedVersion, the instance should be updated.
- * \warning Don't change this value unless you know what you're doing.
- */
- virtual QString currentVersionId() const = 0;
-
- /*!
- * Whether or not 'the game' should be downloaded when the instance is launched.
- */
- virtual bool shouldUpdate() const = 0;
- virtual void setShouldUpdate(bool val) = 0;
-
- /// Traits. Normally inside the version, depends on instance implementation.
- virtual QSet <QString> traits() = 0;
-
- /**
- * Gets the time that the instance was last launched.
- * Stored in milliseconds since epoch.
- */
- qint64 lastLaunch() const;
- /// Sets the last launched time to 'val' milliseconds since epoch
- void setLastLaunch(qint64 val = QDateTime::currentMSecsSinceEpoch());
-
- InstancePtr getSharedPtr();
-
- /*!
- * \brief Gets a pointer to this instance's version list.
- * \return A pointer to the available version list for this instance.
- */
- virtual std::shared_ptr<BaseVersionList> versionList() const = 0;
-
- /*!
- * \brief Gets this instance's settings object.
- * This settings object stores instance-specific settings.
- * \return A pointer to this instance's settings object.
- */
- virtual SettingsObjectPtr settings() const;
-
- /// returns a valid update task
- virtual std::shared_ptr<Task> createUpdateTask() = 0;
-
- /// returns a valid launcher (task container)
- virtual std::shared_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account) = 0;
-
- /*!
- * Returns a task that should be done right before launch
- * This task should do any extra preparations needed
- */
- virtual std::shared_ptr<Task> createJarModdingTask() = 0;
-
- /*!
- * Create envrironment variables for running the instance
- */
- virtual QProcessEnvironment createEnvironment() = 0;
-
- /*!
- * Returns a matcher that can maps relative paths within the instance to whether they are 'log files'
- */
- virtual IPathMatcher::Ptr getLogFileMatcher() = 0;
-
- /*!
- * Returns the root folder to use for looking up log files
- */
- virtual QString getLogFileRoot() = 0;
-
- /*!
- * does any necessary cleanups after the instance finishes. also runs before\
- * TODO: turn into a task that can run asynchronously
- */
- virtual void cleanupAfterRun() = 0;
-
- virtual QString getStatusbarDescription() = 0;
-
- /// FIXME: this really should be elsewhere...
- virtual QString instanceConfigFolder() const = 0;
-
- /// get variables this instance exports
- virtual QMap<QString, QString> getVariables() const = 0;
-
- virtual QString typeName() const = 0;
-
- enum InstanceFlag
- {
- VersionBrokenFlag = 0x01,
- UpdateAvailable = 0x02
- };
- Q_DECLARE_FLAGS(InstanceFlags, InstanceFlag)
- InstanceFlags flags() const;
- void setFlags(const InstanceFlags &flags);
- void setFlag(const InstanceFlag flag);
- void unsetFlag(const InstanceFlag flag);
-
- bool canLaunch() const;
- virtual bool canExport() const = 0;
-
- virtual bool reload();
-
-signals:
- /*!
- * \brief Signal emitted when properties relevant to the instance view change
- */
- void propertiesChanged(BaseInstance *inst);
- /*!
- * \brief Signal emitted when groups are affected in any way
- */
- void groupChanged();
- /*!
- * \brief The instance just got nuked. Hurray!
- */
- void nuked(BaseInstance *inst);
-
- void flagsChanged();
-
-protected slots:
- void iconUpdated(QString key);
-
-protected:
- QString m_rootDir;
- QString m_group;
- SettingsObjectPtr m_settings;
- InstanceFlags m_flags;
- bool m_isRunning = false;
- QDateTime m_timeStarted;
-};
-
-Q_DECLARE_METATYPE(std::shared_ptr<BaseInstance>)
-Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
-Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)