1 |
6 |
Kragenwar-3044 |
import "Turbine.UI"; |
2 |
|
Kragenwar-3044 |
|
3 |
|
Kragenwar-3044 |
Button = class(Turbine.UI.Control); |
4 |
|
Kragenwar-3044 |
|
5 |
|
Kragenwar-3044 |
-- colors |
6 |
|
Kragenwar-3044 |
Button.ItemColor = Turbine.UI.Color(180/255, 150/255, 0/255); |
7 |
|
Kragenwar-3044 |
Button.DisabledColor = Turbine.UI.Color(162/255, 162/255, 162/255); |
8 |
|
Kragenwar-3044 |
Button.HighlightColor = Turbine.UI.Color(255/255, 255/255, 0/255); |
9 |
|
Kragenwar-3044 |
|
10 |
|
Kragenwar-3044 |
function Button:Constructor() |
11 |
|
Kragenwar-3044 |
Turbine.UI.Control.Constructor(self); |
12 |
|
Kragenwar-3044 |
|
13 |
|
Kragenwar-3044 |
-- state |
14 |
|
Kragenwar-3044 |
self.selected = false; |
15 |
|
Kragenwar-3044 |
self.pressed = false; |
16 |
|
Kragenwar-3044 |
self.mouse = false; |
17 |
|
Kragenwar-3044 |
|
18 |
|
Kragenwar-3044 |
-- text label |
19 |
|
Kragenwar-3044 |
self.label = Turbine.UI.Label(); |
20 |
|
Kragenwar-3044 |
self.label:SetParent(self); |
21 |
|
Kragenwar-3044 |
self.label:SetPosition(0, 0); |
22 |
|
Kragenwar-3044 |
self.label:SetFont(Turbine.UI.Lotro.Font.TrajanPro14); |
23 |
|
Kragenwar-3044 |
self.label:SetForeColor(Button.ItemColor); |
24 |
|
Kragenwar-3044 |
self.label:SetTextAlignment(Turbine.UI.ContentAlignment.MiddleCenter); |
25 |
|
Kragenwar-3044 |
self.label:SetMouseVisible(false); |
26 |
|
Kragenwar-3044 |
self.label:SetZOrder(5); |
27 |
|
Kragenwar-3044 |
|
28 |
|
Kragenwar-3044 |
-- left |
29 |
|
Kragenwar-3044 |
self.left = Turbine.UI.Control(); |
30 |
|
Kragenwar-3044 |
self.left:SetParent(self); |
31 |
|
Kragenwar-3044 |
self.left:SetSize(20, 20); |
32 |
|
Kragenwar-3044 |
self.left:SetMouseVisible(false); |
33 |
|
Kragenwar-3044 |
self.left:SetBlendMode(Turbine.UI.BlendMode.AlphaBlend); |
34 |
|
Kragenwar-3044 |
self.left:SetBackground("KragenPlugs/UI/Resources/textbutton_left_normal.tga"); |
35 |
|
Kragenwar-3044 |
|
36 |
|
Kragenwar-3044 |
-- mid |
37 |
|
Kragenwar-3044 |
self.mid = Turbine.UI.Control(); |
38 |
|
Kragenwar-3044 |
self.mid:SetParent(self); |
39 |
|
Kragenwar-3044 |
self.mid:SetSize(20, 20); |
40 |
|
Kragenwar-3044 |
self.mid:SetMouseVisible(false); |
41 |
|
Kragenwar-3044 |
self.mid:SetBlendMode(Turbine.UI.BlendMode.AlphaBlend); |
42 |
|
Kragenwar-3044 |
self.mid:SetBackground("KragenPlugs/UI/Resources/textbutton_mid_normal.tga"); |
43 |
|
Kragenwar-3044 |
|
44 |
|
Kragenwar-3044 |
-- right |
45 |
|
Kragenwar-3044 |
self.right = Turbine.UI.Control(); |
46 |
|
Kragenwar-3044 |
self.right:SetParent(self); |
47 |
|
Kragenwar-3044 |
self.right:SetSize(20, 20); |
48 |
|
Kragenwar-3044 |
self.right:SetMouseVisible(false); |
49 |
|
Kragenwar-3044 |
self.right:SetBlendMode(Turbine.UI.BlendMode.AlphaBlend); |
50 |
|
Kragenwar-3044 |
self.right:SetBackground("KragenPlugs/UI/Resources/textbutton_right_normal.tga"); |
51 |
|
Kragenwar-3044 |
end |
52 |
|
Kragenwar-3044 |
|
53 |
|
Kragenwar-3044 |
function Button:MouseClick(args) |
54 |
|
Kragenwar-3044 |
if (not self:IsEnabled()) then |
55 |
|
Kragenwar-3044 |
return; |
56 |
|
Kragenwar-3044 |
end |
57 |
|
Kragenwar-3044 |
|
58 |
|
Kragenwar-3044 |
if (args.Button == Turbine.UI.MouseButton.Left) then |
59 |
|
Kragenwar-3044 |
if (type(self.Click) == "function") then |
60 |
|
Kragenwar-3044 |
self:Click({}); |
61 |
|
Kragenwar-3044 |
end |
62 |
|
Kragenwar-3044 |
end |
63 |
|
Kragenwar-3044 |
end |
64 |
|
Kragenwar-3044 |
|
65 |
|
Kragenwar-3044 |
function Button:MouseEnter(args) |
66 |
|
Kragenwar-3044 |
self.mouse = true; |
67 |
|
Kragenwar-3044 |
self:UpdateState(); |
68 |
|
Kragenwar-3044 |
end |
69 |
|
Kragenwar-3044 |
|
70 |
|
Kragenwar-3044 |
function Button:MouseLeave(args) |
71 |
|
Kragenwar-3044 |
self.mouse = false; |
72 |
|
Kragenwar-3044 |
self:UpdateState(); |
73 |
|
Kragenwar-3044 |
end |
74 |
|
Kragenwar-3044 |
|
75 |
|
Kragenwar-3044 |
function Button:MouseDown(args) |
76 |
|
Kragenwar-3044 |
self.pressed = true; |
77 |
|
Kragenwar-3044 |
self:UpdateState(); |
78 |
|
Kragenwar-3044 |
end |
79 |
|
Kragenwar-3044 |
|
80 |
|
Kragenwar-3044 |
function Button:MouseUp(args) |
81 |
|
Kragenwar-3044 |
self.pressed = false; |
82 |
|
Kragenwar-3044 |
self:UpdateState(); |
83 |
|
Kragenwar-3044 |
end |
84 |
|
Kragenwar-3044 |
|
85 |
|
Kragenwar-3044 |
function Button:IsSelected() |
86 |
|
Kragenwar-3044 |
return self.selected; |
87 |
|
Kragenwar-3044 |
end |
88 |
|
Kragenwar-3044 |
|
89 |
|
Kragenwar-3044 |
function Button:SetSelected(selected) |
90 |
|
Kragenwar-3044 |
self.selected = selected; |
91 |
|
Kragenwar-3044 |
self:UpdateState(); |
92 |
|
Kragenwar-3044 |
end |
93 |
|
Kragenwar-3044 |
|
94 |
|
Kragenwar-3044 |
function Button:SetEnabled(enabled) |
95 |
|
Kragenwar-3044 |
Turbine.UI.Control.SetEnabled(self, enabled); |
96 |
|
Kragenwar-3044 |
self:UpdateState(); |
97 |
|
Kragenwar-3044 |
end |
98 |
|
Kragenwar-3044 |
|
99 |
|
Kragenwar-3044 |
function Button:SetText(text) |
100 |
|
Kragenwar-3044 |
self.label:SetText(text); |
101 |
|
Kragenwar-3044 |
end |
102 |
|
Kragenwar-3044 |
|
103 |
|
Kragenwar-3044 |
function Button:SetSize(width, height) |
104 |
|
Kragenwar-3044 |
Turbine.UI.Control.SetSize(self, width, height); |
105 |
|
Kragenwar-3044 |
self:Layout(); |
106 |
|
Kragenwar-3044 |
end |
107 |
|
Kragenwar-3044 |
|
108 |
|
Kragenwar-3044 |
function Button:Layout() |
109 |
|
Kragenwar-3044 |
local width = self:GetWidth(); |
110 |
|
Kragenwar-3044 |
if (width < 40) then |
111 |
|
Kragenwar-3044 |
width = 40; |
112 |
|
Kragenwar-3044 |
end |
113 |
|
Kragenwar-3044 |
|
114 |
|
Kragenwar-3044 |
self.label:SetPosition(5, 0); |
115 |
|
Kragenwar-3044 |
self.left:SetPosition(0, 0); |
116 |
|
Kragenwar-3044 |
self.mid:SetPosition(20, 0); |
117 |
|
Kragenwar-3044 |
self.right:SetPosition(width-20, 0); |
118 |
|
Kragenwar-3044 |
|
119 |
|
Kragenwar-3044 |
self.label:SetSize(width - 10, 20); |
120 |
|
Kragenwar-3044 |
self.left:SetSize(20, 20); |
121 |
|
Kragenwar-3044 |
self.mid:SetSize(width - 40, 20); |
122 |
|
Kragenwar-3044 |
self.right:SetSize(20, 20); |
123 |
|
Kragenwar-3044 |
end |
124 |
|
Kragenwar-3044 |
|
125 |
|
Kragenwar-3044 |
function Button:UpdateState() |
126 |
|
Kragenwar-3044 |
local enabled = self:IsEnabled(); |
127 |
|
Kragenwar-3044 |
local state = self.selected and "highlighted_" or ""; |
128 |
|
Kragenwar-3044 |
local color = self.selected and Button.HighlightColor or Button.ItemColor; |
129 |
|
Kragenwar-3044 |
if (not enabled) then |
130 |
|
Kragenwar-3044 |
state = "ghosted"; |
131 |
|
Kragenwar-3044 |
color = Button.DisabledColor; |
132 |
|
Kragenwar-3044 |
elseif (self.pressed) then |
133 |
|
Kragenwar-3044 |
state = state .. "pressed"; |
134 |
|
Kragenwar-3044 |
color = Button.DisabledColor; |
135 |
|
Kragenwar-3044 |
elseif (self.mouse) then |
136 |
|
Kragenwar-3044 |
state = state .. "mouseover"; |
137 |
|
Kragenwar-3044 |
color = Button.HighlightColor; |
138 |
|
Kragenwar-3044 |
else |
139 |
|
Kragenwar-3044 |
state = state .. "normal"; |
140 |
|
Kragenwar-3044 |
end |
141 |
|
Kragenwar-3044 |
|
142 |
|
Kragenwar-3044 |
self.label:SetForeColor(color); |
143 |
|
Kragenwar-3044 |
self.left:SetBackground("KragenPlugs/UI/Resources/textbutton_left_"..state..".tga"); |
144 |
|
Kragenwar-3044 |
self.mid:SetBackground("KragenPlugs/UI/Resources/textbutton_mid_"..state..".tga"); |
145 |
|
Kragenwar-3044 |
self.right:SetBackground("KragenPlugs/UI/Resources/textbutton_right_"..state..".tga"); |
146 |
|
Kragenwar-3044 |
end |