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

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()