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

schedulingController.py (3426B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\moonmining\schedulingController.py
      2 import gametime
      3 from carbon.common.lib.const import SEC, MIN, HOUR
      4 from carbon.common.script.util.mathCommon import FloatCloseEnough
      5 from eve.client.script.ui.moonmining import GetRangeTimeForSlider
      6 from moonmining.const import MAXIMUM_EXTRACTION_DURATION, MINIMUM_EXTRACTION_DURATION
      7 from signals import Signal
      8 import mathext
      9 
     10 class SchedulingController(object):
     11 
     12     def __init__(self, fuelExpiryTime):
     13         self.fuelExpiryTime = fuelExpiryTime
     14         self.startTime, maxValidTime = GetRangeTimeForSlider()
     15         self.maxValidTime = long(maxValidTime / HOUR) * HOUR
     16         self.currentTime = self.startTime
     17         self.validTimeRange = self.maxValidTime - self.startTime
     18         self.fullRange = MAXIMUM_EXTRACTION_DURATION * SEC
     19         self.maxValidPercentage = self.validTimeRange / float(self.fullRange)
     20         self.on_hours_changed = Signal(signalName='on_hours_changed')
     21         self.on_fuel_changed = Signal(signalName='on_fuel_changed')
     22 
     23     @property
     24     def minValidTime(self):
     25         now = gametime.GetWallclockTime()
     26         return now + MINIMUM_EXTRACTION_DURATION * SEC + 2 * MIN
     27 
     28     def GetSliderStartTime(self):
     29         return self.startTime
     30 
     31     def GetMinValidTime(self):
     32         return self.minValidTime
     33 
     34     def GetMaxValidTime(self):
     35         return self.maxValidTime
     36 
     37     def GetCurrentTime(self):
     38         return self.currentTime
     39 
     40     def SetTimestamp(self, timestamp, numParts = 1):
     41         self.SetCurrentTimestamp(timestamp, numParts=numParts)
     42 
     43     def GetCurrentTimeAsPercentage(self):
     44         return float(self.currentTime - self.startTime) / self.fullRange
     45 
     46     def SetTimestampFromPercentage(self, value):
     47         value = min(value, self.maxValidPercentage)
     48         newTimestamp = self._GetClampedTimestamp(value * self.fullRange + self.startTime)
     49         self.SetCurrentTimestamp(newTimestamp)
     50 
     51     def AddHour(self):
     52         self.AddNumHours(1)
     53 
     54     def SubtractHour(self):
     55         self.AddNumHours(-1)
     56 
     57     def AddNumHours(self, numHours, numParts = 1):
     58         self.SetCurrentTimestamp(self.GetCurrentTime() + numHours * HOUR, numParts=numParts)
     59 
     60     def SetCurrentTimestamp(self, timestamp, numParts = 1):
     61         timestamp = self._RoundTimestampToPartsOfHour(timestamp, numParts)
     62         timestamp = self._GetClampedTimestamp(timestamp)
     63         wasChange = self.currentTime != timestamp
     64         self.currentTime = long(self._GetClampedTimestamp(timestamp))
     65         self.on_hours_changed(wasChange)
     66 
     67     def _GetClampedTimestamp(self, timestamp):
     68         return mathext.clamp(timestamp, self.minValidTime, self.maxValidTime)
     69 
     70     def GetMaxTime(self):
     71         return self.maxValidTime
     72 
     73     def _RoundTimestampToPartsOfHour(self, timestamp, numParts):
     74         partOfHour = float(timestamp) % HOUR / HOUR
     75         if FloatCloseEnough(partOfHour, 1.0):
     76             numHours = 0
     77         else:
     78             numHours = self._RoundToParts(partOfHour, numParts)
     79         newTimestamp = long(timestamp / HOUR) * HOUR + numHours * HOUR
     80         return newTimestamp
     81 
     82     def _RoundToParts(self, hourValue, numParts):
     83         return round(hourValue * numParts) / float(numParts)
     84 
     85     def SetFuelExpiryTime(self, timestamp):
     86         self.fuelExpiryTime = timestamp
     87         self.on_fuel_changed()
     88 
     89     def GetFuelExpiryTime(self):
     90         return self.fuelExpiryTime