Files
2024-02-15 05:42:18 +07:00

97 lines
2.2 KiB
Objective-C

#import "LauncherPreferences.h"
#import "PLProfiles.h"
#import "utils.h"
static PLProfiles* current;
@interface PLProfiles()
@end
@implementation PLProfiles
+ (id)defaultProfiles {
return @{
@"profiles": @{
@"(Default)": @{
@"name": @"(Default)",
@"lastVersionId": @"latest-release"
}
},
@"selectedProfile": @"(Default)"
}.mutableCopy;
}
+ (PLProfiles *)current {
if (!current) {
[self updateCurrent];
}
return current;
}
+ (void)updateCurrent {
current = [[PLProfiles alloc] initWithCurrentInstance];
}
+ (id)profile:(NSMutableDictionary *)profile resolveKey:(id)key {
NSString *value = profile[key];
if (value.length > 0) {
//NSDebugLog(@"[PLProfiles] Applying %@: \"%@\"", key, value);
return value;
}
NSDictionary *valueDefaults = @{
@"javaVersion": @"0",
@"gameDir": @"."
};
if (valueDefaults[key]) {
return valueDefaults[key];
}
NSDictionary *prefDefaults = @{
@"defaultTouchCtrl": @"control.default_ctrl",
@"defaultGamepadCtrl": @"control.default_gamepad_ctrl",
@"javaArgs": @"java.java_args",
@"renderer": @"video.renderer"
};
return getPrefObject(prefDefaults[key]);
}
+ (id)resolveKeyForCurrentProfile:(id)key {
return [self profile:self.current.selectedProfile resolveKey:key];
}
- (id)initWithCurrentInstance {
self = [super init];
self.profilePath = [@(getenv("POJAV_GAME_DIR")) stringByAppendingPathComponent:@"launcher_profiles.json"];
self.profileDict = parseJSONFromFile(self.profilePath);
if (self.profileDict[@"NSErrorObject"]) {
self.profileDict = PLProfiles.defaultProfiles;
[self save];
}
return self;
}
- (id)profiles {
return self.profileDict[@"profiles"];
}
- (id)selectedProfile {
return self.profiles[self.selectedProfileName];
}
- (NSString *)selectedProfileName {
return (id)self.profileDict[@"selectedProfile"];
}
- (void)setSelectedProfileName:(NSString *)name {
self.profileDict[@"selectedProfile"] = (id)name;
[self save];
}
- (void)save {
saveJSONToFile(self.profileDict, self.profilePath);
}
@end