* 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]>
73 lines
2.5 KiB
Objective-C
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];
|
|
}
|