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

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)