mirror of
https://github.com/Auties00/Reboot-Launcher.git
synced 2026-01-13 11:12:23 +01:00
10.0.8
This commit is contained in:
@@ -396,7 +396,7 @@ class BackendController extends GetxController {
|
||||
}
|
||||
|
||||
final version = Get.find<GameController>()
|
||||
.getVersionByName(server.version.toString());
|
||||
.getVersionByGame(server.version.toString());
|
||||
if(version == null) {
|
||||
_showRebootInfoBar(
|
||||
translations.cannotJoinServerVersion(server.version.toString()),
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:get/get.dart';
|
||||
import 'package:get_storage/get_storage.dart';
|
||||
import 'package:reboot_common/common.dart';
|
||||
import 'package:reboot_launcher/main.dart';
|
||||
import 'package:version/version.dart';
|
||||
|
||||
class GameController extends GetxController {
|
||||
static const String storageName = "v3_game_storage";
|
||||
@@ -56,6 +57,21 @@ class GameController extends GetxController {
|
||||
return versions.value.firstWhereOrNull((element) => element.name == name);
|
||||
}
|
||||
|
||||
FortniteVersion? getVersionByGame(String gameVersion) {
|
||||
gameVersion = gameVersion.trim();
|
||||
final parsedGameVersion = Version.parse(gameVersion);
|
||||
return versions.value.firstWhereOrNull((element) {
|
||||
final compare = element.gameVersion.trim();
|
||||
try {
|
||||
final parsedCompare = Version.parse(compare);
|
||||
return parsedCompare.major == parsedGameVersion.major
|
||||
&& parsedCompare.minor == parsedGameVersion.minor;
|
||||
} on FormatException {
|
||||
return compare == gameVersion;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void addVersion(FortniteVersion version) {
|
||||
versions.update((val) => val?.add(version));
|
||||
selectedVersion.value = version;
|
||||
|
||||
@@ -47,37 +47,6 @@ Future<String?> openFilePicker(String extension) async {
|
||||
bool get isDarkMode =>
|
||||
SchedulerBinding.instance.platformDispatcher.platformBrightness.isDark;
|
||||
|
||||
class _ServiceProvider10 extends IUnknown {
|
||||
static const String _CLSID = "{C2F03A33-21F5-47FA-B4BB-156362A2F239}";
|
||||
static const String _IID = "{6D5140C1-7436-11CE-8034-00AA006009FA}";
|
||||
|
||||
_ServiceProvider10._internal(Pointer<COMObject> ptr) : super(ptr);
|
||||
|
||||
factory _ServiceProvider10.createInstance() =>
|
||||
_ServiceProvider10._internal(COMObject.createFromID(_CLSID, _IID));
|
||||
|
||||
Pointer<COMObject> queryService(String classId, String instanceId) {
|
||||
final result = calloc<COMObject>();
|
||||
final code = (ptr.ref.vtable + 3)
|
||||
.cast<
|
||||
Pointer<
|
||||
NativeFunction<
|
||||
HRESULT Function(Pointer, Pointer<GUID>, Pointer<GUID>,
|
||||
Pointer<COMObject>)>>>()
|
||||
.value
|
||||
.asFunction<
|
||||
int Function(Pointer, Pointer<GUID>, Pointer<GUID>,
|
||||
Pointer<COMObject>)>()(ptr.ref.lpVtbl,
|
||||
GUIDFromString(classId), GUIDFromString(instanceId), result);
|
||||
if (code != 0) {
|
||||
free(result);
|
||||
throw WindowsException(code);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
extension WindowManagerExtension on WindowManager {
|
||||
Future<void> maximizeOrRestore() async => await windowManager.isMaximized() ? windowManager.restore() : windowManager.maximize();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:flutter_gen/gen_l10n/reboot_localizations.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:reboot_common/common.dart';
|
||||
|
||||
AppLocalizations? _translations;
|
||||
bool _init = false;
|
||||
|
||||
@@ -38,7 +38,6 @@ SettingTile createFileSetting({
|
||||
controller: controller,
|
||||
validator: (text) {
|
||||
final result = _checkDll(text);
|
||||
print("Called validator: $result");
|
||||
obx.value = result;
|
||||
return result;
|
||||
},
|
||||
|
||||
@@ -180,7 +180,7 @@ class _BrowsePageState extends RebootPageState<BrowsePage> {
|
||||
case _Filter.accessible:
|
||||
return element.password == null;
|
||||
case _Filter.playable:
|
||||
return _gameController.getVersionByName(element.version) != null;
|
||||
return _gameController.getVersionByGame(element.version) != null;
|
||||
}
|
||||
}).toList();
|
||||
final sort = _sort.value;
|
||||
|
||||
@@ -147,27 +147,24 @@ class _ImportVersionDialogState extends State<ImportVersionDialog> {
|
||||
final name = _nameController.text.trim();
|
||||
final directory = Directory(_pathController.text.trim());
|
||||
|
||||
final files = await Future.wait([
|
||||
final shippingExes = await Future.wait([
|
||||
Future.delayed(const Duration(seconds: 1)).then((_) => <File>[]),
|
||||
findFiles(directory, kShippingExe).then((files) async {
|
||||
if(files.length == 1) {
|
||||
await patchHeadless(files.first);
|
||||
}
|
||||
return files;
|
||||
})
|
||||
findFiles(directory, kShippingExe)
|
||||
]).then((values) => values.expand((entry) => entry).toList());
|
||||
|
||||
if (files.isEmpty) {
|
||||
if (shippingExes.isEmpty) {
|
||||
_validator.value = _ImportState.missingShippingExeError;
|
||||
return;
|
||||
}
|
||||
|
||||
if(files.length != 1) {
|
||||
if(shippingExes.length != 1) {
|
||||
_validator.value = _ImportState.multipleShippingExesError;
|
||||
return;
|
||||
}
|
||||
|
||||
final gameVersion = await extractGameVersion(files.first.path, path.basename(directory.path));
|
||||
await patchHeadless(shippingExes.first);
|
||||
|
||||
final gameVersion = await extractGameVersion(directory);
|
||||
try {
|
||||
if(Version.parse(gameVersion) >= kMaxAllowedVersion) {
|
||||
_validator.value = _ImportState.unsupportedVersionError;
|
||||
@@ -181,13 +178,13 @@ class _ImportVersionDialogState extends State<ImportVersionDialog> {
|
||||
final version = FortniteVersion(
|
||||
name: name,
|
||||
gameVersion: gameVersion,
|
||||
location: files.first.parent
|
||||
location: shippingExes.first.parent
|
||||
);
|
||||
_gameController.addVersion(version);
|
||||
}else {
|
||||
widget.version?.name = name;
|
||||
widget.version?.gameVersion = gameVersion;
|
||||
widget.version?.location = files.first.parent;
|
||||
widget.version?.location = shippingExes.first.parent;
|
||||
}
|
||||
_validator.value = _ImportState.success;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user