From 9daae41e1c34c68d8595fb83593d2ebbd0235326 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Tue, 18 Mar 2025 00:03:29 +0100 Subject: [PATCH] Fix up incompatibilities --- lib/mod_list.dart | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/mod_list.dart b/lib/mod_list.dart index 61fda42..1f1aead 100644 --- a/lib/mod_list.dart +++ b/lib/mod_list.dart @@ -252,7 +252,10 @@ class ModList { LoadOrder generateLoadOrder([LoadOrder? loadOrder]) { loadOrder ??= LoadOrder(); final modMap = {for (final m in activeMods.values) m.id: m}; - _validateIncompatibilities(loadOrder); + final errors = _validateIncompatibilities(modMap); + if (errors.isNotEmpty) { + loadOrder.errors.addAll(errors); + } // Hard dependency graph final inDegree = {}; @@ -363,15 +366,16 @@ class ModList { return loadOrder; } - void _validateIncompatibilities(LoadOrder loadOrder) { - final enabledMods = loadOrder.order.where((m) => m.enabled).toList(); - for (final mod in enabledMods) { + List _validateIncompatibilities(Map modMap) { + final errors = []; + for (final mod in modMap.values) { for (final incompatibleId in mod.incompatibilities) { - if (enabledMods.any((m) => m.id == incompatibleId)) { - loadOrder.errors.add("Incompatible mods: ${mod.id} and $incompatibleId"); + if (modMap.values.any((m) => m.id == incompatibleId)) { + errors.add("Incompatible mods: ${mod.id} and $incompatibleId"); } } } + return errors; } void _updateReverseConstraints(