diff --git a/loader/include/Geode/loader/Loader.hpp b/loader/include/Geode/loader/Loader.hpp index 44de7429..c310d8b3 100644 --- a/loader/include/Geode/loader/Loader.hpp +++ b/loader/include/Geode/loader/Loader.hpp @@ -28,6 +28,7 @@ namespace geode { Suggestion, Recommendation, Conflict, + OutdatedConflict, InvalidFile, Duplicate, SetupFailed, diff --git a/loader/src/loader/LoaderImpl.cpp b/loader/src/loader/LoaderImpl.cpp index 85a0c308..6b20c219 100644 --- a/loader/src/loader/LoaderImpl.cpp +++ b/loader/src/loader/LoaderImpl.cpp @@ -586,9 +586,9 @@ void Loader::Impl::findProblems() { switch(dep.importance) { case ModMetadata::Incompatibility::Importance::Conflicting: { this->addProblem({ - LoadProblem::Type::Conflict, + dep.version.toString()[0] == '<' ? LoadProblem::Type::OutdatedConflict : LoadProblem::Type::Conflict, mod, - fmt::format("{} {}", dep.id, dep.version.toString()) + fmt::format("{}", dep.id) }); log::warn("{} conflicts with {} {}", id, dep.id, dep.version); } break; diff --git a/loader/src/ui/internal/list/ProblemsListCell.cpp b/loader/src/ui/internal/list/ProblemsListCell.cpp index e5d3140a..ec231a82 100644 --- a/loader/src/ui/internal/list/ProblemsListCell.cpp +++ b/loader/src/ui/internal/list/ProblemsListCell.cpp @@ -54,8 +54,16 @@ bool ProblemsListCell::init(LoadProblem problem, ProblemsListPopup* list, CCSize message = fmt::format("{} recommends {}", cause, problem.message); break; case LoadProblem::Type::Conflict: + // i copy pasted the message from incompatibility + // because as far as i can tell there's no behavorial + // difference, so it makes no sense to show the difference + // to the user icon = "info-warning.png"_spr; - message = fmt::format("{} conflicts with {}", cause, problem.message); + message = fmt::format("Uninstall {} to use {}", problem.message, cause); + break; + case LoadProblem::Type::OutdatedConflict: + icon = "info-alert.png"_spr; + message = fmt::format("Update {} to use {}", problem.message, cause); break; case LoadProblem::Type::InvalidFile: icon = "info-alert.png"_spr; diff --git a/loader/src/ui/internal/list/ProblemsListPopup.cpp b/loader/src/ui/internal/list/ProblemsListPopup.cpp index 3b2332b8..00daecbb 100644 --- a/loader/src/ui/internal/list/ProblemsListPopup.cpp +++ b/loader/src/ui/internal/list/ProblemsListPopup.cpp @@ -54,6 +54,7 @@ CCArray* ProblemsListPopup::createCells(Mod* scrollTo, float& scrollValue) { case geode::LoadProblem::Type::OutdatedIncompatibility: case geode::LoadProblem::Type::PresentIncompatibility: veryTop.push_back(ProblemsListCell::create(problem, this, this->getCellSize())); + break; default: top.push_back(ProblemsListCell::create(problem, this, this->getCellSize())); break;