99using Intersect . Enums ;
1010using Intersect . Framework . Core . GameObjects . Items ;
1111using Intersect . Framework . Core . GameObjects . PlayerClass ;
12- using Intersect . GameObjects ;
13- using Intersect . Network . Packets . Server ;
1412
1513namespace Intersect . Client . Interface . Game . Character ;
1614
@@ -71,40 +69,24 @@ public partial class CharacterWindow
7169 public int Y ;
7270
7371 //Extra Buffs
72+ Button _detailsButton ;
73+
7474 ClassDescriptor mPlayer ;
7575
76- Label mHpRegen ;
77-
7876 long HpRegenAmount ;
7977
80- Label mManaRegen ;
81-
8278 long ManaRegenAmount ;
8379
84- Label mLifeSteal ;
85-
8680 int LifeStealAmount = 0 ;
8781
88- Label mAttackSpeed ;
89-
90- Label mExtraExp ;
91-
9282 int ExtraExpAmount = 0 ;
9383
94- Label mLuck ;
95-
9684 int LuckAmount = 0 ;
9785
98- Label mTenacity ;
99-
10086 int TenacityAmount = 0 ;
10187
102- Label mCooldownReduction ;
103-
10488 int CooldownAmount = 0 ;
10589
106- Label mManaSteal ;
107-
10890 int ManaStealAmount = 0 ;
10991
11092 //Init
@@ -168,18 +150,12 @@ public CharacterWindow(Canvas gameCanvas)
168150 Items [ i ] . Setup ( ) ;
169151 }
170152
171- var extraBuffsLabel = new Label ( mCharacterWindow , "ExtraBuffsLabel" ) ;
172- extraBuffsLabel . SetText ( Strings . Character . ExtraBuffs ) ;
173-
174- mHpRegen = new Label ( mCharacterWindow , "HpRegen" ) ;
175- mManaRegen = new Label ( mCharacterWindow , "ManaRegen" ) ;
176- mLifeSteal = new Label ( mCharacterWindow , "Lifesteal" ) ;
177- mAttackSpeed = new Label ( mCharacterWindow , "AttackSpeed" ) ;
178- mExtraExp = new Label ( mCharacterWindow , "ExtraExp" ) ;
179- mLuck = new Label ( mCharacterWindow , "Luck" ) ;
180- mTenacity = new Label ( mCharacterWindow , "Tenacity" ) ;
181- mCooldownReduction = new Label ( mCharacterWindow , "CooldownReduction" ) ;
182- mManaSteal = new Label ( mCharacterWindow , "Manasteal" ) ;
153+ _detailsButton = new Button ( mCharacterWindow , nameof ( _detailsButton ) )
154+ {
155+ Text = Strings . Character . ExtraBuffDetails ,
156+ } ;
157+ _detailsButton . HoverEnter += UpdateExtraBuffTooltip ; // Update Tooltip on hover.
158+ UpdateExtraBuffTooltip ( null , null ) ; // Initial tooltip update.
183159
184160 mCharacterWindow . LoadJsonUi ( GameContentManager . UI . InGame , Graphics . Renderer . GetResolutionString ( ) ) ;
185161 }
@@ -411,29 +387,16 @@ public void UpdateExtraBuffs()
411387 mPlayer = ClassDescriptor . Get ( Globals . Me ? . Class ?? Guid . Empty ) ;
412388
413389 //Getting HP and Mana Regen
414- if ( mPlayer != null )
415- {
416- HpRegenAmount = mPlayer . VitalRegen [ 0 ] ;
417- mHpRegen . SetText ( Strings . Character . HealthRegen . ToString ( HpRegenAmount ) ) ;
418- ManaRegenAmount = mPlayer . VitalRegen [ 1 ] ;
419- mManaRegen . SetText ( Strings . Character . ManaRegen . ToString ( ManaRegenAmount ) ) ;
420- }
390+ HpRegenAmount = mPlayer ? . VitalRegen [ ( int ) Vital . Health ] ?? 0 ;
391+ ManaRegenAmount = mPlayer ? . VitalRegen [ ( int ) Vital . Mana ] ?? 0 ;
421392
422- CooldownAmount = 0 ;
393+ //Reset all values
423394 LifeStealAmount = 0 ;
424395 TenacityAmount = 0 ;
425396 LuckAmount = 0 ;
426397 ExtraExpAmount = 0 ;
427398 ManaStealAmount = 0 ;
428-
429- mLifeSteal . SetText ( Strings . Character . Lifesteal . ToString ( 0 ) ) ;
430- mExtraExp . SetText ( Strings . Character . ExtraExp . ToString ( 0 ) ) ;
431- mLuck . SetText ( Strings . Character . Luck . ToString ( 0 ) ) ;
432- mTenacity . SetText ( Strings . Character . Tenacity . ToString ( 0 ) ) ;
433- mCooldownReduction . SetText ( Strings . Character . CooldownReduction . ToString ( 0 ) ) ;
434- mManaSteal . SetText ( Strings . Character . Manasteal . ToString ( 0 ) ) ;
435-
436- mAttackSpeed . SetText ( Strings . Character . AttackSpeed . ToString ( Globals . Me . CalculateAttackTime ( ) / 1000f ) ) ;
399+ CooldownAmount = 0 ;
437400 }
438401
439402 /// <summary>
@@ -449,20 +412,18 @@ public void UpdateExtraBuffs(Guid itemId)
449412 return ;
450413 }
451414
452- //Getting HP and Mana Regen
453- if ( item . VitalsRegen [ 0 ] != 0 )
415+ //Getting HP and Mana Regen from items
416+ if ( item . VitalsRegen [ ( int ) Vital . Health ] != 0 )
454417 {
455- HpRegenAmount += item . VitalsRegen [ 0 ] ;
456- mHpRegen ? . SetText ( Strings . Character . HealthRegen . ToString ( HpRegenAmount ) ) ;
418+ HpRegenAmount += item . VitalsRegen [ ( int ) Vital . Health ] ;
457419 }
458420
459- if ( item . VitalsRegen [ 1 ] != 0 )
421+ if ( item . VitalsRegen [ ( int ) Vital . Mana ] != 0 )
460422 {
461- ManaRegenAmount += item . VitalsRegen [ 1 ] ;
462- mManaRegen ? . SetText ( Strings . Character . ManaRegen . ToString ( ManaRegenAmount ) ) ;
423+ ManaRegenAmount += item . VitalsRegen [ ( int ) Vital . Mana ] ;
463424 }
464425
465- //Getting extra buffs
426+ //Getting extra buffs from items
466427 if ( item . Effects . Find ( effect => effect . Type != ItemEffect . None && effect . Percentage > 0 ) != default )
467428 {
468429 foreach ( var effect in item . Effects )
@@ -476,39 +437,42 @@ public void UpdateExtraBuffs(Guid itemId)
476437 {
477438 case ItemEffect . CooldownReduction :
478439 CooldownAmount += effect . Percentage ;
479- mCooldownReduction ? . SetText ( Strings . Character . CooldownReduction . ToString ( CooldownAmount ) ) ;
480-
481440 break ;
482441 case ItemEffect . Lifesteal :
483442 LifeStealAmount += effect . Percentage ;
484- mLifeSteal ? . SetText ( Strings . Character . Lifesteal . ToString ( LifeStealAmount ) ) ;
485-
486443 break ;
487444 case ItemEffect . Tenacity :
488445 TenacityAmount += effect . Percentage ;
489- mTenacity ? . SetText ( Strings . Character . Tenacity . ToString ( TenacityAmount ) ) ;
490-
491446 break ;
492447 case ItemEffect . Luck :
493448 LuckAmount += effect . Percentage ;
494- mLuck ? . SetText ( Strings . Character . Luck . ToString ( LuckAmount ) ) ;
495-
496449 break ;
497450 case ItemEffect . EXP :
498451 ExtraExpAmount += effect . Percentage ;
499- mExtraExp ? . SetText ( Strings . Character . ExtraExp . ToString ( ExtraExpAmount ) ) ;
500-
501452 break ;
502453 case ItemEffect . Manasteal :
503454 ManaStealAmount += effect . Percentage ;
504- mManaSteal ? . SetText ( Strings . Character . Manasteal . ToString ( ManaStealAmount ) ) ;
505-
506455 break ;
507456 }
508457 }
509458 }
510459 }
511460
461+ public void UpdateExtraBuffTooltip ( Base ? sender , EventArgs ? arguments )
462+ {
463+ var tooltip = new System . Text . StringBuilder ( ) ;
464+ tooltip . AppendLine ( Strings . Character . HealthRegen . ToString ( HpRegenAmount ) ) ;
465+ tooltip . AppendLine ( Strings . Character . ManaRegen . ToString ( ManaRegenAmount ) ) ;
466+ tooltip . AppendLine ( Strings . Character . Lifesteal . ToString ( LifeStealAmount ) ) ;
467+ tooltip . AppendLine ( Strings . Character . AttackSpeed . ToString ( Globals . Me ? . CalculateAttackTime ( ) / 1000f ) ) ;
468+ tooltip . AppendLine ( Strings . Character . ExtraExp . ToString ( ExtraExpAmount ) ) ;
469+ tooltip . AppendLine ( Strings . Character . Luck . ToString ( LuckAmount ) ) ;
470+ tooltip . AppendLine ( Strings . Character . Tenacity . ToString ( TenacityAmount ) ) ;
471+ tooltip . AppendLine ( Strings . Character . CooldownReduction . ToString ( CooldownAmount ) ) ;
472+ tooltip . AppendLine ( Strings . Character . Manasteal . ToString ( ManaStealAmount ) ) ;
473+ _detailsButton . SetToolTipText ( tooltip . ToString ( ) ) ;
474+ }
475+
512476 /// <summary>
513477 /// Show the window
514478 /// </summary>
0 commit comments