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

baseView.py (8145B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\views\baseView.py
      2 from carbonui.const import CENTERTOP, UI_DISABLED, TOALL, CENTERBOTTOM, ANIM_WAVE
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.sprite import Sprite
      5 from carbonui.primitives.transform import Transform
      6 from carbonui.util.color import Color
      7 from eve.client.script.ui.control.utilMenu import UtilMenu
      8 from eve.client.script.ui.shared.industry import industryUIConst
      9 import industry
     10 from localization import GetByLabel
     11 from eve.client.script.ui.control.eveLabel import EveHeaderMedium
     12 from eve.client.script.ui.shared.industry.industryUIConst import GetJobColor, ACTIVITY_NAMES, ACTIVITY_AUDIOEVENTS
     13 from eve.client.script.ui.shared.industry.views.OutputCont import OutputCont
     14 from eve.client.script.ui.shared.industry.views.blueprintCenter import BlueprintCenter
     15 from eve.client.script.ui.shared.industry.views.materialGroups import MaterialGroups
     16 import carbonui.const as uiconst
     17 import uthread
     18 import telemetry
     19 from carbonui.uicore import uicore
     20 
     21 class BaseView(Container):
     22 
     23     def ApplyAttributes(self, attributes):
     24         Container.ApplyAttributes(self, attributes)
     25         self.jobData = attributes.jobData
     26         if self.jobData:
     27             self.jobData.on_updated.connect(self.OnJobUpdated)
     28             self.jobData.on_errors.connect(self.OnJobErrors)
     29         self.oldJobData = None
     30         self.UpdateColor()
     31         self.bgGradientThread = None
     32         self.topCont = Container(name='topCont', parent=self, align=uiconst.TOTOP, height=18)
     33         self.mainCont = Container(parent=self, align=uiconst.TOTOP, height=400)
     34         UtilMenu(menuAlign=uiconst.TOPLEFT, parent=self.topCont, align=uiconst.TOPLEFT, GetUtilMenu=self.GetUtilMenuSettings, texturePath='res:/UI/Texture/SettingsCogwheel.png', iconSize=18, pos=(4, 0, 18, 18))
     35         self.topContLabel = EveHeaderMedium(name='topContLabel', parent=self.topCont, align=uiconst.TOPLEFT, top=2, left=24)
     36         self.blueprintCenter = BlueprintCenter(parent=self.mainCont, jobData=self.jobData)
     37         self.inputsCont = MaterialGroups(parent=self.mainCont, jobData=self.jobData, padLeft=4)
     38         self.outputCont = OutputCont(parent=self.mainCont, padRight=6, jobData=self.jobData)
     39         self.ConstructBackground()
     40         self.UpdateState()
     41         self.AnimEntry()
     42 
     43     def GetUtilMenuSettings(self, menuParent):
     44         menuParent.AddHeader(text=GetByLabel('UI/Industry/InputMaterialValues'))
     45         showTotalRequired = settings.char.ui.Get('inputMaterialShowTotalRequired', True)
     46         menuParent.AddRadioButton(text=GetByLabel('UI/Industry/ShowTotalRequired'), checked=showTotalRequired, callback=(self.OnInputMaterialValueSetting, True))
     47         menuParent.AddRadioButton(text=GetByLabel('UI/Industry/ShowMissing'), checked=not showTotalRequired, callback=(self.OnInputMaterialValueSetting, False))
     48 
     49     def OnInputMaterialValueSetting(self, value):
     50         settings.char.ui.Set('inputMaterialShowTotalRequired', value)
     51         sm.ScatterEvent('OnIndustryMaterialValueSettingChanged')
     52 
     53     def ConstructBackground(self):
     54         self.bgTransform = Transform(name='bgTransform', parent=self.mainCont, align=CENTERBOTTOM, state=UI_DISABLED, scalingCenter=(0.5, 0.5), width=400, height=400)
     55         Sprite(bgParent=self.bgTransform, align=TOALL, texturePath='res:/UI/Texture/classes/Industry/Center/bgCircle.png')
     56         self.bgBorder = Sprite(bgParent=self.bgTransform, align=TOALL, texturePath='res:/UI/Texture/classes/Industry/Center/bgCircleBorder.png', color=self.color)
     57         self.bgGradient = Sprite(parent=self.bgTransform, align=uiconst.CENTER, texturePath='res:/UI/Texture/classes/Industry/Center/bgGlowRing.png', color=self.color, opacity=0.0, width=432, height=432)
     58 
     59     def UpdateColor(self):
     60         self.color = GetJobColor(self.jobData)
     61 
     62     @telemetry.ZONE_METHOD
     63     def OnNewJobData(self, jobData):
     64         self.oldJobData = self.jobData
     65         if jobData:
     66             sm.GetService('audio').SendUIEvent(ACTIVITY_AUDIOEVENTS[jobData.activityID])
     67             jobData.on_updated.connect(self.OnJobUpdated)
     68             jobData.on_errors.connect(self.OnJobErrors)
     69         self.jobData = jobData
     70         self.UpdateColor()
     71         self.blueprintCenter.OnNewJobData(jobData)
     72         self.inputsCont.OnNewJobData(jobData)
     73         self.outputCont.OnNewJobData(jobData)
     74         self.UpdateState()
     75         self.AnimEntry()
     76 
     77     def AnimEntry(self):
     78         if self.bgGradientThread:
     79             self.bgGradientThread.kill()
     80             self.bgGradientThread = None
     81         if self.jobData:
     82             if self.jobData.IsInstalled():
     83                 self.bgGradientThread = uthread.new(self.AnimFadeBgGradient)
     84             elif not self.oldJobData:
     85                 uicore.animations.Tr2DScaleTo(self.bgTransform, self.bgTransform.scale, (1.0, 1.0), duration=0.5)
     86                 uicore.animations.FadeTo(self.bgTransform, self.bgTransform.opacity, 1.0, duration=1.0)
     87             else:
     88                 self.bgGradientThread = uthread.new(self.AnimFadeBgTransform)
     89             color = Color(*self.color).SetAlpha(0.3).GetRGBA()
     90             uicore.animations.SpColorMorphTo(self.bgBorder, endColor=color, duration=1.0)
     91             if not self.jobData.IsInstalled():
     92                 uicore.animations.FadeOut(self.bgGradient, duration=0.3)
     93         else:
     94             uicore.animations.Tr2DScaleTo(self.bgTransform, (0.98, 0.98), (0.95, 0.95), duration=10.0, curveType=ANIM_WAVE, loops=uiconst.ANIM_REPEAT)
     95             uicore.animations.FadeTo(self.bgTransform, 1.0, 0.1, duration=10.0, curveType=ANIM_WAVE)
     96             uicore.animations.FadeOut(self.bgGradient, duration=0.6)
     97 
     98     def AnimFadeBgTransform(self):
     99         uicore.animations.Tr2DScaleTo(self.bgTransform, self.bgTransform.scale, (1.0, 1.0), duration=0.3)
    100         uicore.animations.FadeTo(self.bgTransform, self.bgTransform.opacity, 1.0, duration=0.3, sleep=True)
    101         uicore.animations.Tr2DScaleTo(self.bgTransform, (1.0, 1.0), (0.99, 0.99), duration=1.0, curveType=ANIM_WAVE)
    102         uicore.animations.FadeTo(self.bgTransform, 1.0, 0.3, duration=1.0, curveType=ANIM_WAVE)
    103 
    104     def AnimFadeBgGradient(self):
    105         if self.jobData.activityID == industry.MANUFACTURING:
    106             color = industryUIConst.COLOR_MANUFACTURING
    107             color = Color(*color).SetAlpha(0.2).GetRGBA()
    108         else:
    109             color = industryUIConst.COLOR_SCIENCE
    110             color = Color(*color).SetAlpha(0.5).GetRGBA()
    111         uicore.animations.Tr2DScaleTo(self.bgTransform, self.bgTransform.scale, (1.0, 1.0), duration=0.3)
    112         if self.jobData.status == industry.STATUS_READY:
    113             opacity = 1.2
    114         else:
    115             opacity = 0.3
    116         uicore.animations.SpColorMorphTo(self.bgGradient, endColor=color, duration=0.9)
    117         uicore.animations.FadeTo(self.bgTransform, self.bgTransform.opacity, opacity, duration=0.3, sleep=True)
    118         if self.jobData.status == industry.STATUS_DELIVERED:
    119             uicore.animations.FadeTo(self.bgTransform, self.bgTransform.opacity, 1.2, duration=2.5)
    120         elif self.jobData.status >= industry.STATUS_READY:
    121             uicore.animations.FadeTo(self.bgTransform, self.bgTransform.opacity, 1.8, duration=2.5, curveType=ANIM_WAVE, loops=uiconst.ANIM_REPEAT)
    122         else:
    123             uicore.animations.Tr2DScaleTo(self.bgTransform, (1.0, 1.0), (0.985, 0.985), duration=5.0, curveType=ANIM_WAVE, loops=uiconst.ANIM_REPEAT)
    124             uicore.animations.FadeTo(self.bgTransform, 0.3, 1.0, duration=5.0, curveType=ANIM_WAVE, loops=uiconst.ANIM_REPEAT)
    125 
    126     def OnJobUpdated(self, job):
    127         self.OnRunsChanged()
    128 
    129     def OnJobErrors(self, job, errors):
    130         self.OnRunsChanged()
    131 
    132     def OnRunsChanged(self):
    133         self.outputCont.OnRunsChanged()
    134         self.blueprintCenter.OnRunsChanged()
    135         self.inputsCont.OnRunsChanged()
    136 
    137     def UpdateState(self):
    138         if not self.jobData:
    139             text = ''
    140         else:
    141             jobName = GetByLabel(ACTIVITY_NAMES[self.jobData.activityID])
    142             text = self.jobData.blueprint.GetName()
    143         self.topContLabel.text = text