characterSettingsObject.py (4161B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\characterSettingsStorage\characterSettingsObject.py 2 import yaml 3 4 class CharacterSettingsObject: 5 6 def __init__(self, yamlString): 7 self.allSettings = self.UploadSettingsFromYamlString(yamlString) 8 self.EnsureSettingsAreValid() 9 self.SortValueLists(self.allSettings['lists']) 10 11 def EnsureSettingsAreValid(self): 12 for settingType in ('lists', 'singleValues'): 13 if settingType not in self.allSettings: 14 self.allSettings[settingType] = {} 15 16 def UploadSettingsFromYamlString(self, yamlString): 17 if yamlString: 18 self.allSettings = yaml.load(yamlString, Loader=yaml.CLoader) 19 self.EnsureSettingsAreValid() 20 self.SortValueLists(self.GetSettingLists()) 21 else: 22 self.allSettings = {'lists': {}, 23 'singleValues': {}} 24 self.EnsureSettingsAreValid() 25 return self.allSettings 26 27 def GetYamlStringForServer(self): 28 yamlString = yaml.safe_dump(self.allSettings) 29 return yamlString 30 31 def IsSaveNeeded(self, newSettingDict): 32 settingLists = self.GetSettingLists() 33 self.SortValueLists(newSettingDict.get('lists', {})) 34 for settingKey, settingValue in newSettingDict.get('lists', {}).iteritems(): 35 if settingLists.get(settingKey, []) != settingValue: 36 return True 37 38 singleValues = self.GetSettingSingleValues() 39 for settingKey, settingValue in newSettingDict.get('singleValues', {}).iteritems(): 40 if singleValues.get(settingKey, None) != settingValue: 41 return True 42 43 return False 44 45 def UpdateSettings(self, newSettingsDict): 46 self.UpdateListSettings(newSettingsDict.get('lists')) 47 self.UpdateSingleValueSettings(newSettingsDict.get('singleValues')) 48 49 def GetSettingLists(self): 50 return self.allSettings.get('lists', {}) 51 52 def GetListForSettingKey(self, settingsKey): 53 values = self.GetSettingLists().get(settingsKey, []) 54 return values 55 56 def IsValueStoredInList(self, settingKey, checkValue): 57 values = self.GetListForSettingKey(settingKey) 58 return checkValue in values 59 60 def UpdateListSettings(self, newListSettingDict): 61 settingLists = self.GetSettingLists() 62 for settingName, settingValue in newListSettingDict.iteritems(): 63 settingLists[settingName] = settingValue 64 65 self.SortValueLists(settingLists) 66 67 def UpdateSettingListWithNewValues(self, settingName, values): 68 self.GetSettingLists()[settingName] = values[:] 69 70 def CreateListSettingIfNeeded(self, settingKey): 71 settingLists = self.GetSettingLists() 72 if settingKey not in settingLists: 73 settingLists[settingKey] = [] 74 75 def AddValueToListSetting(self, settingName, newValue): 76 self.CreateListSettingIfNeeded(settingName) 77 settingLists = self.GetSettingLists() 78 if newValue not in settingLists.get(settingName, []): 79 settingLists[settingName].append(newValue) 80 self.SortValueLists(settingLists) 81 82 def RemoveValueFromListSetting(self, settingName, value): 83 settingLists = self.GetSettingLists() 84 if value in settingLists.get(settingName, []): 85 settingLists[settingName].remove(value) 86 87 def SortValueLists(self, settingLists): 88 for valueList in settingLists.itervalues(): 89 valueList.sort() 90 91 return settingLists 92 93 def GetSettingSingleValues(self): 94 return self.allSettings.get('singleValues', {}) 95 96 def GetSingleValue(self, settingKey, defaultValue): 97 return self.GetSettingSingleValues().get(settingKey, defaultValue) 98 99 def SetSingleValue(self, settingKey, newValue): 100 singleValues = self.GetSettingSingleValues() 101 singleValues[settingKey] = newValue 102 103 def UpdateSingleValueSettings(self, newSingleValueSettingDict): 104 singleValues = self.GetSettingSingleValues() 105 for settingName, settingValue in newSingleValueSettingDict.iteritems(): 106 singleValues[settingName] = settingValue