Compare commits
4 Commits
v1.0.0
...
4c6e3b5ed5
Author | SHA1 | Date | |
---|---|---|---|
4c6e3b5ed5 | |||
a662dffc7c | |||
753859fd3e | |||
43a5f63759 |
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_html/flutter_html.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import '../format_converter.dart';
|
||||
import 'dart:math' as math;
|
||||
|
||||
class HtmlTooltip extends StatefulWidget {
|
||||
final Widget child;
|
||||
|
@@ -44,7 +44,7 @@ class FormatConverter {
|
||||
'td',
|
||||
];
|
||||
for (final tag in tagTypes) {
|
||||
final openCount = '[${tag}'.allMatches(result).length;
|
||||
final openCount = '[$tag'.allMatches(result).length;
|
||||
final closeCount = '[/$tag]'.allMatches(result).length;
|
||||
if (openCount > closeCount) {
|
||||
result = result + '[/$tag]' * (openCount - closeCount);
|
||||
|
22
lib/mod.dart
22
lib/mod.dart
@@ -1,6 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:rimworld_modman/logger.dart';
|
||||
import 'package:xml/xml.dart';
|
||||
|
||||
XmlElement findCaseInsensitive(XmlElement element, String name) {
|
||||
@@ -162,6 +161,23 @@ class Mod {
|
||||
// 'Dependencies element is missing in ModMetaData ($aboutFile).',
|
||||
// );
|
||||
}
|
||||
try {
|
||||
dependencies.addAll(
|
||||
metadata
|
||||
.findElements('modDependencies')
|
||||
.first
|
||||
.findElements('li')
|
||||
.map(
|
||||
(e) => e.findElements("packageId").first.innerText.toLowerCase(),
|
||||
)
|
||||
.toList(),
|
||||
);
|
||||
// logger.info('Additional dependencies found: ${dependencies.join(", ")}');
|
||||
} catch (e) {
|
||||
// logger.warning(
|
||||
// 'modDependencies element is missing in ModMetaData ($aboutFile). Original error: $e',
|
||||
// );
|
||||
}
|
||||
|
||||
List<String> loadAfter = [];
|
||||
try {
|
||||
@@ -313,6 +329,10 @@ class Mod {
|
||||
// 'Mod $name timing: XML=${xmlTime}ms, Metadata=${metadataTime}ms, FileCount=${fileCountTime}ms, Total=${totalTime}ms',
|
||||
// );
|
||||
|
||||
dependencies = dependencies.toSet().toList();
|
||||
loadAfter = loadAfter.toSet().toList();
|
||||
loadBefore = loadBefore.toSet().toList();
|
||||
incompatibilities = incompatibilities.toSet().toList();
|
||||
return Mod(
|
||||
name: name,
|
||||
id: id,
|
||||
|
@@ -104,6 +104,21 @@ var specialMods = {
|
||||
isExpansion: true,
|
||||
enabled: true,
|
||||
),
|
||||
'ludeon.rimworld.odyssey': Mod(
|
||||
id: 'ludeon.rimworld.odyssey',
|
||||
name: 'Odyssey',
|
||||
path: '',
|
||||
versions: [],
|
||||
description: 'RimWorld expansion - Odyssey',
|
||||
dependencies: ['ludeon.rimworld'],
|
||||
loadAfter: ['ludeon.rimworld.anomaly'],
|
||||
loadBefore: [],
|
||||
incompatibilities: [],
|
||||
isBaseGame: false,
|
||||
size: 0,
|
||||
isExpansion: true,
|
||||
enabled: true,
|
||||
),
|
||||
};
|
||||
|
||||
class ModList {
|
||||
@@ -295,7 +310,7 @@ class ModList {
|
||||
'ModsConfigData',
|
||||
nest: () {
|
||||
// Add version element
|
||||
builder.element('version', nest: '1.5.4297 rev994');
|
||||
builder.element('version', nest: '1.6.4518 rev71');
|
||||
|
||||
// Add active mods element
|
||||
builder.element(
|
||||
@@ -742,19 +757,26 @@ class ModList {
|
||||
// Extract the mod IDs from the error message
|
||||
final parts = error.split(' is incompatible with ');
|
||||
if (parts.length == 2) {
|
||||
final firstModId = parts[0].replaceAll('Incompatibility detected: ', '');
|
||||
final firstModId = parts[0].replaceAll(
|
||||
'Incompatibility detected: ',
|
||||
'',
|
||||
);
|
||||
final secondModId = parts[1];
|
||||
|
||||
// Check if either mod is a base game or expansion
|
||||
final isBaseGameOrExpansion =
|
||||
baseGameIds.contains(firstModId) || baseGameIds.contains(secondModId) ||
|
||||
expansionIds.contains(firstModId) || expansionIds.contains(secondModId);
|
||||
baseGameIds.contains(firstModId) ||
|
||||
baseGameIds.contains(secondModId) ||
|
||||
expansionIds.contains(firstModId) ||
|
||||
expansionIds.contains(secondModId);
|
||||
|
||||
// Only keep the error if it's not between base game/expansions
|
||||
if (!isBaseGameOrExpansion) {
|
||||
filteredErrors.add(error);
|
||||
} else {
|
||||
logger.info("Ignoring incompatibility between base game or expansion mods: $error");
|
||||
logger.info(
|
||||
"Ignoring incompatibility between base game or expansion mods: $error",
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// If we can't parse the error, keep it
|
||||
|
68
pubspec.lock
68
pubspec.lock
@@ -5,18 +5,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: _fe_analyzer_shared
|
||||
sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
|
||||
sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "80.0.0"
|
||||
version: "85.0.0"
|
||||
analyzer:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer
|
||||
sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
|
||||
sha256: abf63d42450c7ad6d8188887d16eeba2f1ff92ea8d8dc673213e99fb3c02b194
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.0"
|
||||
version: "7.5.7"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -29,10 +29,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
||||
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.12.0"
|
||||
version: "2.13.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -49,6 +49,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
cli_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cli_config
|
||||
sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -77,10 +85,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: coverage
|
||||
sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43
|
||||
sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "1.15.0"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -109,10 +117,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
version: "1.3.3"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -180,10 +188,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: html
|
||||
sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec"
|
||||
sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.15.5"
|
||||
version: "0.15.6"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -228,10 +236,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.8"
|
||||
version: "10.0.9"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -497,26 +505,26 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
|
||||
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.1"
|
||||
version: "6.3.2"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "1d0eae19bd7606ef60fe69ef3b312a437a16549476c42321d5dc1506c9ca3bf4"
|
||||
sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.15"
|
||||
version: "6.3.16"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
|
||||
sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.2"
|
||||
version: "6.3.3"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -545,10 +553,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
|
||||
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -569,18 +577,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.3.1"
|
||||
version: "15.0.0"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: watcher
|
||||
sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
|
||||
sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.1.2"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -593,18 +601,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.6"
|
||||
version: "1.0.1"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
|
||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
webkit_inspection_protocol:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
Reference in New Issue
Block a user