Files
PojavLauncher_iOS/Natives/LauncherPreferences.m
T
Duy Tran KhanhandDuy Tran Khanh 33cb7d0125 Custom Controls revisions implemenation (#292)
* Move control loaders to CustomControlsUtils.m

* WIP Drawer support (currently broken)

Also, updated MetalANGLE for helping debug stuff on crash.

* temp

* ControlDrawer: free orientation

* Avoid scrolling the hotbar in grab mode

* Popover: fix the frame inside the arrow

* Changes

- Attempt to allow Microsoft login when offline.
- Custom controls: drawer and sub-buttons are now visible.
- Pickers in Preferences: pre-select at the saved index.

* Bump version code to 4, hide sub-button by default

* Fix text trucanting

* impl scroll buttons, rewrite some parts to objc

* Virtual mouse implementation

Also, possible fix for popover crashes on iPad

Exception type: NSInternalInconsistencyException
> Reason: Tried to set <UIBarButtonItem: 0x10fee5660> menuOnTouchDown
menu=0x2810dce10 image=<UIImage:0x280149050 symbol(system:
ellipsis.circle) {20, 19} baseline=3.5,contentInsets={1, 1.5, 1,
1.5},alignmentRectInsets={-0.5, 0, -0.5, 0}
config=<traits=(UserInterfaceIdiom = Pad, DisplayScale = 2,
DisplayGamut = sRGB, HorizontalSizeClass = Regular, VerticalSizeClass
= Regular, UserInterfaceStyle = Dark, UserInterfaceLayoutDirection =
LTR, PreferredContentSizeCategory = L, AccessibilityContrast =
Normal)>> as sourceView of
<_UIAlertControllerActionSheetRegularPresentationController:
0x12043f5a0>, even though it is not a kind of UIView.

* Swap item between hands by double-tap item moment

* Basic editor (only several stuff implemented)

There's no save/load yet, so it's just a preview for now.

* Control editor (preview only)
TODO: Color picker for iOS < 14

* Save, load and set default are here

* Changes

- Ported Snap and Align from Android
- Added options: create and delete button

TODO:
- color picker for iOS < 14
- drawer editor
- maybe more

* Editor: Added orientation changer for drawer

Added some more check to determine whether dynamic position should be
visible (when the button is not a sub-button, or the parent drawer
doesn't use the FREE orientation)

* Editor: implemented adding drawer and sub-button

* Added a warning about unfinished custom controls

Co-authored-by: Duy Tran Khanh <[email protected]>
2021-11-26 10:35:21 +07:00

73 lines
2.5 KiB
Objective-C

#import "LauncherPreferences.h"
NSMutableDictionary *prefDict;
NSString* prefPath;
#if CONFIG_RELEASE == 1
# define CONFIG_TYPE @NO
#else
# define CONFIG_TYPE @YES
#endif
void loadPreferences() {
assert(getenv("POJAV_HOME"));
prefPath = [@(getenv("POJAV_HOME"))
stringByAppendingPathComponent:@"launcher_preferences.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:prefPath]) {
prefDict = [[NSMutableDictionary alloc] init];
} else {
prefDict = [NSMutableDictionary dictionaryWithContentsOfFile:prefPath];
}
assert(prefDict);
// set default value
setDefaultValueForPref(@"resolution", @(100));
setDefaultValueForPref(@"button_scale", @(100));
setDefaultValueForPref(@"selected_version", @"1.7.10");
setDefaultValueForPref(@"vertype_release", @YES);
setDefaultValueForPref(@"vertype_snapshot", @NO);
setDefaultValueForPref(@"vertype_oldalpha", @NO);
setDefaultValueForPref(@"vertype_oldbeta", @NO);
setDefaultValueForPref(@"time_longPressTrigger", @(400));
setDefaultValueForPref(@"default_ctrl", @"default.json");
setDefaultValueForPref(@"game_directory", @"default");
setDefaultValueForPref(@"java_args", @"");
setDefaultValueForPref(@"allocated_memory", [NSNumber numberWithFloat:roundf(([[NSProcessInfo processInfo] physicalMemory] / 1048576) * 0.30)]);
setDefaultValueForPref(@"debug_logging", CONFIG_TYPE);
setDefaultValueForPref(@"java_home", @"");
setDefaultValueForPref(@"renderer", @"libgl4es_114.dylib");
setDefaultValueForPref(@"option_warn", @YES);
setDefaultValueForPref(@"local_warn", @YES);
setDefaultValueForPref(@"mem_warn", @YES);
setDefaultValueForPref(@"java_warn", @YES);
setDefaultValueForPref(@"jb_warn", @YES);
setDefaultValueForPref(@"customctrl_warn", @YES);
setDefaultValueForPref(@"disable_gl4es_shaderconv", @NO);
setDefaultValueForPref(@"slideable_hotbar", @NO);
[prefDict writeToFile:prefPath atomically:YES];
}
id getPreference(NSString* key) {
NSObject *object = prefDict[key];
if (object == [NSNull null] || object == nil) {
NSLog(@"LauncherPreferences: %@ is NULL", key);
}
return object;
}
void setDefaultValueForPref(NSString* key, id value) {
if (!prefDict[key]) {
prefDict[key] = value;
NSLog(@"[Pre-init] Set default value for key %@", value);
}
}
void setPreference(NSString* key, id value) {
prefDict[key] = value;
[prefDict writeToFile:prefPath atomically:YES];
}