lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.21/] [KragenBars/] [SkillSlot.lua] - Blame information for rev 72

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 72 Kragenwar-3044
import "Turbine.UI";
2 Kragenwar-3044
import "Turbine.UI.Lotro";
3 Kragenwar-3044
import "KragenPlugs.Utils";
4 Kragenwar-3044
import "KragenPlugs.Utils.Extensions";
5 Kragenwar-3044
import "KragenPlugs.KragenBars";
6 Kragenwar-3044
 
7 Kragenwar-3044
SkillSlot = class ( KragenPlugs.Utils.Extensions.SimpleWindow );
8 Kragenwar-3044
 
9 Kragenwar-3044
function SkillSlot:Constructor ( parent, x, y, active, level, hex )
10 Kragenwar-3044
        KragenPlugs.Utils.Extensions.SimpleWindow.Constructor( self );
11 Kragenwar-3044
 
12 Kragenwar-3044
        -- declare variables
13 Kragenwar-3044
        self.parent     = parent;
14 Kragenwar-3044
    self.x              = x;
15 Kragenwar-3044
        self.y          = y;
16 Kragenwar-3044
        self.active     = active;
17 Kragenwar-3044
        self.level              = level;
18 Kragenwar-3044
        self.hex                = hex;
19 Kragenwar-3044
        self.effectid   = 0;
20 Kragenwar-3044
        self.state      = false;
21 Kragenwar-3044
        self.hover              = false;
22 Kragenwar-3044
        self.incombat   = true;
23 Kragenwar-3044
        self.outcombat  = true;
24 Kragenwar-3044
 
25 Kragenwar-3044
        -- convert level and hex into a table
26 Kragenwar-3044
        if (type(level) ~= "table") then
27 Kragenwar-3044
                self.level = { level };
28 Kragenwar-3044
                self.hex    = { hex };
29 Kragenwar-3044
        else
30 Kragenwar-3044
            self.level = level;
31 Kragenwar-3044
            self.hex = hex;
32 Kragenwar-3044
        end
33 Kragenwar-3044
 
34 Kragenwar-3044
        -- QUICKSLOT
35 Kragenwar-3044
        self.quickslot = Turbine.UI.Lotro.Quickslot();
36 Kragenwar-3044
        self.quickslot:SetParent(self);
37 Kragenwar-3044
        self.quickslot:SetSize(35, 35);
38 Kragenwar-3044
        self.quickslot:SetZOrder(0);
39 Kragenwar-3044
        self.quickslot:SetVisible(true);
40 Kragenwar-3044
 
41 Kragenwar-3044
        -- TIMER
42 Kragenwar-3044
        self.timer = Timer();
43 Kragenwar-3044
        self.timerOn = true;
44 Kragenwar-3044
        self.timerEnd = true;
45 Kragenwar-3044
 
46 Kragenwar-3044
        -- TIMER EVENT
47 Kragenwar-3044
        self.timer.TimerElapsed = function ()
48 Kragenwar-3044
        if (self.timerEnd) then
49 Kragenwar-3044
                self:SetActive( true );
50 Kragenwar-3044
                        self:SetHover( true );
51 Kragenwar-3044
                else
52 Kragenwar-3044
                    self:SetActive( false );
53 Kragenwar-3044
                    self.parent:SetZOrder(-10);
54 Kragenwar-3044
                end
55 Kragenwar-3044
        end
56 Kragenwar-3044
 
57 Kragenwar-3044
        -- set properties
58 Kragenwar-3044
        self:SetParent( parent );
59 Kragenwar-3044
        self:SetPosition( (x - 1) * 35, (y - 1) * 35 );
60 Kragenwar-3044
        self:SetSize(35, 35);
61 Kragenwar-3044
        self:SetVisible(true);
62 Kragenwar-3044
        self:SetFadeSpeed(.3);
63 Kragenwar-3044
        self:SetActive(self.active);
64 Kragenwar-3044
 
65 Kragenwar-3044
        -- COLOR BAND
66 Kragenwar-3044
        self.border = Turbine.UI.Window();
67 Kragenwar-3044
        self.bordervisible = true;
68 Kragenwar-3044
        self.border:SetSize(36, 36);
69 Kragenwar-3044
        self.border:SetPosition(self:PointToScreen(1, 1));
70 Kragenwar-3044
        self.border:SetZOrder(-20);
71 Kragenwar-3044
        self.border:SetVisible(false);
72 Kragenwar-3044
 
73 Kragenwar-3044
        -- EVENTS
74 Kragenwar-3044
        -- hover mouse enter event
75 Kragenwar-3044
        self.quickslot.MouseEnter = function(sender,args)
76 Kragenwar-3044
        if (self.hover and self.active and ( ( vars.player:IsInCombat() and self.incombat ) or ( not vars.player:IsInCombat() and self.outcombat ) )) then
77 Kragenwar-3044
                        self:SetOpacity(settings.opacity);
78 Kragenwar-3044
                end
79 Kragenwar-3044
        end
80 Kragenwar-3044
 
81 Kragenwar-3044
        -- hover mouse leave event
82 Kragenwar-3044
        self.quickslot.MouseLeave = function(sender,args)
83 Kragenwar-3044
            if (self.hover and self.active and ( ( vars.player:IsInCombat() and self.incombat ) or ( not vars.player:IsInCombat() and self.outcombat ) )) then
84 Kragenwar-3044
                        self:SetOpacity(settings.opacity * .5);
85 Kragenwar-3044
                end
86 Kragenwar-3044
        end
87 Kragenwar-3044
 
88 Kragenwar-3044
        -- swap positions when skill is dropped on the skill slot
89 Kragenwar-3044
        self.quickslot.DragDrop = function (sender, args)
90 Kragenwar-3044
                self:ResetQuickslot();
91 Kragenwar-3044
        KragenBars:SwapSlots(self, args.DragDropInfo:GetShortcut():GetData());
92 Kragenwar-3044
        end
93 Kragenwar-3044
 
94 Kragenwar-3044
end
95 Kragenwar-3044
 
96 Kragenwar-3044
-- SET ACTIVE (To be used in place of SetVisible)
97 Kragenwar-3044
function SkillSlot:SetActive( active )
98 Kragenwar-3044
        self.active = active;
99 Kragenwar-3044
        if ( self.active and ( ( vars.player:IsInCombat() and self.incombat ) or ( not vars.player:IsInCombat() and self.outcombat ) ) ) then
100 Kragenwar-3044
                if (self.hover) then
101 Kragenwar-3044
                    self:SetOpacity(settings.opacity * .5)
102 Kragenwar-3044
                else
103 Kragenwar-3044
                    self:SetOpacity(settings.opacity)
104 Kragenwar-3044
                end
105 Kragenwar-3044
                self:ResetQuickslot();
106 Kragenwar-3044
        else
107 Kragenwar-3044
                self:SetOpacity(0);
108 Kragenwar-3044
        if (self.quickslot ~= nil and self.quickslot:GetShortcut():GetData() ~= "") then
109 Kragenwar-3044
                    self.quickslot:SetShortcut( Turbine.UI.Lotro.Shortcut( Turbine.UI.Lotro.ShortcutType.Undefined, "" ) );
110 Kragenwar-3044
                end
111 Kragenwar-3044
        end
112 Kragenwar-3044
 
113 Kragenwar-3044
end
114 Kragenwar-3044
 
115 Kragenwar-3044
-- SET STATE (To be used to track the effect state of buffs/debuffs)
116 Kragenwar-3044
function SkillSlot:SetState( state, visible, id )
117 Kragenwar-3044
 
118 Kragenwar-3044
    -- update state and effect id
119 Kragenwar-3044
        if ( state ) then
120 Kragenwar-3044
                self.state = true;
121 Kragenwar-3044
                self.effectid = id;
122 Kragenwar-3044
        else
123 Kragenwar-3044
                if ( id == self.effectid ) then
124 Kragenwar-3044
                    self.state = false;
125 Kragenwar-3044
                        self.effectid = 0;
126 Kragenwar-3044
                end
127 Kragenwar-3044
 
128 Kragenwar-3044
        end
129 Kragenwar-3044
 
130 Kragenwar-3044
    -- update visibility
131 Kragenwar-3044
        if (self.effectid == 0 or state) then
132 Kragenwar-3044
        self:SetActive(visible);
133 Kragenwar-3044
        end
134 Kragenwar-3044
end
135 Kragenwar-3044
 
136 Kragenwar-3044
-- RESET QUICKSLOT SHORTCUT AND CHECK LEVEL
137 Kragenwar-3044
function SkillSlot:ResetQuickslot()
138 Kragenwar-3044
        if ( (self.active and self.level[2] ~= nil and vars.playerlevel >= self.level[2])) then
139 Kragenwar-3044
            self.quickslot:SetShortcut( Turbine.UI.Lotro.Shortcut( 6.000000, self.hex[2] ) );
140 Kragenwar-3044
        elseif ( (self.active and vars.playerlevel >= self.level[1])) then
141 Kragenwar-3044
            self.quickslot:SetShortcut( Turbine.UI.Lotro.Shortcut( 6.000000, self.hex[1] ) );
142 Kragenwar-3044
        else
143 Kragenwar-3044
                self.quickslot:SetShortcut( Turbine.UI.Lotro.Shortcut( Turbine.UI.Lotro.ShortcutType.Undefined, "" ) );
144 Kragenwar-3044
                self:SetOpacity(0);
145 Kragenwar-3044
        end
146 Kragenwar-3044
end
147 Kragenwar-3044
 
148 Kragenwar-3044
-- SET HOVER (Set the hover state)
149 Kragenwar-3044
function SkillSlot:SetHover(bol)
150 Kragenwar-3044
        self.hover = bol;
151 Kragenwar-3044
 
152 Kragenwar-3044
        if (self.active and ( ( vars.player:IsInCombat() and self.incombat ) or ( not vars.player:IsInCombat() and self.outcombat ) )) then
153 Kragenwar-3044
                if (bol) then
154 Kragenwar-3044
                        self:SetOpacity(settings.opacity * .5);
155 Kragenwar-3044
                else
156 Kragenwar-3044
                        self:SetOpacity(settings.opacity);
157 Kragenwar-3044
                end
158 Kragenwar-3044
        end
159 Kragenwar-3044
end
160 Kragenwar-3044
 
161 Kragenwar-3044
-- SET COMBAT (Sets the combat visibility variables)
162 Kragenwar-3044
function SkillSlot:SetCombat( incombat, outcombat )
163 Kragenwar-3044
        self.incombat   = incombat;
164 Kragenwar-3044
        self.outcombat  = outcombat;
165 Kragenwar-3044
        self:SetActive(self.active);
166 Kragenwar-3044
end
167 Kragenwar-3044
 
168 Kragenwar-3044
-- REFRESH COMBAT (Refresh Visibility for combat changes)
169 Kragenwar-3044
function SkillSlot:RefreshCombat()
170 Kragenwar-3044
        self:SetActive( self.active );
171 Kragenwar-3044
end
172 Kragenwar-3044
 
173 Kragenwar-3044
-- LOAD POSITION, RECALL SAVED POSITION AND PARENT
174 Kragenwar-3044
function SkillSlot:LoadPosition(data)
175 Kragenwar-3044
        self.x = data.pos[1];
176 Kragenwar-3044
        self.y = data.pos[2];
177 Kragenwar-3044
        self:SetPosition( (self.x - 1) * 35, (self.y - 1) * 35 );
178 Kragenwar-3044
    self.border:SetPosition(self:PointToScreen(1, 1));
179 Kragenwar-3044
 
180 Kragenwar-3044
        if (data.parent == nil) then
181 Kragenwar-3044
                self:SetParent(limbo);
182 Kragenwar-3044
        else
183 Kragenwar-3044
                self:SetParent(data.parent);
184 Kragenwar-3044
        end
185 Kragenwar-3044
 
186 Kragenwar-3044
        self.parent = data.parent;
187 Kragenwar-3044
end
188 Kragenwar-3044
 
189 Kragenwar-3044
-- SWAP POSITION WITH ANOTHER SKILLSLOT (REF)
190 Kragenwar-3044
function SkillSlot:SwapPosition(ref)
191 Kragenwar-3044
        local newx = ref.x;
192 Kragenwar-3044
        local newy = ref.y;
193 Kragenwar-3044
        local newparent = ref.parent;
194 Kragenwar-3044
 
195 Kragenwar-3044
    self:SetPosition( (newx - 1) * 35, (newy - 1) * 35 );
196 Kragenwar-3044
        self.border:SetPosition(self:PointToScreen(1, 1));
197 Kragenwar-3044
        self:SetParent(newparent);
198 Kragenwar-3044
        self:SetParent(newparent);
199 Kragenwar-3044
 
200 Kragenwar-3044
        if (not ref.blank) then
201 Kragenwar-3044
                if (self.parent ~= nil) then
202 Kragenwar-3044
                        ref:SetPosition( (self.x - 1) * 35, (self.y - 1) * 35 );
203 Kragenwar-3044
                        ref.border:SetPosition(ref:PointToScreen(1, 1));
204 Kragenwar-3044
                        ref:SetParent(self.parent);
205 Kragenwar-3044
                else
206 Kragenwar-3044
                        ref:SetParent(limbo);
207 Kragenwar-3044
                end
208 Kragenwar-3044
 
209 Kragenwar-3044
                ref.x = self.x;
210 Kragenwar-3044
                ref.y = self.y;
211 Kragenwar-3044
                ref.parent = self.parent;
212 Kragenwar-3044
                ref:SetActive(ref.active);
213 Kragenwar-3044
        end
214 Kragenwar-3044
 
215 Kragenwar-3044
        self.x = newx;
216 Kragenwar-3044
        self.y = newy;
217 Kragenwar-3044
        self.parent = newparent;
218 Kragenwar-3044
        self:SetActive(self.active);
219 Kragenwar-3044
 
220 Kragenwar-3044
 
221 Kragenwar-3044
end
222 Kragenwar-3044
 
223 Kragenwar-3044
-- UPDATE THE WINDOW STATE
224 Kragenwar-3044
function SkillSlot:Refresh()
225 Kragenwar-3044
        self:SetActive( self.active );
226 Kragenwar-3044
        self:RefreshBorders();
227 Kragenwar-3044
end
228 Kragenwar-3044
 
229 Kragenwar-3044
-- START TIMER
230 Kragenwar-3044
function SkillSlot:StartTimer(duration, bol)
231 Kragenwar-3044
        self.timer:Stop();
232 Kragenwar-3044
        self.timer:SetInterval(duration);
233 Kragenwar-3044
        self.timer:Start();
234 Kragenwar-3044
        self.timerEnd = bol;
235 Kragenwar-3044
end
236 Kragenwar-3044
 
237 Kragenwar-3044
-- ROTATE BAR: SWAP THE SLOTS X AND Y POSITION
238 Kragenwar-3044
function SkillSlot:RotateBar()
239 Kragenwar-3044
        local newx = self.y;
240 Kragenwar-3044
        local newy = self.x;
241 Kragenwar-3044
 
242 Kragenwar-3044
        self:SetPosition( (newx - 1) * 35, (newy - 1) * 35 );
243 Kragenwar-3044
 
244 Kragenwar-3044
        self.x = newx;
245 Kragenwar-3044
        self.y = newy;
246 Kragenwar-3044
end
247 Kragenwar-3044
 
248 Kragenwar-3044
function SkillSlot:SetColor(color)
249 Kragenwar-3044
        if (color == "purple") then
250 Kragenwar-3044
        self.border:SetBackColor(Turbine.UI.Color(.8, .0, 1));
251 Kragenwar-3044
        self.border:SetVisible(self.active and self.bordervisible and vars.playerlevel >= self.level[1]);
252 Kragenwar-3044
 
253 Kragenwar-3044
    elseif (color == "red") then
254 Kragenwar-3044
        self.border:SetBackColor(Turbine.UI.Color(1, 0, 0));
255 Kragenwar-3044
        self.border:SetVisible(self.active and self.bordervisible and vars.playerlevel >= self.level[1]);
256 Kragenwar-3044
 
257 Kragenwar-3044
    elseif (color == "green") then
258 Kragenwar-3044
        self.border:SetBackColor(Turbine.UI.Color(.1, 1, .1));
259 Kragenwar-3044
        self.border:SetVisible(self.active and self.bordervisible and vars.playerlevel >= self.level[1]);
260 Kragenwar-3044
 
261 Kragenwar-3044
        elseif (color == nil) then
262 Kragenwar-3044
                self.border:SetVisible(false);
263 Kragenwar-3044
        end
264 Kragenwar-3044
end
265 Kragenwar-3044
 
266 Kragenwar-3044
function SkillSlot:RefreshBorders()
267 Kragenwar-3044
        if (self.parent == nil or not self.parent.parent:IsVisible()) then
268 Kragenwar-3044
                self.bordervisible = false;
269 Kragenwar-3044
                self.border:SetVisible(false);
270 Kragenwar-3044
        else
271 Kragenwar-3044
                self.border:SetVisible(true);
272 Kragenwar-3044
        end
273 Kragenwar-3044
end
274 Kragenwar-3044
 

All times are GMT -5. The time now is 10:40 AM.


Our Network
EQInterface | EQ2Interface | Minion | WoWInterface | ESOUI | LoTROInterface | MMOUI | Swtorui