12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #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
|