77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
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<String> versions; // ModMetaData.supportedVersions
|
|
final String description; // ModMetaData.description
|
|
final List<String>
|
|
hardDependencies; // ModMetaData.modDependencies - this is a li with packageId, displayName, steamWorkshopUrl and downloadUrl
|
|
final List<String> softDependencies; // ModMetaData.loadAfter
|
|
final List<String> 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<Mod> 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<Mod> 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}');
|
|
}
|
|
}
|
|
}
|