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

skillPlanDropIndicatorCont.py (3960B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\skillPlanEditor\skillPlanDropIndicatorCont.py
      2 import uthread2
      3 from carbonui.control.dragdrop import dragdata
      4 from carbonui.primitives.container import Container
      5 from carbonui import const as uiconst
      6 from carbonui.uicore import uicore
      7 from eve.client.script.ui.shared.neocom.skillConst import COLOR_MOVE_INDICATOR
      8 from eve.client.script.ui.skillPlan import skillPlanUtil
      9 from eve.client.script.ui.skillPlan.skillPlanEditor.dragIndicatorLine import DragIndicatorLine
     10 from eve.client.script.ui.skillPlan.skillPlanEditor.skillPlanEditorSkillEntry import VALID_LINE_COLOR, INVALID_LINE_COLOR
     11 
     12 class BaseDropIndicatorCont(Container):
     13     default_height = 20
     14     default_state = uiconst.UI_NORMAL
     15     default_name = 'baseDropIndicatorCont'
     16 
     17     def ApplyAttributes(self, attributes):
     18         Container.ApplyAttributes(self, attributes)
     19         self.indicatorLine = DragIndicatorLine(parent=self, align=uiconst.TOTOP_NOPUSH, idx=0, padRight=11)
     20         self.HideIndicator()
     21 
     22     def OnDragEnterFromParent(self, *args, **kwargs):
     23         raise NotImplementedError
     24 
     25     def ShowIndicator(self, isValid = True):
     26         self.indicatorLine.Show()
     27         self.indicatorLine.color = VALID_LINE_COLOR if isValid else INVALID_LINE_COLOR
     28 
     29     def HideIndicator(self):
     30         self.indicatorLine.Hide()
     31 
     32 
     33 class SkillPlanDropIndicatorCont(BaseDropIndicatorCont):
     34     default_name = 'skillPlanDropIndicatorCont'
     35 
     36     def OnDragEnterFromParent(self, draggedEntries, skillPlan, scroll):
     37         dragData = draggedEntries[0]
     38         while uicore.uilib.mouseOver.IsUnder(self) or uicore.uilib.mouseOver is self:
     39             if self.destroyed or not skillPlan or not uicore.IsDragging():
     40                 self.HideIndicator()
     41                 return
     42             if scroll.IsVerticalScrollBarVisible():
     43                 if scroll.GetPositionVertical() >= 1.0:
     44                     if isinstance(dragData, dragdata.SkillLevelDragData):
     45                         originalIndex = skillPlan.GetSkillRequirementIndex(dragData.typeID, dragData.level)
     46                         dropIndex = len(skillPlan.GetSkillRequirements())
     47                         isValidMove = skillPlan.IsSkillRequirementMoveValid(originalIndex, dropIndex)
     48                         self.ShowIndicator(isValidMove)
     49                     elif skillPlanUtil.IsValidContentsDragData(dragData):
     50                         self.ShowIndicator()
     51                 else:
     52                     scroll.ScrollMoveVertical(0.1)
     53             uthread2.Sleep(0.1)
     54 
     55         self.HideIndicator()
     56 
     57 
     58 class SkillQueueDropIndicatorCont(BaseDropIndicatorCont):
     59     default_name = 'SkillQueueDropIndicatorCont'
     60 
     61     def OnDragEnterFromParent(self, draggedEntries, scroll):
     62         dragData = draggedEntries[0]
     63         skillQueueSvc = sm.GetService('skillqueue')
     64         while uicore.uilib.mouseOver.IsUnder(self) or uicore.uilib.mouseOver is self:
     65             if self.destroyed or not uicore.IsDragging():
     66                 self.HideIndicator()
     67                 return
     68             if scroll.IsScrollbarVisible():
     69                 if scroll.GetScrollProportion() >= 1.0:
     70                     if IsMultiSkillEntryMove(draggedEntries):
     71                         self.ShowNeutralMoveIndicator()
     72                     else:
     73                         isValidMove = skillQueueSvc.IsMoveAllowed(dragData, None)
     74                         self.ShowIndicator(isValidMove)
     75                 else:
     76                     scroll.Scroll(-0.2)
     77             uthread2.Sleep(0.1)
     78 
     79         self.HideIndicator()
     80 
     81     def ShowNeutralMoveIndicator(self):
     82         self.indicatorLine.Show()
     83         self.indicatorLine.color = COLOR_MOVE_INDICATOR
     84 
     85 
     86 def IsMultiSkillEntryMove(draggedEntries):
     87     if len(draggedEntries) < 2:
     88         return False
     89     for data in draggedEntries:
     90         if getattr(data, '__guid__', None) != 'listentry.SkillQueueSkillEntry':
     91             return False
     92 
     93     return True