refactor: cleanup ModLoaderType

This commit is contained in:
Sefa Eyeoglu 2022-04-14 21:55:03 +02:00
parent 18ac109e5a
commit 9fb5674233
No known key found for this signature in database
GPG Key ID: C10411294912A422
5 changed files with 31 additions and 35 deletions

View File

@ -985,5 +985,5 @@ ModAPI::ModLoaderType PackProfile::getModLoader()
{
return ModAPI::Quilt;
}
return ModAPI::Any;
return ModAPI::Unspecified;
}

View File

@ -15,7 +15,7 @@ class ModAPI {
virtual ~ModAPI() = default;
// https://docs.curseforge.com/?http#tocS_ModLoaderType
enum ModLoaderType { Any = 0, Forge = 1, Cauldron = 2, LiteLoader = 3, Fabric = 4, Quilt = 5 };
enum ModLoaderType { Unspecified = 0, Forge = 1, Cauldron = 2, LiteLoader = 3, Fabric = 4, Quilt = 5 };
struct SearchArgs {
int offset;
@ -35,4 +35,22 @@ class ModAPI {
};
virtual void getVersions(CallerType* caller, VersionSearchArgs&& args) const = 0;
static auto getModLoaderString(ModLoaderType type) -> const QString {
switch (type) {
case Unspecified:
break;
case Forge:
return "forge";
case Cauldron:
return "cauldron";
case LiteLoader:
return "liteloader";
case Fabric:
return "fabric";
case Quilt:
return "quilt";
}
return "";
}
};

View File

@ -51,25 +51,16 @@ class ModrinthAPI : public NetworkModAPI {
return s;
}
inline auto getModLoaderString(ModLoaderType modLoader) const -> QString
static auto getModLoaderString(ModLoaderType type) -> const QString
{
switch (modLoader) {
case Any:
return "fabric, forge, quilt";
case Forge:
return "forge";
case Fabric:
return "fabric";
case Quilt:
return "quilt";
default:
return "";
}
if (type == Unspecified)
return "fabric, forge, quilt";
return ModAPI::getModLoaderString(type);
}
inline auto validateModLoader(ModLoaderType modLoader) const -> bool
{
return modLoader == Any || modLoader == Forge || modLoader == Fabric || modLoader == Quilt;
return modLoader == Unspecified || modLoader == Forge || modLoader == Fabric || modLoader == Quilt;
}
};

View File

@ -391,7 +391,7 @@ void ModFolderPage::on_actionInstall_mods_triggered()
return; //this is a null instance or a legacy instance
}
auto profile = ((MinecraftInstance *)m_inst)->getPackProfile();
if (profile->getModLoader() == ModAPI::Any) {
if (profile->getModLoader() == ModAPI::Unspecified) {
QMessageBox::critical(this,tr("Error"),tr("Please install a mod loader first!"));
return;
}

View File

@ -68,7 +68,7 @@ void ModPage::onSelectionChanged(QModelIndex first, QModelIndex second)
text = name;
else
text = "<a href=\"" + current.websiteUrl + "\">" + name + "</a>";
if (!current.authors.empty()) {
auto authorToStr = [](ModPlatform::ModpackAuthor& author) -> QString {
if (author.url.isEmpty()) { return author.name; }
@ -128,7 +128,7 @@ void ModPage::onModSelected()
void ModPage::retranslate()
{
ui->retranslateUi(this);
ui->retranslateUi(this);
}
void ModPage::updateModVersions()
@ -137,26 +137,13 @@ void ModPage::updateModVersions()
QString mcVersion = packProfile->getComponentVersion("net.minecraft");
QString loaderString;
switch (packProfile->getModLoader()) {
case ModAPI::Forge:
loaderString = "forge";
break;
case ModAPI::Fabric:
loaderString = "fabric";
break;
case ModAPI::Quilt:
loaderString = "quilt";
break;
default:
break;
}
QString loaderString = ModAPI::getModLoaderString(packProfile->getModLoader());
for (int i = 0; i < current.versions.size(); i++) {
auto version = current.versions[i];
//NOTE: Flame doesn't care about loaderString, so passing it changes nothing.
if (!validateVersion(version, mcVersion, loaderString)) {
continue;
if (!validateVersion(version, mcVersion, loaderString)) {
continue;
}
ui->versionSelectionBox->addItem(version.version, QVariant(i));
}