progress_config.py (2603B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\model\definition\contribution_method\progress_config.py 2 from achievement_system.client.api.error import UnsupportedTypeError 3 from achievement_system.client.model.flatbuffer.generated import ContributionMethodDefinition as FlatbufferContributionMethodDefinition, ProgressConfig as FlatbufferProgressConfig, ChecklistMode as FlatbufferChecklistMode, SetMode as FlatbufferSetMode 4 from itertoolsext.Enum import Enum 5 6 def extract_from_flatbuffer(fb_data): 7 progress_type = fb_data.ProgressType() 8 progress = fb_data.Progress() 9 if progress_type == FlatbufferProgressConfig.CumulativeMode: 10 return CumulativeProgressConfig() 11 if progress_type == FlatbufferProgressConfig.ChecklistMode: 12 progress_object = FlatbufferChecklistMode() 13 progress_object.Init(progress.Bytes, progress.Pos) 14 return ChecklistProgressConfig(target_parameter=progress_object.TargetParameter()) 15 if progress_type == FlatbufferProgressConfig.SetMode: 16 progress_object = FlatbufferSetMode() 17 progress_object.Init(progress.Bytes, progress.Pos) 18 return SetProgressConfig(target_value_type=progress_object.TargetValueType()) 19 raise UnsupportedTypeError 20 21 22 @Enum 23 24 class ProgressType(object): 25 CUMULATIVE = 'CUMULATIVE' 26 CHECKLIST = 'CHECKLIST' 27 SET = 'SET' 28 29 30 class ProgressConfigBase(object): 31 32 def __init__(self, progress_type): 33 self._progress_type = progress_type 34 35 @property 36 def progress_type(self): 37 return self._progress_type 38 39 def __eq__(self, other): 40 return self._progress_type == other._progress_type 41 42 def __ne__(self, other): 43 return not self.__eq__(other) 44 45 def __str__(self): 46 return 'progress type: %s' % self.progress_type 47 48 49 class CumulativeProgressConfig(ProgressConfigBase): 50 51 def __init__(self): 52 super(CumulativeProgressConfig, self).__init__(ProgressType.CUMULATIVE) 53 54 55 class ChecklistProgressConfig(ProgressConfigBase): 56 57 def __init__(self, target_parameter): 58 super(ChecklistProgressConfig, self).__init__(ProgressType.CHECKLIST) 59 self._target_parameter = target_parameter 60 61 @property 62 def target_parameter(self): 63 return self._target_parameter 64 65 66 class SetProgressConfig(ProgressConfigBase): 67 68 def __init__(self, target_value_type): 69 super(SetProgressConfig, self).__init__(ProgressType.SET) 70 self._target_value_type = target_value_type 71 72 @property 73 def target_value_type(self): 74 return self._target_value_type