lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.10/] [Utils/] [UI/] [DeltaButtonControl.lua] - Blame information for rev 15

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 Kragenwar-3044
 
2 Kragenwar-3044
-- version 1.0
3 Kragenwar-3044
-- Initial version.
4 Kragenwar-3044
 
5 Kragenwar-3044
import "Turbine.UI";
6 Kragenwar-3044
import "Turbine.UI.Lotro";
7 Kragenwar-3044
import "KragenPlugs.Utils";
8 Kragenwar-3044
 
9 Kragenwar-3044
DeltaButtonControl = class( Turbine.UI.Control );
10 Kragenwar-3044
 
11 Kragenwar-3044
local defaultResources = {
12 Kragenwar-3044
          Normal=nil
13 Kragenwar-3044
        , Hover=nil
14 Kragenwar-3044
        , Pressed=nil
15 Kragenwar-3044
        , Disabled=nil
16 Kragenwar-3044
};
17 Kragenwar-3044
 
18 Kragenwar-3044
function DeltaButtonControl:Constructor( tResources, bfZoneTest, ctlAttachTo )
19 Kragenwar-3044
        Turbine.UI.Control.Constructor( self );
20 Kragenwar-3044
 
21 Kragenwar-3044
        if ctlAttachTo ~= nil then
22 Kragenwar-3044
                self:SetParent( ctlAttachTo );
23 Kragenwar-3044
        end
24 Kragenwar-3044
        if type(tResources) ~= "table" then
25 Kragenwar-3044
                self.resource = defaultResources;
26 Kragenwar-3044
        else
27 Kragenwar-3044
                self.resource = tResources;
28 Kragenwar-3044
        end
29 Kragenwar-3044
        if type(bfZoneTest) ~= "function" then
30 Kragenwar-3044
                self.InTheZone = function( sender, mx, my )
31 Kragenwar-3044
                        if mx < 0 or my < 0 or mx > self:GetWidth() or my > self:GetHeight() then
32 Kragenwar-3044
                                return false;
33 Kragenwar-3044
                        end
34 Kragenwar-3044
 
35 Kragenwar-3044
                        return true;
36 Kragenwar-3044
                end
37 Kragenwar-3044
        else
38 Kragenwar-3044
                self.InTheZone = bfZoneTest;
39 Kragenwar-3044
        end
40 Kragenwar-3044
 
41 Kragenwar-3044
        self.bEnabled = true;
42 Kragenwar-3044
        self.bMouseMoving = false;
43 Kragenwar-3044
 
44 Kragenwar-3044
        self:SetSize( 20, 20 );
45 Kragenwar-3044
        self:SetBackground( self.resource.Normal );
46 Kragenwar-3044
        self:SetBlendMode( Turbine.UI.BlendMode.AlphaBlend );
47 Kragenwar-3044
        self:SetPosition( 0, 0 );
48 Kragenwar-3044
        self:SetVisible( true );
49 Kragenwar-3044
        self:SetOpacity( 1 );
50 Kragenwar-3044
 
51 Kragenwar-3044
        self.MouseEnter = function( sender, args )
52 Kragenwar-3044
                self:RefreshImage();
53 Kragenwar-3044
        end
54 Kragenwar-3044
 
55 Kragenwar-3044
        self.MouseLeave = function( sender, args )
56 Kragenwar-3044
                self:RefreshImage();
57 Kragenwar-3044
        end
58 Kragenwar-3044
 
59 Kragenwar-3044
        self.MouseDown = function( sender, args )
60 Kragenwar-3044
                if self:IsEnabled() then
61 Kragenwar-3044
                        self:SetMouseMoving( true, args );
62 Kragenwar-3044
                end
63 Kragenwar-3044
        end
64 Kragenwar-3044
 
65 Kragenwar-3044
        self.MouseUp = function( sender, args )
66 Kragenwar-3044
                self:SetMouseMoving( false, args );
67 Kragenwar-3044
        end
68 Kragenwar-3044
 
69 Kragenwar-3044
        self.MouseMove = function( sender, args )
70 Kragenwar-3044
                if self:IsMouseMoving() then
71 Kragenwar-3044
                        if type( self.Delta ) == "function" then
72 Kragenwar-3044
                                local t = { };
73 Kragenwar-3044
                                t.X = args.X;
74 Kragenwar-3044
                                t.Y = args.Y;
75 Kragenwar-3044
                                t.deltaX = args.X - self.deltaStartX;
76 Kragenwar-3044
                                t.deltaY = args.Y - self.deltaStartY;
77 Kragenwar-3044
                                self:Delta(t);
78 Kragenwar-3044
                        end
79 Kragenwar-3044
                end
80 Kragenwar-3044
 
81 Kragenwar-3044
                self:RefreshImage();
82 Kragenwar-3044
        end
83 Kragenwar-3044
end
84 Kragenwar-3044
 
85 Kragenwar-3044
function DeltaButtonControl:IsEnabled( )
86 Kragenwar-3044
        return self.bEnabled;
87 Kragenwar-3044
end
88 Kragenwar-3044
 
89 Kragenwar-3044
function DeltaButtonControl:IsMouseMoving( )
90 Kragenwar-3044
        return self.bMouseMoving;
91 Kragenwar-3044
end
92 Kragenwar-3044
 
93 Kragenwar-3044
function DeltaButtonControl:SetMouseMoving( bValue, args )
94 Kragenwar-3044
        if self.bMouseMoving == bValue then
95 Kragenwar-3044
                return;
96 Kragenwar-3044
        end
97 Kragenwar-3044
 
98 Kragenwar-3044
        self.bMouseMoving = bValue;
99 Kragenwar-3044
 
100 Kragenwar-3044
        local t = { };
101 Kragenwar-3044
        t.X = args.X;
102 Kragenwar-3044
        t.Y = args.Y;
103 Kragenwar-3044
 
104 Kragenwar-3044
        if self:IsMouseMoving() then
105 Kragenwar-3044
                self.deltaStartX = args.X;
106 Kragenwar-3044
                self.deltaStartY = args.Y;
107 Kragenwar-3044
 
108 Kragenwar-3044
                if type( self.DeltaStart ) == "function" then
109 Kragenwar-3044
                        t.deltaX = 0;
110 Kragenwar-3044
                        t.deltaY = 0;
111 Kragenwar-3044
                        self:DeltaStart(t);
112 Kragenwar-3044
                end
113 Kragenwar-3044
        else
114 Kragenwar-3044
                t.deltaX = args.X - self.deltaStartX;
115 Kragenwar-3044
                t.deltaY = args.Y - self.deltaStartY;
116 Kragenwar-3044
 
117 Kragenwar-3044
                if type( self.DeltaEnd ) == "function" then
118 Kragenwar-3044
                        self:DeltaEnd(t);
119 Kragenwar-3044
                end
120 Kragenwar-3044
                if self:InTheZone( args.X, args.Y ) then
121 Kragenwar-3044
                        if type( self.Click ) == "function" then
122 Kragenwar-3044
                                self:Click(t);
123 Kragenwar-3044
                        end
124 Kragenwar-3044
                end
125 Kragenwar-3044
        end
126 Kragenwar-3044
 
127 Kragenwar-3044
        self:RefreshImage();
128 Kragenwar-3044
end
129 Kragenwar-3044
 
130 Kragenwar-3044
function DeltaButtonControl:SetEnabled( bValue )
131 Kragenwar-3044
        if self.bEnabled == bValue then
132 Kragenwar-3044
                return;
133 Kragenwar-3044
        elseif type( bValue ) ~= "boolean" then
134 Kragenwar-3044
                self.bEnabled = true;
135 Kragenwar-3044
        else
136 Kragenwar-3044
                self.bEnabled = bValue;
137 Kragenwar-3044
        end
138 Kragenwar-3044
 
139 Kragenwar-3044
        self:RefreshImage();
140 Kragenwar-3044
end
141 Kragenwar-3044
 
142 Kragenwar-3044
function DeltaButtonControl:RefreshImage( )
143 Kragenwar-3044
        local mx, my = self:GetMousePosition();
144 Kragenwar-3044
 
145 Kragenwar-3044
        if not self:IsEnabled() then
146 Kragenwar-3044
                self:SetBackground( self.resource.Disabled );
147 Kragenwar-3044
        elseif self:InTheZone( mx, my ) and self:IsMouseMoving() then
148 Kragenwar-3044
                self:SetBackground( self.resource.Pressed );
149 Kragenwar-3044
        elseif self:InTheZone( mx, my ) then
150 Kragenwar-3044
                self:SetBackground( self.resource.Hover );
151 Kragenwar-3044
        else
152 Kragenwar-3044
                self:SetBackground( self.resource.Normal );
153 Kragenwar-3044
        end
154 Kragenwar-3044
end

All times are GMT -5. The time now is 08:44 AM.


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