@@ -30,7 +30,6 @@ UnitService unitService
3030 "desc"
3131 ] ;
3232
33- // TODO: 当鼠标放到一个非 Modifier Leaf 上时, 会错误的显示描述
3433 public string GetHoverText ( Node rootNode , HoverParams request )
3534 {
3635 var localPosition = request . Position . ToLocalPosition ( ) ;
@@ -41,11 +40,11 @@ public string GetHoverText(Node rootNode, HoverParams request)
4140 var modifiers = new List < IModifier > ( 4 ) ;
4241 if ( pointedChild . TryGetNode ( out var node ) && rootNode . IsItemNode ( "technologies" , adjacentNode ) )
4342 {
44- GetModifiersForNode ( node , modifiers ) ;
43+ GetModifiersForNode ( node , modifiers , rootNode ) ;
4544 }
4645 else
4746 {
48- ProcessChildForModifiers ( pointedChild , modifiers ) ;
47+ ProcessChildForModifiers ( pointedChild , modifiers , adjacentNode , rootNode ) ;
4948 }
5049
5150 var descriptions = modifierDisplayService . GetDescription ( modifiers ) ;
@@ -62,22 +61,23 @@ public string GetHoverText(Node rootNode, HoverParams request)
6261 return builder . ToString ( ) ;
6362 }
6463
65- private void GetModifiersForNode ( Node node , List < IModifier > modifiers )
64+ private void GetModifiersForNode ( Node node , List < IModifier > modifiers , Node rootNode )
6665 {
6766 foreach ( var child in node . AllArray )
6867 {
69- ProcessChildForModifiers ( child , modifiers ) ;
68+ ProcessChildForModifiers ( child , modifiers , node , rootNode ) ;
7069 }
7170 }
7271
73- private void ProcessChildForModifiers ( Child child , List < IModifier > modifiers )
72+ private void ProcessChildForModifiers ( Child child , List < IModifier > modifiers , Node parent , Node rootNode )
7473 {
7574 if (
7675 child . TryGetLeaf ( out var leaf )
7776 && ! Array . Exists (
7877 LeafKeywords ,
7978 keyword => keyword . Equals ( leaf . Key , StringComparison . OrdinalIgnoreCase )
8079 )
80+ && ( unitService . Contains ( parent . Key ) || rootNode . IsItemNode ( "technologies" , parent ) )
8181 )
8282 {
8383 modifiers . Add ( LeafModifier . FromLeaf ( leaf ) ) ;
0 commit comments