import 'dart:io'; import 'package:xml/xml.dart'; const root = r'C:/Users/Administrator/Seafile/Games-Rimworld'; const modsRoot = '$root/294100'; const configRoot = '$root/AppData/RimWorld by Ludeon Studios/Config'; const configPath = '$configRoot/ModsConfig.xml'; class Mod { final String name; // ModMetaData.name final String id; // ModMetaData.packageId final String path; // figure it out final List versions; // ModMetaData.supportedVersions final String description; // ModMetaData.description final List hardDependencies; // ModMetaData.modDependencies - this is a li with packageId, displayName, steamWorkshopUrl and downloadUrl final List softDependencies; // ModMetaData.loadAfter final List incompatabilities; // ModMetaData.incompatibleWith final bool enabled; // ConfigFile.mods.firstWhere((mod) => mod.id == id).enabled Mod({ required this.name, required this.id, required this.path, required this.versions, required this.description, required this.hardDependencies, required this.softDependencies, required this.incompatabilities, required this.enabled, }); } class ModList { final String path; final List mods; ModList({required this.path, this.mods = const []}); void load() { final file = File(path); print('Loading configuration from: $path'); } } class ConfigFile { final String path; List mods; ConfigFile({required this.path, this.mods = const []}); void load() { final file = File(path); print('Loading configuration from: $path'); final xmlString = file.readAsStringSync(); print('XML content read successfully.'); final xmlDocument = XmlDocument.parse(xmlString); print('XML document parsed successfully.'); final modConfigData = xmlDocument.findElements("ModsConfigData").first; print('Found ModsConfigData element.'); final modsElement = modConfigData.findElements("activeMods").first; print('Found activeMods element.'); final mods = modsElement.findElements("li"); print('Found ${mods.length} active mods.'); for (final mod in mods) { print('Mod found: ${mod.innerText}'); } } }