Make 1.6+ work with new instance format.

This commit is contained in:
Petr Mrázek 2014-05-11 12:37:21 +02:00
parent 92abe4c603
commit 69c3e7111f
29 changed files with 951 additions and 562 deletions

View file

@ -1,29 +1,26 @@
#include "MinecraftVersion.h"
#include "VersionFinal.h"
#include "VersionBuildError.h"
#include "VersionBuilder.h"
bool MinecraftVersion::usesLegacyLauncher()
{
return m_traits.contains("legacyLaunch") || m_traits.contains("aplhaLaunch");
}
QString MinecraftVersion::descriptor()
{
return m_descriptor;
}
QString MinecraftVersion::name()
{
return m_name;
}
QString MinecraftVersion::typeString() const
{
if (is_latest && is_snapshot)
{
return QObject::tr("Latest snapshot");
}
else if (is_latest)
{
return QObject::tr("Latest release");
}
else if (is_snapshot)
if (is_snapshot)
{
return QObject::tr("Snapshot");
}
@ -32,22 +29,41 @@ QString MinecraftVersion::typeString() const
return QObject::tr("Regular release");
}
}
bool MinecraftVersion::hasJarMods()
{
return false;
}
bool MinecraftVersion::isVanilla()
bool MinecraftVersion::isMinecraftVersion()
{
return true;
}
// 1. assume the local file is good. load, check. If it's good, apply.
// 2. if discrepancies are found, fall out and fail (impossible to apply incomplete version).
void MinecraftVersion::applyFileTo(VersionFinal *version)
{
QFileInfo versionFile(QString("versions/%1/%1.json").arg(m_descriptor));
auto versionObj = VersionBuilder::parseJsonFile(versionFile, false, false);
versionObj->applyTo(version);
}
void MinecraftVersion::applyTo(VersionFinal *version)
{
// FIXME: make this work.
if(m_versionSource != Builtin)
// do we have this one cached?
if (m_versionSource == Local)
{
applyFileTo(version);
return;
}
// if not builtin, do not proceed any further.
if (m_versionSource != Builtin)
{
throw VersionIncomplete(QObject::tr(
"Minecraft version %1 could not be applied: version files are missing.").arg(m_descriptor));
}
if (!m_descriptor.isNull())
{
version->id = m_descriptor;
@ -81,15 +97,35 @@ void MinecraftVersion::applyTo(VersionFinal *version)
}
version->traits.unite(m_traits);
}
int MinecraftVersion::getOrder()
{
return order;
}
void MinecraftVersion::setOrder(int order)
{
this->order = order;
}
QList<JarmodPtr> MinecraftVersion::getJarMods()
{
return QList<JarmodPtr>();
}
QString MinecraftVersion::getPatchName()
{
return "Minecraft";
}
QString MinecraftVersion::getPatchVersion()
{
return m_descriptor;
}
QString MinecraftVersion::getPatchID()
{
return "net.minecraft";
}
QString MinecraftVersion::getPatchFilename()
{
return QString();
}