Skip to content

Commit b08f57f

Browse files
Refactor to provide wrapper for all cooldowns so that they can have visibility toggled as group (for out of combat hiding)
Cleanup of some cooldown code GUI Edit Mode now displays shortcut keys
1 parent 107f450 commit b08f57f

File tree

3 files changed

+81
-80
lines changed

3 files changed

+81
-80
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Upgrading should retain settings as much as possible. All settings are currently
1717
## Change Log
1818
Version 0.0.3-beta
1919
+ Hides when out of combat (can toggle with /setoption efdFreeHUDHideOutOfCombat)
20+
+ Hotkey reminders are now visible in GUI Edit Mode if enabled
2021
+ Fixes bug where multi character hotkey codes (mostly "MB#") were being truncated when displayed
2122
+ Fixes bug where hotkey icon remained visible after reloading on shotgun abilities actively on cooldown
2223

efd/FreeHUD/FreeHUD.as

+26-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.GameInterface.Game.Shortcut;
88
import com.GameInterface.Game.ShortcutData;
99
import com.GameInterface.Inventory;
1010
import com.GameInterface.Utils;
11+
import com.Utils.GlobalSignal;
1112
import com.Utils.ID32;
1213

1314
import efd.FreeHUD.lib.Mod;
@@ -17,7 +18,6 @@ import efd.FreeHUD.lib.sys.ConfigManager;
1718
// Config window
1819
// Better handling of gimick abililites
1920
// Wings, Health Pots, Dodge, Belt, Repair?
20-
// Show only in combat
2121
// Hide default interface
2222

2323
class efd.FreeHUD.FreeHUD extends Mod {
@@ -57,6 +57,8 @@ class efd.FreeHUD.FreeHUD extends Mod {
5757
Config.NewSetting("ShowSGHotkeys", true);
5858

5959
Equipment = new Inventory(new ID32(_global.Enums.InvType.e_Type_GC_WeaponContainer, Character.GetClientCharID().GetInstance()));
60+
61+
CooldownWrapper = HostClip.createEmptyMovieClip("CooldownWrapper", HostClip.getNextHighestDepth());
6062
}
6163

6264
private function Activate():Void {
@@ -65,7 +67,7 @@ class efd.FreeHUD.FreeHUD extends Mod {
6567
var layoutSettings:Array = Config.GetValue("CooldownLayout");
6668
for (var i:Number = 0; i < CooldownCount; ++i) {
6769
var layout:Object = layoutSettings[i];
68-
var cooldown:MovieClip = HostClip.attachMovie("efdFreeHUDGeneralCooldown", "CooldownDisplay" + i, HostClip.getNextHighestDepth(),
70+
var cooldown:MovieClip = CooldownWrapper.attachMovie("efdFreeHUDGeneralCooldown", "CooldownDisplay" + i, CooldownWrapper.getNextHighestDepth(),
6971
{_x : layout.x, _y : layout.y, _xscale : layout.scale, _yscale : layout.scale, _alpha : layout.alpha,
7072
SlotID : (i == GadgetIndex ? 0 : i + AbilityOffset),
7173
HideReady : Config.GetValue("HideReady"),
@@ -105,6 +107,7 @@ class efd.FreeHUD.FreeHUD extends Mod {
105107
}
106108

107109
private function LoadComplete():Void {
110+
// TODO: Setting DVs are frequently used, see about adding feature into lib.Config
108111
HideReadyDV = DistributedValue.Create(DVPrefix + ModName + "HideReady");
109112
HideReadyDV.SetValue(Config.GetValue("HideReady"));
110113
HideReadyDV.SignalChanged.Connect(HideReadyChanged, this);
@@ -117,9 +120,26 @@ class efd.FreeHUD.FreeHUD extends Mod {
117120
SGHotkeysDV = DistributedValue.Create(DVPrefix + ModName + "ShowSGHotkeys");
118121
SGHotkeysDV.SetValue(Config.GetValue("ShowSGHotkeys"));
119122
SGHotkeysDV.SignalChanged.Connect(SGHotkeysChanged, this);
123+
124+
GlobalSignal.SignalSetGUIEditMode.Connect(ToggleGEM, this);
125+
var clientChar:Character = Character.GetClientCharacter();
126+
clientChar.SignalToggleCombat.Connect(UpdateWrapperVisibility, this);
127+
UpdateWrapperVisibility();
128+
120129
super.LoadComplete();
121130
}
122131

132+
private function UpdateWrapperVisibility():Void {
133+
CooldownWrapper._visible = EnableGEM ||
134+
!Config.GetValue("HideOutOfCombat") ||
135+
Character.GetClientCharacter().IsThreatened();
136+
}
137+
138+
private function ToggleGEM(unlock:Boolean):Void {
139+
EnableGEM = unlock;
140+
UpdateWrapperVisibility();
141+
}
142+
123143
private function ConfigChanged(setting:String, newValue, oldValue):Void {
124144
switch(setting) {
125145
case "CooldownLayout": {
@@ -141,9 +161,7 @@ class efd.FreeHUD.FreeHUD extends Mod {
141161
break;
142162
}
143163
case "HideOutOfCombat": {
144-
for (var i : Number = 0; i < CooldownCount; ++i) {
145-
CooldownViews[i].SetOutOfCombatVisibility(newValue);
146-
}
164+
UpdateWrapperVisibility();
147165
break;
148166
}
149167
case "ShowSGReloads": {
@@ -281,6 +299,9 @@ class efd.FreeHUD.FreeHUD extends Mod {
281299
private static var CooldownCount:Number = AbilityCount + 1;
282300
private static var GadgetIndex = AbilityCount;
283301

302+
private var EnableGEM:Boolean = false;
303+
304+
private var CooldownWrapper:MovieClip;
284305
private var CooldownViews:Array;
285306
private var HideReadyDV:DistributedValue;
286307
private var HideOutOfCombatDV:DistributedValue;

efd/FreeHUD/gui/BasicCooldown.as

+54-75
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Released under the terms of the MIT License
33
// https://github.com/Earthfiredrake/SWL-FreeHUD
44

5-
import com.GameInterface.Game.Character;
65
import com.GameInterface.Game.Shortcut;
76
import com.GameInterface.Game.ShortcutData;
87
import com.GameInterface.InventoryItem;
@@ -33,32 +32,12 @@ class efd.FreeHUD.gui.BasicCooldown extends MovieClip {
3332

3433
GlobalSignal.SignalSetGUIEditMode.Connect(ManageGEM, this);
3534
SignalGeometryChanged = new Signal();
36-
37-
var clientChar:Character = Character.GetClientCharacter();
38-
clientChar.SignalToggleCombat.Connect(NotifyInCombat, this);
39-
NotifyInCombat(clientChar.IsThreatened());
4035
}
4136

42-
public function ChangeAbility(data:Object):Void {
43-
if (data.m_Icon) {
44-
LoadIconClip(Utils.CreateResourceString(data.m_Icon));
45-
Enabled = SlotID == GadgetSlot || data.m_Enabled;
46-
} else { Clear(); }
47-
UpdateVisuals();
48-
}
49-
50-
public function EnableAbility(enabled:Boolean):Void {
51-
Enabled = enabled;
52-
UpdateVisuals();
53-
}
37+
/// Mod Settings Changes
5438

5539
public function SetOffCDBehaviour(hideReady:Boolean):Void {
56-
HideReady = hideReady;
57-
UpdateVisuals();
58-
}
59-
60-
public function SetOutOfCombatVisibility(hideOutOfCombat:Boolean):Void {
61-
HideOutOfCombat = hideOutOfCombat;
40+
HideReady = hideReady;
6241
UpdateVisuals();
6342
}
6443

@@ -68,23 +47,6 @@ class efd.FreeHUD.gui.BasicCooldown extends MovieClip {
6847
UpdateVisuals();
6948
}
7049

71-
private function Clear():Void {
72-
Enabled = true;
73-
74-
if (IsLoaded) {
75-
AbilityIconLoader.unloadClip(AbilityIcon);
76-
IsLoaded = false;
77-
}
78-
}
79-
80-
private function LoadIconClip(path:String):Void {
81-
if (IsLoaded) { AbilityIconLoader.unloadClip(AbilityIcon); }
82-
IsLoaded = AbilityIconLoader.loadClip(path, AbilityIcon);
83-
84-
AbilityIcon._xscale = m_Background._width;
85-
AbilityIcon._yscale = m_Background._height;
86-
}
87-
8850
/// GUI Edit Mode
8951

9052
private function ManageGEM(unlock:Boolean):Void {
@@ -115,7 +77,38 @@ class efd.FreeHUD.gui.BasicCooldown extends MovieClip {
11577
}
11678
}
11779

118-
/// Cooldowns
80+
/// Game State Changes
81+
82+
public function ChangeAbility(data:Object):Void {
83+
if (data.m_Icon) {
84+
LoadIconClip(Utils.CreateResourceString(data.m_Icon));
85+
Enabled = SlotID == GadgetSlot || data.m_Enabled;
86+
} else { Clear(); }
87+
UpdateVisuals();
88+
}
89+
90+
public function EnableAbility(enabled:Boolean):Void {
91+
Enabled = enabled;
92+
UpdateVisuals();
93+
}
94+
95+
private function Clear():Void {
96+
Enabled = true;
97+
98+
if (IsLoaded) {
99+
AbilityIconLoader.unloadClip(AbilityIcon);
100+
IsLoaded = false;
101+
}
102+
}
103+
104+
private function LoadIconClip(path:String):Void {
105+
if (IsLoaded) { AbilityIconLoader.unloadClip(AbilityIcon); }
106+
IsLoaded = AbilityIconLoader.loadClip(path, AbilityIcon);
107+
108+
AbilityIcon._xscale = m_Background._width;
109+
AbilityIcon._yscale = m_Background._height;
110+
}
111+
119112
public function AddCooldown(cooldownStart:Number, cooldownEnd:Number, cooldownFlags:Number):Void {
120113
if (cooldownFlags & _global.Enums.TemplateLock.e_GlobalCooldown) { return; }
121114
AbilityIcon._alpha = 35;
@@ -143,47 +136,34 @@ class efd.FreeHUD.gui.BasicCooldown extends MovieClip {
143136
}
144137

145138
/// Display Adjustments
146-
private function NotifyInCombat(inCombat:Boolean):Void {
147-
IsInCombat = inCombat;
148-
if (HideOutOfCombat) { UpdateVisuals(); }
149-
}
150-
151-
private function SetOffCD():Void {
152-
m_CooldownLine._visible = false;
153-
m_OuterLine._visible = true;
154-
Colors.ApplyColor(m_OuterLine, Colors.e_ColorBlack);
155-
}
156-
157-
public function SetDisabled():Void {
158-
SetOffCD();
159-
m_Background._visible = false;
160-
161-
AbilityIcon._alpha = 50;
162-
}
163-
164-
public function SetAvailable():Void {
165-
SetOffCD();
166-
m_Background._visible = true;
167-
168-
AbilityIcon._alpha = 100;
169-
m_Background._alpha = 100;
170-
}
171-
172139
private function UpdateVisuals():Void {
173140
_visible = GemManager ||
174141
(IsLoaded &&
175-
(IsInCombat || !HideOutOfCombat) &&
176142
((ShowSGReloads && IsSGReload()) ||
177-
((!HideReady || CooldownOverlay) &&
178-
(SlotID == GadgetSlot || HasAbilityCooldown()))));
179-
m_HotkeyLabel._visible = ShowSGHotkeys && IsSGReload();
143+
CooldownOverlay ||
144+
(!HideReady && HasAbilityCooldown())));
145+
m_HotkeyLabel._visible = ShowSGHotkeys && (GemManager || IsSGReload());
180146
if (CooldownOverlay != undefined) { return; }
181-
if (Enabled) { SetAvailable(); }
182-
else { SetDisabled(); }
147+
148+
SetOffCDVisual();
149+
SetEnabledVisual();
150+
}
151+
152+
private function SetOffCDVisual():Void {
153+
m_CooldownLine._visible = false;
154+
m_OuterLine._visible = true;
155+
Colors.ApplyColor(m_OuterLine, Colors.e_ColorBlack);
156+
}
157+
158+
private function SetEnabledVisual():Void {
159+
m_Background._visible = Enabled;
160+
m_Background._alpha = 100;
161+
AbilityIcon._alpha = Enabled ? 100 : 50;
183162
}
184163

185164
private function HasAbilityCooldown():Boolean {
186-
return TooltipDataProvider.GetSpellTooltip(Shortcut.m_ShortcutList[SlotID].m_SpellId, 0).m_RecastTime > 0;
165+
return SlotID == GadgetSlot ||
166+
TooltipDataProvider.GetSpellTooltip(Shortcut.m_ShortcutList[SlotID].m_SpellId, 0).m_RecastTime > 0;
187167
}
188168

189169
private function IsSGReload():Boolean {
@@ -200,7 +180,6 @@ class efd.FreeHUD.gui.BasicCooldown extends MovieClip {
200180
private var IsLoaded:Boolean = false;
201181

202182
private var HideReady:Boolean = false;
203-
private var HideOutOfCombat:Boolean = true;
204183
private var IsInCombat:Boolean = false;
205184
private var ShowSGReloads:Boolean = true;
206185
private var ShowSGHotkeys:Boolean = true;

0 commit comments

Comments
 (0)