label.py (7418B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\maps\label.py 2 import evecamera 3 import telemetry 4 import uthread 5 import trinity 6 import blue 7 import carbonui.const as uiconst 8 from carbonui.fontconst import STYLE_DEFAULT 9 from carbonui.primitives.bracket import Bracket 10 from carbonui.primitives.frame import Frame 11 from carbonui.uicore import uicore 12 from eve.client.script.ui.control import eveLabel 13 from eve.common.lib import appConst as const 14 from menu import MenuLabel 15 NEUTRAL_COLOR = (1.0, 1.0, 1.0, 0.5) 16 HIGHLIGHT_COLOR = (1.0, 1.0, 1.0, 0.5) 17 18 class MapLabel(Bracket): 19 default_opacity = 0.0 20 default_state = uiconst.UI_PICKCHILDREN 21 preFullAlpha = None 22 23 @telemetry.ZONE_METHOD 24 def Startup(self, name, itemID, typeID, tracker, cloud, mylocation = None): 25 self.trackTransform = tracker 26 self.sr.cloud = cloud 27 self.sr.id = itemID 28 self.sr.typeID = typeID 29 self.name = name 30 if name in ('', 'myDest', 'myloc'): 31 uicore.animations.FadeTo(self, startVal=0.0, endVal=1.0, duration=0.1) 32 return 33 frame = None 34 if itemID > 0: 35 if typeID == const.typeConstellation: 36 label = ParentLabel(text='<b>' + name + '</b>', parent=self, left=154, top=4, fontsize=12, uppercase=1, state=uiconst.UI_NORMAL) 37 frame = Frame(parent=self, align=uiconst.RELATIVE, color=(1.0, 1.0, 1.0, 0.5)) 38 else: 39 label = ParentLabel(text=name, parent=self, left=154, letterspace=1, fontsize=9, uppercase=1, align=uiconst.CENTERLEFT, state=uiconst.UI_NORMAL) 40 label.top = -label.textheight / 2 41 else: 42 label = ParentLabel(text=name, parent=self, left=154, top=7, letterspace=1, fontsize=9, uppercase=1, state=uiconst.UI_NORMAL) 43 if not mylocation: 44 if self.sr.id < 0: 45 label.SetRGBA(1.0, 0.96, 0.78, 1.0) 46 if typeID != const.typeSolarSystem: 47 label.left = (self.width - label.width) / 2 48 if frame: 49 frame.left = label.left - 5 50 frame.width = label.width + 10 51 frame.top = label.top - 3 52 frame.height = label.height + 6 53 label.state = uiconst.UI_NORMAL 54 uicore.animations.FadeTo(self, startVal=0.0, endVal=1.0, duration=0.1) 55 return self 56 57 def OnMouseEnter(self, *args): 58 return 59 self.ShowFullAlpha() 60 if self.sr.id > 0: 61 sm.GetService('starmap').UpdateLines(self.sr.id) 62 63 def ShowFullAlpha(self): 64 if self.preFullAlpha is None: 65 self.preFullAlpha = self.children[0].opacity 66 self.children[0].opacity = 1.0 67 68 def OnMouseExit(self, *args): 69 return 70 if self.sr.id > 0: 71 if self.sr.typeID == const.typeConstellation: 72 sm.GetService('starmap').UpdateLines(None) 73 self.ResetFullAlpha() 74 75 def ResetFullAlpha(self): 76 if self.preFullAlpha is not None: 77 self.children[0].opacity = self.preFullAlpha 78 self.preFullAlpha = None 79 80 def OnClick(self, *args): 81 sm.GetService('starmap').SetInterest(self.sr.id) 82 83 def GetMenu(self): 84 starmap = sm.GetService('starmap') 85 m = [] 86 if self.sr.id >= 0: 87 m += starmap.GetItemMenu(self.sr.id) 88 else: 89 m.append((self.name, sm.GetService('info').ShowInfo, (self.sr.typeID, self.sr.id))) 90 m.append((MenuLabel('UI/Map/StarMap/CenterOnScreen'), starmap.SetInterest, (self.sr.id, 1))) 91 return m 92 93 def OnMouseWheel(self, *etc): 94 lib = uicore.uilib 95 camera = sm.GetService('sceneManager').GetRegisteredCamera(evecamera.CAM_STARMAP) 96 if hasattr(camera, 'translationCurve'): 97 targetTrans = camera.translationCurve.GetVectorAt(blue.os.GetSimTime()).z * (1.0 + -lib.dz * 0.001) 98 if targetTrans < 2.0: 99 targetTrans = 2.0 100 if targetTrans > 10000.0: 101 targetTrans = 10000.0 102 camera.translationCurve.keys[1].value.z = targetTrans 103 uthread.new(sm.GetService('starmap').CheckLabelDist) 104 105 106 class ParentLabel(eveLabel.Label): 107 __guid__ = 'xtriui.ParentLabel' 108 109 def OnMouseEnter(self, *etc): 110 self.parent.OnMouseEnter(*etc) 111 112 def OnMouseExit(self, *etc): 113 self.parent.OnMouseExit(*etc) 114 115 def OnClick(self, *etc): 116 self.parent.OnClick(*etc) 117 118 def OnMouseWheel(self, *etc): 119 self.parent.OnMouseWheel(self, *etc) 120 121 def GetMenu(self, *etc): 122 return self.parent.GetMenu(*etc) 123 124 125 class TransformableLabel(object): 126 __guid__ = 'xtriui.TransformableLabel' 127 __persistvars__ = ['shader'] 128 129 def __init__(self, text, parent, size = 72, shadow = 0, hspace = 8): 130 self.transform = trinity.EveTransform() 131 self.transform.mesh = trinity.Tr2Mesh() 132 self.transform.mesh.geometryResPath = 'res:/Model/Global/zsprite.gr2' 133 self.transform.modifier = 1 134 self.measurer = trinity.Tr2FontMeasurer() 135 self.measurer.limit = 0 136 fontFamily = uicore.font.GetFontFamilyBasedOnClientLanguageID()[STYLE_DEFAULT] 137 self.measurer.font = fontFamily[2] 138 self.measurer.fontSize = size 139 self.measurer.letterSpace = hspace 140 self.measurer.AddText(text.upper()) 141 height = self.measurer.ascender - self.measurer.descender 142 width = self.measurer.cursorX 143 self.measurer.CommitText(0, self.measurer.ascender) 144 self.transform.scaling = (width, height, 0) 145 area = trinity.Tr2MeshArea() 146 self.transform.mesh.transparentAreas.append(area) 147 area.effect = self.effect = trinity.Tr2Effect() 148 sampler = list(self.effect.samplerOverrides.GetDefaultValue()) 149 sampler[0] = 'DiffuseMapSampler' 150 sampler[1] = trinity.TRITADDRESS_CLAMP 151 sampler[2] = trinity.TRITADDRESS_CLAMP 152 self.effect.samplerOverrides.append(tuple(sampler)) 153 self.effect.effectFilePath = 'res:/Graphics/Effect/Managed/Space/SpecialFX/TextureColor.fx' 154 diffuseColor = trinity.Tr2Vector4Parameter() 155 diffuseColor.name = 'DiffuseColor' 156 self.effect.parameters.append(diffuseColor) 157 self.diffuseColor = diffuseColor 158 self.diffuseMap = trinity.TriTextureParameter() 159 self.diffuseMap.name = 'DiffuseMap' 160 self.effect.resources.append(self.diffuseMap) 161 parent.children.append(self.transform) 162 trinity.device.RegisterResource(self) 163 self.OnCreate(trinity.device) 164 165 def SetDiffuseColor(self, color): 166 self.diffuseColor.value = color 167 168 def SetHighlight(self, highlight): 169 if highlight: 170 self.diffuseColor.value = HIGHLIGHT_COLOR 171 else: 172 self.diffuseColor.value = NEUTRAL_COLOR 173 174 def SetDisplay(self, display): 175 self.transform.display = display 176 177 def OnInvalidate(self, level): 178 pass 179 180 def OnCreate(self, dev): 181 if self.diffuseMap is None: 182 return 183 if self.diffuseMap.resource is not None and self.diffuseMap.resource.isGood: 184 return 185 height = self.measurer.ascender - self.measurer.descender 186 width = self.measurer.cursorX 187 tr = trinity.TriTextureRes(width, height, 1, trinity.PIXEL_FORMAT.B8G8R8A8_UNORM, trinity.BUFFER_USAGE_FLAGS.CPU_WRITE) 188 self.measurer.DrawToTexture(tr) 189 self.diffuseMap.SetResource(tr)