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

StorageFacilityContainer.py (3453B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\planet\pinContainers\StorageFacilityContainer.py
      2 import carbonui.const as uiconst
      3 import blue
      4 import localization
      5 from carbonui.primitives.container import Container
      6 from eve.client.script.ui.control.gauge import Gauge
      7 from eve.client.script.ui.shared.planet.pinContainers.storageIcon import StorageIcon
      8 from .BasePinContainer import BasePinContainer, CaptionAndSubtext
      9 from eve.client.script.ui.shared.planet import planetCommon
     10 
     11 class StorageFacilityContainer(BasePinContainer):
     12     default_name = 'StorageFacilityContainer'
     13     INFO_CONT_HEIGHT = 80
     14     panelIDs = [planetCommon.PANEL_STORAGE] + BasePinContainer.panelIDs
     15 
     16     def _GetInfoCont(self):
     17         self.storageGauge = Gauge(parent=self.infoContLeft, value=0.0, color=planetCommon.PLANET_COLOR_STORAGE, label=localization.GetByLabel('UI/PI/Common/Storage'), align=uiconst.TOTOP, padding=(0, 0, 10, 4))
     18         self.cooldownTimer = CaptionAndSubtext(parent=self.infoContLeft, caption=localization.GetByLabel('UI/PI/Common/NextTransferAvailable'), align=uiconst.TOTOP)
     19         self.itemsTxt = CaptionAndSubtext(parent=self.infoContRight, caption=localization.GetByLabel('UI/PI/Common/StoredItems'), state=uiconst.UI_DISABLED, align=uiconst.TOTOP)
     20         self.iconCont = Container(parent=self.infoContRight, height=60, align=uiconst.TOTOP, state=uiconst.UI_PICKCHILDREN)
     21         self._DrawStoredCommoditiesIcons()
     22 
     23     def _DrawStoredCommoditiesIcons(self):
     24         self.iconCont.Flush()
     25         i = 0
     26         maxNumIcons = 8
     27         if self.pin.contents:
     28             for typeID, amount in self.pin.contents.iteritems():
     29                 iconLeft, iconTop = self._GetIconPos(i)
     30                 icon = StorageIcon(parent=self.iconCont, pos=(iconLeft,
     31                  iconTop,
     32                  28,
     33                  28), hint=localization.GetByLabel('UI/PI/Common/ItemAmount', itemName=planetCommon.GetProductNameAndTier(typeID), amount=int(amount)), typeID=typeID, amount=amount, size=32, ignoreSize=True)
     34                 i += 1
     35                 if i >= maxNumIcons:
     36                     break
     37 
     38             self.itemsTxt.SetSubtext('')
     39         else:
     40             self.itemsTxt.SetSubtext(localization.GetByLabel('UI/PI/Common/NothingStored'))
     41 
     42     def _UpdateInfoCont(self):
     43         self.storageGauge.SetValue(float(self.pin.capacityUsed) / self.pin.GetCapacity())
     44         text = localization.GetByLabel('UI/PI/Common/StorageUsed', capacityUsed=self.pin.capacityUsed, capacityMax=self.pin.GetCapacity())
     45         if not self.pin.GetCapacityRemaining():
     46             text = '<color=red>%s</color>' % text
     47         self.storageGauge.SetSubText(text)
     48         if self.pin.lastRunTime is None or self.pin.lastRunTime <= blue.os.GetWallclockTime():
     49             self.cooldownTimer.SetSubtext(localization.GetByLabel('UI/Common/Now'))
     50         else:
     51             self.cooldownTimer.SetSubtext(localization.GetByLabel('UI/PI/Common/TimeHourMinSec', time=self.pin.lastRunTime - blue.os.GetWallclockTime()))
     52 
     53     def _GetIconPos(self, iconNum):
     54         iconsInRow = 4
     55         iconSpace = 30
     56         left = iconSpace * (iconNum % iconsInRow)
     57         top = iconSpace * (iconNum / iconsInRow)
     58         return (left, top)
     59 
     60     def OnRefreshPins(self, pinIDs):
     61         if not self or self.destroyed:
     62             return
     63         BasePinContainer.OnRefreshPins(self, pinIDs)
     64         self._DrawStoredCommoditiesIcons()