diff options
author | Andrew <forkk@forkk.net> | 2013-05-03 14:41:37 -0500 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-05-03 14:41:37 -0500 |
commit | 055198303c7bf15f456687838c37650871596946 (patch) | |
tree | 6c745d0d4cf3f9da25f6552138a07870544dd642 /libmultimc/src/minecraftversion.cpp | |
parent | 1626fa013c86dc9f30254f57b3518211f6d0c65a (diff) | |
download | MultiMC-055198303c7bf15f456687838c37650871596946.tar MultiMC-055198303c7bf15f456687838c37650871596946.tar.gz MultiMC-055198303c7bf15f456687838c37650871596946.tar.lz MultiMC-055198303c7bf15f456687838c37650871596946.tar.xz MultiMC-055198303c7bf15f456687838c37650871596946.zip |
Removed old plugin system and implemented some version list stuff.
Diffstat (limited to 'libmultimc/src/minecraftversion.cpp')
-rw-r--r-- | libmultimc/src/minecraftversion.cpp | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/libmultimc/src/minecraftversion.cpp b/libmultimc/src/minecraftversion.cpp new file mode 100644 index 00000000..896c2e18 --- /dev/null +++ b/libmultimc/src/minecraftversion.cpp @@ -0,0 +1,142 @@ +/* Copyright 2013 Andrew Okin + * + * 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. + */ + +#include "minecraftversion.h" + +MinecraftVersion::MinecraftVersion(QString descriptor, + QString name, + qint64 timestamp, + QString dlUrl, + QString etag, + InstVersionList *parent) : + InstVersion(descriptor, name, timestamp, parent), m_dlUrl(dlUrl), m_etag(etag) +{ + m_linkedVersion = NULL; +} + +MinecraftVersion::MinecraftVersion(const MinecraftVersion *linkedVersion) : + InstVersion(linkedVersion->descriptor(), linkedVersion->name(), linkedVersion->timestamp(), + linkedVersion->versionList()) +{ + m_linkedVersion = (MinecraftVersion *)linkedVersion; +} + +MinecraftVersion::MinecraftVersion(const MinecraftVersion &other, QObject *parent) : + InstVersion(other, parent) +{ + if (other.m_linkedVersion) + m_linkedVersion = other.m_linkedVersion; + else + { + m_dlUrl = other.downloadURL(); + m_etag = other.etag(); + } +} + +QString MinecraftVersion::descriptor() const +{ + return m_descriptor; +} + +QString MinecraftVersion::name() const +{ + return m_name; +} + +QString MinecraftVersion::typeName() const +{ + if (m_linkedVersion) + return m_linkedVersion->typeName(); + + switch (versionType()) + { + case OldSnapshot: + return "Old Snapshot"; + + case Stable: + return "Stable"; + + case CurrentStable: + return "Current Stable"; + + case Snapshot: + return "Snapshot"; + + case MCNostalgia: + return "MCNostalgia"; + + case MetaCustom: + // Not really sure what this does, but it was in the code for v4, + // so it must be important... Right? + return "Custom Meta Version"; + + case MetaLatestSnapshot: + return "Latest Snapshot"; + + case MetaLatestStable: + return "Latest Stable"; + + default: + return QString("Unknown Type %1").arg(versionType()); + } +} + +qint64 MinecraftVersion::timestamp() const +{ + return m_timestamp; +} + +MinecraftVersion::VersionType MinecraftVersion::versionType() const +{ + return m_type; +} + +void MinecraftVersion::setVersionType(MinecraftVersion::VersionType typeName) +{ + m_type = typeName; +} + +QString MinecraftVersion::downloadURL() const +{ + return m_dlUrl; +} + +QString MinecraftVersion::etag() const +{ + return m_etag; +} + +bool MinecraftVersion::isMeta() const +{ + return versionType() == MetaCustom || + versionType() == MetaLatestSnapshot || + versionType() == MetaLatestStable; +} + +InstVersion *MinecraftVersion::copyVersion(InstVersionList *newParent) const +{ + if (isMeta()) + { + MinecraftVersion *version = new MinecraftVersion((MinecraftVersion *)m_linkedVersion); + return version; + } + else + { + MinecraftVersion *version = new MinecraftVersion( + descriptor(), name(), timestamp(), downloadURL(), etag(), newParent); + version->setVersionType(versionType()); + return version; + } +} |