NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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