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