lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.10/] [Utils/] [UI/] [DeltaButtonWindow.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
DeltaButtonWindow = class( Turbine.UI.Window );
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 DeltaButtonWindow:Constructor( tResources, bfZoneTest, ctlAttachTo )
19 Kragenwar-3044
        Turbine.UI.Window.Constructor( self );
20 Kragenwar-3044
 
21 Kragenwar-3044
        self.wndTarget = ctlAttachTo;
22 Kragenwar-3044
        if type(tResources) ~= "table" then
23 Kragenwar-3044
                self.resource = defaultResources;
24 Kragenwar-3044
        else
25 Kragenwar-3044
                self.resource = tResources;
26 Kragenwar-3044
        end
27 Kragenwar-3044
        if type(bfZoneTest) ~= "function" then
28 Kragenwar-3044
                self.InTheZone = function( sender, mx, my )
29 Kragenwar-3044
                        if mx < 0 or my < 0 or mx > self:GetWidth() or my > self:GetHeight() then
30 Kragenwar-3044
                                return false;
31 Kragenwar-3044
                        end
32 Kragenwar-3044
 
33 Kragenwar-3044
                        return true;
34 Kragenwar-3044
                end
35 Kragenwar-3044
        else
36 Kragenwar-3044
                self.InTheZone = bfZoneTest;
37 Kragenwar-3044
        end
38 Kragenwar-3044
 
39 Kragenwar-3044
        self.bEnabled = true;
40 Kragenwar-3044
        self.bMouseMoving = false;
41 Kragenwar-3044
 
42 Kragenwar-3044
        self.offsetX = 0;
43 Kragenwar-3044
        self.offsetY = 0;
44 Kragenwar-3044
 
45 Kragenwar-3044
        self:SetSize( 20, 20 );
46 Kragenwar-3044
        self:SetBackground( self.resource.Normal );
47 Kragenwar-3044
        self:SetBlendMode( Turbine.UI.BlendMode.AlphaBlend );
48 Kragenwar-3044
        self:SetPosition( math.max( self.wndTarget:GetLeft(), 0 )
49 Kragenwar-3044
                                        , math.max( self.wndTarget:GetTop(), 0 ) );
50 Kragenwar-3044
        self:SetVisible( self.wndTarget:IsVisible() );
51 Kragenwar-3044
        self:SetOpacity( 1 );
52 Kragenwar-3044
 
53 Kragenwar-3044
        self.MouseEnter = function( sender, args )
54 Kragenwar-3044
                self:RefreshImage();
55 Kragenwar-3044
        end
56 Kragenwar-3044
 
57 Kragenwar-3044
        self.MouseLeave = function( sender, args )
58 Kragenwar-3044
                self:RefreshImage();
59 Kragenwar-3044
        end
60 Kragenwar-3044
 
61 Kragenwar-3044
        self.MouseDown = function( sender, args )
62 Kragenwar-3044
                if self:IsEnabled() then
63 Kragenwar-3044
                        self:SetMouseMoving( true, args );
64 Kragenwar-3044
                end
65 Kragenwar-3044
        end
66 Kragenwar-3044
 
67 Kragenwar-3044
        self.MouseUp = function( sender, args )
68 Kragenwar-3044
                self:SetMouseMoving( false, args );
69 Kragenwar-3044
        end
70 Kragenwar-3044
 
71 Kragenwar-3044
        self.MouseMove = function( sender, args )
72 Kragenwar-3044
                if self:IsMouseMoving() then
73 Kragenwar-3044
                        if type( self.Delta ) == "function" then
74 Kragenwar-3044
                                local t = { };
75 Kragenwar-3044
                                t.X = args.X;
76 Kragenwar-3044
                                t.Y = args.Y;
77 Kragenwar-3044
                                t.deltaX = args.X - self.deltaStartX;
78 Kragenwar-3044
                                t.deltaY = args.Y - self.deltaStartY;
79 Kragenwar-3044
                                self:Delta(t);
80 Kragenwar-3044
                        end
81 Kragenwar-3044
                end
82 Kragenwar-3044
 
83 Kragenwar-3044
                self:RefreshImage();
84 Kragenwar-3044
        end
85 Kragenwar-3044
end
86 Kragenwar-3044
 
87 Kragenwar-3044
function DeltaButtonWindow:IsEnabled( )
88 Kragenwar-3044
        return self.bEnabled;
89 Kragenwar-3044
end
90 Kragenwar-3044
 
91 Kragenwar-3044
function DeltaButtonWindow:IsMouseMoving( )
92 Kragenwar-3044
        return self.bMouseMoving;
93 Kragenwar-3044
end
94 Kragenwar-3044
 
95 Kragenwar-3044
function DeltaButtonWindow:SetMouseMoving( bValue, args )
96 Kragenwar-3044
        if self.bMouseMoving == bValue then
97 Kragenwar-3044
                return;
98 Kragenwar-3044
        end
99 Kragenwar-3044
 
100 Kragenwar-3044
        self.bMouseMoving = bValue;
101 Kragenwar-3044
 
102 Kragenwar-3044
        local t = { };
103 Kragenwar-3044
        t.X = args.X;
104 Kragenwar-3044
        t.Y = args.Y;
105 Kragenwar-3044
 
106 Kragenwar-3044
        if self:IsMouseMoving() then
107 Kragenwar-3044
                self.deltaStartX = args.X;
108 Kragenwar-3044
                self.deltaStartY = args.Y;
109 Kragenwar-3044
 
110 Kragenwar-3044
                if type( self.DeltaStart ) == "function" then
111 Kragenwar-3044
                        t.deltaX = 0;
112 Kragenwar-3044
                        t.deltaY = 0;
113 Kragenwar-3044
                        self:DeltaStart(t);
114 Kragenwar-3044
                end
115 Kragenwar-3044
        else
116 Kragenwar-3044
                t.deltaX = args.X - self.deltaStartX;
117 Kragenwar-3044
                t.deltaY = args.Y - self.deltaStartY;
118 Kragenwar-3044
 
119 Kragenwar-3044
                if type( self.DeltaEnd ) == "function" then
120 Kragenwar-3044
                        self:DeltaEnd(t);
121 Kragenwar-3044
                end
122 Kragenwar-3044
                if self:InTheZone( args.X, args.Y ) then
123 Kragenwar-3044
                        if type( self.Click ) == "function" then
124 Kragenwar-3044
                                self:Click(t);
125 Kragenwar-3044
                        end
126 Kragenwar-3044
                end
127 Kragenwar-3044
        end
128 Kragenwar-3044
 
129 Kragenwar-3044
        self:RefreshImage();
130 Kragenwar-3044
end
131 Kragenwar-3044
 
132 Kragenwar-3044
function DeltaButtonWindow:SetEnabled( bValue )
133 Kragenwar-3044
        if self.bEnabled == bValue then
134 Kragenwar-3044
                return;
135 Kragenwar-3044
        elseif type( bValue ) ~= "boolean" then
136 Kragenwar-3044
                self.bEnabled = true;
137 Kragenwar-3044
        else
138 Kragenwar-3044
                self.bEnabled = bValue;
139 Kragenwar-3044
        end
140 Kragenwar-3044
 
141 Kragenwar-3044
        self:RefreshImage();
142 Kragenwar-3044
end
143 Kragenwar-3044
 
144 Kragenwar-3044
function DeltaButtonWindow:SetOffset( oX, oY )
145 Kragenwar-3044
        self.offsetX, self.offsetY = oX, oY;
146 Kragenwar-3044
end
147 Kragenwar-3044
 
148 Kragenwar-3044
function DeltaButtonWindow:RecalculatePosition( )
149 Kragenwar-3044
        local X, Y;
150 Kragenwar-3044
 
151 Kragenwar-3044
        X = math.min( math.max( self.wndTarget:GetLeft() + self.offsetX, 0 ), Turbine.UI.Display:GetWidth() - self:GetWidth() );
152 Kragenwar-3044
        Y = math.min( math.max( self.wndTarget:GetTop() + self.offsetY, 0 ), Turbine.UI.Display:GetHeight() - self:GetHeight() );
153 Kragenwar-3044
        self:SetPosition( X, Y );
154 Kragenwar-3044
end
155 Kragenwar-3044
 
156 Kragenwar-3044
function DeltaButtonWindow:RefreshImage( )
157 Kragenwar-3044
        local mx, my = self:GetMousePosition();
158 Kragenwar-3044
 
159 Kragenwar-3044
        if not self:IsEnabled() then
160 Kragenwar-3044
                self:SetBackground( self.resource.Disabled );
161 Kragenwar-3044
        elseif self:InTheZone( mx, my ) and self:IsMouseMoving() then
162 Kragenwar-3044
                self:SetBackground( self.resource.Pressed );
163 Kragenwar-3044
        elseif self:InTheZone( mx, my ) then
164 Kragenwar-3044
                self:SetBackground( self.resource.Hover );
165 Kragenwar-3044
        else
166 Kragenwar-3044
                self:SetBackground( self.resource.Normal );
167 Kragenwar-3044
        end
168 Kragenwar-3044
 
169 Kragenwar-3044
        self:SetZOrder(self.wndTarget:GetZOrder() + 1);
170 Kragenwar-3044
end

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


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