panelControllers.py (10044B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\loginRewards\panelControllers.py 2 import gametime 3 import itertoolsext 4 from eve.client.script.ui.shared.loginRewards import rewardUiConst 5 from globalConfig.getFunctions import GetLoginCampaignIDs 6 from localization import GetByLabel 7 8 class BasePanelController(object): 9 10 def __init__(self, panelConst, isOmega = None): 11 self.panelConst = panelConst 12 self.isOmega = isOmega 13 14 def GetPanelConstants(self): 15 return self.panelConst 16 17 def GetCongratsHeaderText(self): 18 return '' 19 20 def GetCongratsBodyText(self): 21 return '' 22 23 def IsOmega(self): 24 return self.isOmega 25 26 def ClaimReward(self): 27 raise NotImplemented('panel controller function needs to be overriden') 28 29 def GetNumDaysClaimed(self): 30 raise NotImplemented('panel controller function needs to be overriden') 31 32 def CanSomethingBeClaimedNow(self): 33 raise NotImplemented('panel controller function needs to be overriden') 34 35 def IsUserInCampaign(self): 36 raise NotImplemented('panel controller function needs to be overriden') 37 38 def GetTimestampWhenRewardCanBeClaimed(self): 39 raise NotImplemented('panel controller function needs to be overriden') 40 41 def GetRewardIdx(self): 42 raise NotImplemented('panel controller function needs to be overriden') 43 44 def IsRookieCampaign(self): 45 return False 46 47 48 class LoginCampaignController(BasePanelController): 49 50 def __init__(self, loginCampaignService, panelConst, isOmega = None): 51 BasePanelController.__init__(self, panelConst, isOmega) 52 self.loginCampaignService = loginCampaignService 53 54 def GetCongratsHeaderText(self): 55 return GetByLabel('UI/LoginRewards/CampaignCompleted') 56 57 def GetCongratsBodyText(self): 58 return GetByLabel('UI/LoginRewards/Congratulations') 59 60 def ClaimReward(self): 61 self.loginCampaignService.claim_reward() 62 63 def GetNumDaysClaimed(self): 64 numRewardsClaimed = self.loginCampaignService.get_num_claimed_rewards() 65 return numRewardsClaimed 66 67 def CanSomethingBeClaimedNow(self): 68 somethingCanBeClaimedNow = self.loginCampaignService.can_claim_now() 69 return somethingCanBeClaimedNow 70 71 def IsUserInCampaign(self): 72 isInCampaign = self.loginCampaignService.is_user_enrolled_in_campaign() 73 return isInCampaign 74 75 def GetRewardsByDay(self): 76 rewards_by_day = self.loginCampaignService.get_item_rewards_by_day() 77 return rewards_by_day 78 79 def GetTimestampWhenRewardCanBeClaimed(self): 80 next_reward_time = self.loginCampaignService.get_next_reward_time() 81 return next_reward_time 82 83 def GetNextRewardData(self): 84 return self.loginCampaignService.get_next_reward_data() 85 86 def DoesCampaignHaveDuration(self): 87 return self.loginCampaignService.does_campaign_have_duration() 88 89 def IsRookieCampaign(self): 90 return self.loginCampaignService.is_rookie_campaign() 91 92 def GetRewardIdx(self): 93 return self.loginCampaignService.get_campaign_reward_idx() 94 95 def GetPositionInGridTrack(self, transitioning = False): 96 numClaimed = self.GetNumDaysClaimed() 97 numRewards = len(self.GetRewardsByDay()) 98 rewardIdx = self.GetRewardIdx() 99 posInTrack = rewardIdx - 1 100 if posInTrack < 0: 101 posInTrack = numRewards 102 if not self.DoesCampaignHaveDuration() and numClaimed >= numRewards: 103 if posInTrack < self.panelConst.SELECTED_CELL + bool(transitioning): 104 posInTrack += numRewards 105 if not self.panelConst.SHOW_NEXT_GIFT and not self.CanSomethingBeClaimedNow(): 106 posInTrack -= 1 107 if posInTrack < 0: 108 posInTrack = numRewards - 1 109 return posInTrack 110 111 def GetClaimedRewardForDay(self, trackNum): 112 rewardIdx = trackNum + 1 113 campaign_id = self.loginCampaignService.get_current_campaign_id() 114 if not campaign_id: 115 return None 116 rewardsByCampaign = self.loginCampaignService.get_claimed_reward_for_reward_idx_by_campaign(rewardIdx) 117 if campaign_id in rewardsByCampaign: 118 return rewardsByCampaign[campaign_id] 119 return itertoolsext.first_or_default(rewardsByCampaign.values(), None) 120 121 def ShouldShowAsClaimed(self, rewardIdx, day): 122 return rewardIdx > day 123 124 def GetDaysToMarksAsClaimed(self, trackNum): 125 rewardIdx = trackNum + 1 126 return [ x for x in range(trackNum) if self.ShouldShowAsClaimed(rewardIdx, x) ] 127 128 def ShouldAddOffsetToSelectedDay(self): 129 if not self.panelConst.SELECTED_OFFSET: 130 return False 131 if self.CanSomethingBeClaimedNow(): 132 return False 133 return True 134 135 136 class RookieLoginCampaignController(LoginCampaignController): 137 138 def GetCongratsBodyText(self): 139 machoNet = sm.GetService('machoNet') 140 if GetLoginCampaignIDs(machoNet)['alpha'] or self.IsOmega() and GetLoginCampaignIDs(machoNet)['omega']: 141 return GetByLabel('UI/LoginRewards/CongratulationsStartNewCampaign') 142 return LoginCampaignController.GetCongratsBodyText(self) 143 144 145 class EvergreenLoginCampaignController(LoginCampaignController): 146 147 def ShouldShowAsClaimed(self, rewardIdx, day): 148 showAsClaimed = LoginCampaignController.ShouldShowAsClaimed(self, rewardIdx, day) 149 if not showAsClaimed: 150 return False 151 campaign_id = self.loginCampaignService.get_current_campaign_id() 152 rewardsByCampaign = self.loginCampaignService.get_claimed_reward_for_reward_idx_by_campaign(day + 1) 153 if campaign_id not in rewardsByCampaign and rewardsByCampaign: 154 return False 155 return True 156 157 158 class SeasonalPanelController(BasePanelController): 159 160 def __init__(self, seasonalLoginCampaignService, panelConst, isOmega): 161 BasePanelController.__init__(self, panelConst, isOmega) 162 self.seasonalLoginCampaignService = seasonalLoginCampaignService 163 self.campaignDataByID = {} 164 165 def CanRetroClaimNow(self): 166 if not self.seasonalLoginCampaignService.can_retro_claim_now(self.isOmega): 167 return False 168 if self._HasClaimedToday(): 169 return True 170 numRewardsClaimed = self.GetNumDaysClaimed() 171 if numRewardsClaimed == self.GetRewardCount(): 172 return True 173 return False 174 175 def GetDayNumbersClaimedInOmegaTrack(self): 176 return self.seasonalLoginCampaignService.get_day_numbers_claimed_in_omega_track() 177 178 def GetDayNumbersClaimedInAlphaTrack(self): 179 return self.seasonalLoginCampaignService.get_day_numbers_claimed_in_alpha_track() 180 181 def CanSomethingBeClaimedNow(self): 182 if not self._HasClaimedToday(): 183 return True 184 return self.CanRetroClaimNow() 185 186 def GetCampaignStatus(self): 187 return self.seasonalLoginCampaignService.get_campaign_status(self.isOmega) 188 189 def GetTimestampWhenRewardCanBeClaimed(self): 190 return self.seasonalLoginCampaignService.get_timestamp_when_reward_can_be_claimed(self.isOmega) 191 192 def GetNumberOfRewardsDaysRemainingAndAvailable(self): 193 return self.seasonalLoginCampaignService.get_number_of_rewards_days_remaining_and_available() 194 195 def GetNumDaysClaimed(self): 196 return self.seasonalLoginCampaignService.get_number_of_claimed_rewards() 197 198 def GetPositionInGridTrack(self): 199 return self.seasonalLoginCampaignService.get_number_of_claimed_rewards() 200 201 def GetCampaignData(self): 202 campaignID = self.seasonalLoginCampaignService.get_active_login_campaign() 203 campaignData = self.campaignDataByID.get(campaignID, None) 204 if campaignData: 205 return campaignData 206 campaignData = self.seasonalLoginCampaignService.get_data_for_active_campaign() 207 self.campaignDataByID[campaignID] = campaignData 208 return campaignData 209 210 def _GetDaysRemaining(self): 211 return self.seasonalLoginCampaignService.get_days_remaining() 212 213 def _GetEndTimestamp(self): 214 return self.seasonalLoginCampaignService.get_end_time_timestamp() 215 216 def GetCongratsHeaderText(self): 217 campaignStatus = self.GetCampaignStatus() 218 if campaignStatus == rewardUiConst.CAMPAIGN_STATUS_SUCCESSFULLY_COMPLETED: 219 return GetByLabel('UI/LoginRewards/CampaignCompleted') 220 return GetByLabel('UI/LoginRewards/CampaignEnding') 221 222 def GetCongratsBodyText(self): 223 campaignStatus = self.GetCampaignStatus() 224 daysRemaining = self._GetDaysRemaining() 225 if daysRemaining is None or campaignStatus == rewardUiConst.CAMPAIGN_STATUS_SUCCESSFULLY_COMPLETED: 226 return '' 227 else: 228 campaignData = self.GetCampaignData() 229 if daysRemaining > 1: 230 return (GetByLabel('UI/LoginRewards/DaysRemaining', days=daysRemaining),) 231 endTimestamp = self._GetEndTimestamp() 232 endTime = max(0, endTimestamp - gametime.GetWallclockTime()) 233 campaignName = GetByLabel(campaignData.campaignName) 234 text = GetByLabel('UI/LoginRewards/CampaignEndsIn', campaignName=campaignName, endTime=endTime) 235 return text 236 237 def ClaimReward(self): 238 self.seasonalLoginCampaignService.claim_reward() 239 240 def IsCampaignEndingBeforeNextReward(self): 241 return self.seasonalLoginCampaignService.is_campaign_ending_before_next_reward(self.IsOmega()) 242 243 def HasActiveCampaignBeenCompleted(self): 244 return self.seasonalLoginCampaignService.has_active_campaign_been_completed(self.IsOmega()) 245 246 def GetNextRewardDataForEntryType(self, entryType): 247 return self.seasonalLoginCampaignService.get_next_reward_data_for_entry_type(entryType) 248 249 def GetRewardCount(self): 250 campaignData = self.GetCampaignData() 251 rewardCount = min(len(campaignData.alphaRewards), len(campaignData.omegaRewards)) 252 return rewardCount 253 254 def _HasClaimedToday(self): 255 return self.seasonalLoginCampaignService.has_claimed_today()