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

universe.py (6062B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\entries\universe.py
      2 from carbonui.primitives.sprite import Sprite
      3 from evePathfinder.core import IsUnreachableJumpCount
      4 import utillib
      5 from carbonui import uiconst
      6 from carbonui.primitives.container import Container
      7 from carbonui.util.color import Color
      8 from eve.client.script.ui import eveColor
      9 from eve.client.script.ui.control.entries.generic import Generic
     10 from eve.client.script.ui.control.entries.header import Header
     11 from eve.client.script.ui.control.entries.label_text import LabelTextTop
     12 from eve.client.script.ui.control.entries.text import Text
     13 from eve.client.script.ui.control.itemIcon import ItemIcon
     14 from eve.client.script.ui.control.listgroup import ListGroup
     15 from eve.client.script.ui.shared.maps import maputils
     16 from localization import GetByLabel
     17 from structures import UPKEEP_STATE_ABANDONED, UPKEEP_STATE_LOW_POWER
     18 
     19 class SolarSystem(Generic):
     20     __params__ = ['label', 'solarSystemID']
     21     isDragObject = True
     22 
     23     def Startup(self, *args):
     24         Generic.Startup(self, args)
     25         self.labelCont = Container(name='labelCont', parent=self, padRight=16)
     26         self.sr.label.SetParent(self.labelCont)
     27         self.sr.label.autoFadeSides = 16
     28 
     29     def _GetText(self):
     30         node = self.sr.node
     31         security = sm.GetService('map').GetSystemSecurityValue(node.solarSystemID)
     32         securityModificationIconText = sm.GetService('securitySvc').get_security_modifier_icon_text(node.solarSystemID)
     33         text = maputils.GetSecurityStatusText(security) + securityModificationIconText
     34         numJumps = sm.GetService('clientPathfinderService').GetAutopilotJumpCount(session.solarsystemid2, node.solarSystemID)
     35         if IsUnreachableJumpCount(numJumps):
     36             numJumps = sm.GetService('clientPathfinderService').GetNoRouteFoundText(node.solarSystemID)
     37         else:
     38             numJumps = GetByLabel('UI/Fleet/FleetRegistry/NumberOfJumps', numJumps=numJumps)
     39         return '%s %s (%s)' % (text, node.label, numJumps)
     40 
     41     def GetDragData(self, *args):
     42         selectedNodes = self.sr.node.scroll.GetSelectedNodes(self.sr.node)
     43         retNodes = []
     44         for node in selectedNodes:
     45             fakeNode = utillib.KeyVal(__guid__='xtriui.ListSurroundingsBtn', typeID=node.Get('typeID', None), itemID=node.Get('itemID', None), label=node.label)
     46             retNodes.append(fakeNode)
     47 
     48         return retNodes
     49 
     50 
     51 class SolarSystemStructure(SolarSystem):
     52 
     53     def Startup(self, *args):
     54         SolarSystem.Startup(self, args)
     55         self.sr.icon = ItemIcon(parent=self, pos=(1, 2, 24, 24), align=uiconst.TOPLEFT, idx=0)
     56 
     57     def Load(self, node):
     58         SolarSystem.Load(self, node)
     59         self.sr.icon.SetTypeIDandItemID(self.typeID, self.itemID)
     60         self.sr.icon.left = node.get('sublevel', 0) * 16
     61         self.sr.label.left = self.height + 4 + node.get('sublevel', 0) * 16
     62 
     63     def GetHeight(self, *args):
     64         node, width = args
     65         node.height = 29
     66         return node.height
     67 
     68 
     69 class LocationTextEntry(Text):
     70     __guid__ = 'listentry.LocationTextEntry'
     71     isDragObject = True
     72     default_showHilite = True
     73 
     74     def GetDragData(self, *args):
     75         nodes = [self.sr.node]
     76         return nodes
     77 
     78 
     79 class LabelLocationTextTop(LabelTextTop):
     80     __guid__ = 'listentry.LabelLocationTextTop'
     81     isDragObject = True
     82 
     83     def GetDragData(self, *args):
     84         nodes = [self.sr.node]
     85         return nodes
     86 
     87 
     88 class LocationGroup(ListGroup):
     89     __guid__ = 'listentry.LocationGroup'
     90     COLOR_BY_STRUCTURE_POWER_LEVEL = {UPKEEP_STATE_LOW_POWER: eveColor.WARNING_ORANGE,
     91      UPKEEP_STATE_ABANDONED: eveColor.CHERRY_RED}
     92     isDragObject = True
     93 
     94     def _ConstructLabel(self):
     95         self.rightSpriteCont = Container(parent=self, align=uiconst.TORIGHT, pos=(0, 0, 20, 20))
     96         self.rightSpriteCont.display = False
     97         self.rightSprite = Sprite(parent=self.rightSpriteCont, align=uiconst.CENTER, pos=(0, 0, 16, 16), opacity=0.75)
     98         super(LocationGroup, self)._ConstructLabel()
     99 
    100     def GetDragData(self, *args):
    101         dragDataFunc = self.sr.node.get('GetDragDataFunc', None)
    102         if dragDataFunc:
    103             return dragDataFunc(self.sr.node)
    104         nodes = [self.sr.node]
    105         return nodes
    106 
    107     def Load(self, node):
    108         super(LocationGroup, self).Load(node)
    109         if node.inMyPath:
    110             self.sr.label.color = Color.YELLOW
    111         if node.upkeepState in (UPKEEP_STATE_LOW_POWER, UPKEEP_STATE_ABANDONED):
    112             texturePath = 'res:/UI/Texture/classes/StructureBrowser/bolt.png'
    113             self.sr.icon.state = uiconst.UI_NORMAL
    114             self.sr.icon.SetTexturePath(texturePath)
    115             self.sr.icon.SetSize(9, 9)
    116             self.sr.label.left = self.sr.icon.left + self.sr.icon.width + 4
    117             color = self.COLOR_BY_STRUCTURE_POWER_LEVEL.get(node.upkeepState, None)
    118             if color is not None:
    119                 self.sr.icon.SetRGBA(*color)
    120             if node.upkeepState == UPKEEP_STATE_LOW_POWER:
    121                 self.sr.icon.hint = GetByLabel('UI/Structures/LowPowerStructureModeHint')
    122             elif node.upkeepState == UPKEEP_STATE_ABANDONED:
    123                 self.sr.icon.hint = GetByLabel('UI/Structures/AbandonedStructureModeHint')
    124         rightIconInfo = node.get('rightIconInfo', None)
    125         if rightIconInfo:
    126             path, hint = rightIconInfo
    127             self.rightSprite.SetTexturePath(path)
    128             self.rightSprite.hint = hint
    129             self.rightSpriteCont.display = True
    130         else:
    131             self.rightSpriteCont.display = False
    132 
    133 
    134 class SystemNameHeader(Header):
    135 
    136     def Load(self, node):
    137         super(SystemNameHeader, self).Load(node)
    138         if node.tabs:
    139             self.sr.label.tabs = node.tabs
    140         labelState = uiconst.UI_NORMAL
    141         if node.labelState:
    142             labelState = node.labelState
    143         self.sr.label.state = labelState
    144 
    145     def GetMenu(self):
    146         if self.sr.get('node', None) and self.sr.node.get('OnGetMenu', None):
    147             return self.sr.node.OnGetMenu(self)
    148         return []