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

radialMenuSvc.py (5533B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\radialMenu\radialMenuSvc.py
      2 from eve.client.script.ui.util import uix
      3 import carbon.common.script.sys.service as service
      4 import uthread
      5 import carbonui.const as uiconst
      6 import geo2
      7 from carbon.common.script.util import timerstuff
      8 from carbonui.uicore import uicore
      9 from eve.client.script.parklife import states as state
     10 from eve.client.script.ui.shared.radialMenu import spaceRadialMenuFunctions, NORMAL_RADIAL_MENU, BROADCAST_RADIAL_MENU
     11 from eve.client.script.ui.shared.radialMenu.broadcastRadialMenu import RadialMenuBroadcast
     12 from eve.client.script.ui.shared.radialMenu.radialMenu import RadialMenuSpace
     13 from eve.client.script.util.bubble import SlimItemFromCharID
     14 from eve.common.script.sys import idCheckers
     15 RADIAL_MENU_EXPAND_DELAY_MIN = 0
     16 RADIAL_MENU_EXPAND_DELAY_MAX = 450
     17 RADIAL_MENU_EXPAND_DELAY_DEFAULT = 150
     18 
     19 class RadialMenuSvc(service.Service):
     20     __guid__ = 'svc.radialmenu'
     21     __startupdependencies__ = ['command_blocker']
     22 
     23     def Run(self, memStream = None):
     24         self.expandTimer = None
     25 
     26     def _ClampActionMenuExpandTime(self, expandTime):
     27         if expandTime > RADIAL_MENU_EXPAND_DELAY_MAX:
     28             settings.user.ui.Set('actionMenuExpandTime', RADIAL_MENU_EXPAND_DELAY_MAX)
     29         elif expandTime < RADIAL_MENU_EXPAND_DELAY_MIN:
     30             settings.user.ui.Set('actionMenuExpandTime', RADIAL_MENU_EXPAND_DELAY_MIN)
     31 
     32     def TryExpandActionMenu(self, itemID, clickedObject, *args, **kwargs):
     33         if self.command_blocker.is_blocked(['radialmenu', 'radialmenu.expand']):
     34             return 0
     35         if uicore.uilib.Key(uiconst.VK_MENU) or uicore.uilib.Key(uiconst.VK_CONTROL):
     36             return 0
     37         isRadialMenuButtonActive = spaceRadialMenuFunctions.IsRadialMenuButtonActive()
     38         if not isRadialMenuButtonActive:
     39             return 0
     40         x = uicore.uilib.x
     41         y = uicore.uilib.y
     42         expandTime = settings.user.ui.Get('actionMenuExpandTime', RADIAL_MENU_EXPAND_DELAY_DEFAULT)
     43         self._ClampActionMenuExpandTime(expandTime)
     44         menuType = NORMAL_RADIAL_MENU
     45         noDelay = False
     46         combatCmdLoaded = uicore.cmd.combatCmdLoaded
     47         if combatCmdLoaded:
     48             if combatCmdLoaded.name == 'CmdOpenBroadcastRadialMenu':
     49                 menuType = BROADCAST_RADIAL_MENU
     50                 noDelay = True
     51             elif combatCmdLoaded.name == 'CmdOpenRadialMenu':
     52                 noDelay = True
     53         elif isRadialMenuButtonActive == BROADCAST_RADIAL_MENU:
     54             menuType = BROADCAST_RADIAL_MENU
     55         if noDelay or not expandTime:
     56             uthread.new(self._TryExpandActionMenu, itemID, x, y, clickedObject, menuType, **kwargs)
     57         else:
     58             self.expandTimer = timerstuff.AutoTimer(int(expandTime), self._TryExpandActionMenu, itemID, x, y, clickedObject, menuType, **kwargs)
     59         return 1
     60 
     61     def _TryExpandActionMenu(self, itemID, x, y, clickedObject, menuType = NORMAL_RADIAL_MENU, **kwargs):
     62         if getattr(clickedObject, 'isDragObject', False):
     63             if x != uicore.uilib.x or y != uicore.uilib.y:
     64                 return
     65         self.expandTimer = None
     66         if clickedObject.destroyed:
     67             return
     68         v = geo2.Vector(uicore.uilib.x - x, uicore.uilib.y - y)
     69         if int(geo2.Vec2Length(v) > 12):
     70             return
     71         self.ExpandActionMenu(itemID, x, y, clickedObject, menuType, **kwargs)
     72 
     73     def ExpandActionMenu(self, itemID, x, y, clickedObject, menuType = NORMAL_RADIAL_MENU, **kwargs):
     74         slimItem = None
     75         if idCheckers.IsCharacter(itemID):
     76             kwargs['charID'] = itemID
     77             slimItem = SlimItemFromCharID(itemID)
     78             if slimItem:
     79                 itemID = slimItem.itemID
     80         elif not itemID and 'bookmarkInfo' in kwargs:
     81             bookmarkInfo = kwargs['bookmarkInfo']
     82             bookmkarkItemID = getattr(bookmarkInfo, 'itemID', None)
     83             if bookmkarkItemID:
     84                 slimItem = uix.GetBallparkRecord(bookmkarkItemID)
     85         else:
     86             slimItem = uix.GetBallparkRecord(itemID)
     87         isRadialMenuButtonActive = spaceRadialMenuFunctions.IsRadialMenuButtonActive()
     88         if not isRadialMenuButtonActive:
     89             return
     90         uicore.layer.menu.Flush()
     91         uicore.uilib.tooltipHandler.CloseTooltip()
     92         if menuType == BROADCAST_RADIAL_MENU:
     93             radialMenuClass = RadialMenuBroadcast
     94         else:
     95             radialMenuClass = kwargs.get('radialMenuClass', RadialMenuSpace)
     96         radialMenu = radialMenuClass(name='radialMenu', parent=uicore.layer.menu, state=uiconst.UI_HIDDEN, align=uiconst.TOPLEFT, updateDisplayName=True, slimItem=slimItem, itemID=itemID, x=x, y=y, clickedObject=clickedObject, **kwargs)
     97         uicore.layer.menu.radialMenu = radialMenu
     98         uicore.uilib.SetMouseCapture(radialMenu)
     99         isRadialMenuButtonActive = spaceRadialMenuFunctions.IsRadialMenuButtonActive()
    100         if not isRadialMenuButtonActive:
    101             radialMenu.Close()
    102             return
    103         sm.StartService('stateSvc').SetState(itemID, state.mouseOver, 0)
    104         radialMenu.state = uiconst.UI_NORMAL
    105         sm.ScatterEvent('OnRadialMenuExpanded')
    106 
    107     def GetRadialMenuOwner(self):
    108         radialMenu = getattr(uicore.layer.menu, 'radialMenu', None)
    109         if radialMenu and not radialMenu.destroyed:
    110             radialMenuOwner = getattr(radialMenu, 'clickedObject', None)
    111             if radialMenuOwner and not radialMenuOwner.destroyed:
    112                 return radialMenuOwner