lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [trunk/] [KragenPlugs/] [KragenBars/] [Main.lua] - Blame information for rev 135

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 Kragenwar-3044
import "Turbine.UI";
2 Kragenwar-3044
import "Turbine.UI.Lotro";
3 Kragenwar-3044
import "KragenPlugs.Utils";
4 Kragenwar-3044
import "KragenPlugs.KragenBars";
5 Kragenwar-3044
 
6 Kragenwar-3044
-- load settings file
7 Kragenwar-3044
function LoadSettings()
8 Kragenwar-3044
        -- Set main version number
9 Kragenwar-3044
        vars = { };
10 135 Valdacil-446
        vars.vers = 5.08;
11 6 Kragenwar-3044
        vars.player = Turbine.Gameplay.LocalPlayer.GetInstance();
12 Kragenwar-3044
        vars.playerlevel = vars.player:GetLevel();
13 Kragenwar-3044
        vars.effects = vars.player:GetEffects();
14 Kragenwar-3044
        vars.classid = vars.player:GetClass();
15 Kragenwar-3044
        vars.classattr = vars.player:GetClassAttributes();
16 19 Kragenwar-3044
                vars.locale = Turbine.Engine.GetLocale();
17 30 Kragenwar-3044
 
18 48 Kragenwar-3044
                limbo = Turbine.UI.Window();
19 Kragenwar-3044
                limbo:SetPosition(-35, -35);
20 Kragenwar-3044
                limbo:SetVisible(false);
21 Kragenwar-3044
 
22 104 Kragenwar-3044
                settings = DecodeObject(Turbine.PluginData.Load( Turbine.DataScope.Character, "KragenBarsSettings" ));
23 6 Kragenwar-3044
 
24 Kragenwar-3044
        -- declare settings as a table and set default opacity
25 Kragenwar-3044
        if ( type( settings ) ~= "table" ) then
26 Kragenwar-3044
                settings = { };
27 Kragenwar-3044
                settings.opacity = 1;
28 Kragenwar-3044
                settings.lockslots = false;
29 Kragenwar-3044
                settings.snaptogrid = true;
30 75 Valdacil-446
                                settings.gridspacing = 35;
31 53 Kragenwar-3044
                                settings.userbars = 0;
32 113 Kragenwar-3044
                                settings.vers = vars.vers;
33 45 Valdacil-446
                                if(settings.language == nil) then
34 Valdacil-446
                                        if (vars.locale == "fr") then
35 Valdacil-446
                                                settings.language = 2;
36 Valdacil-446
                                        elseif (vars.locale == "de") then
37 Valdacil-446
                                                settings.language = 3;
38 Valdacil-446
                                        else
39 Valdacil-446
                                                settings.language = 1;
40 Valdacil-446
                                        end
41 Valdacil-446
                                end
42 6 Kragenwar-3044
        end
43 Kragenwar-3044
 
44 Kragenwar-3044
        -- if version is not declared then wipe settings file and set version number
45 Kragenwar-3044
                -- if version <3.00 (prior versions had string version number) then add required settings
46 19 Kragenwar-3044
        if (settings.vers == nil or type(settings.vers) == "string" or settings.vers < 3.00) then
47 6 Kragenwar-3044
                        settings = nil;
48 Kragenwar-3044
            settings = { };
49 Kragenwar-3044
            settings.vers = vars.vers;
50 Kragenwar-3044
            settings.opacity = 1;
51 Kragenwar-3044
            settings.lockslots = false;
52 Kragenwar-3044
            settings.snaptogrid = true;
53 97 Valdacil-446
                        settings.advanceonclick = false;
54 75 Valdacil-446
                        settings.gridspacing = 35;
55 53 Kragenwar-3044
                        settings.userbars = 0;
56 56 Kragenwar-3044
                        settings.kbbutton = { x = 10, y = 10 };
57 45 Valdacil-446
                        if(settings.language == nil) then
58 Valdacil-446
                                if (vars.locale == "fr") then
59 Valdacil-446
                                        settings.language = 2;
60 Valdacil-446
                                elseif (vars.locale == "de") then
61 Valdacil-446
                                        settings.language = 3;
62 Valdacil-446
                                else
63 Valdacil-446
                                        settings.language = 1;
64 Valdacil-446
                                end
65 Valdacil-446
                        end
66 6 Kragenwar-3044
            SaveSettings();
67 45 Valdacil-446
                elseif (settings.vers < 3.20) then
68 75 Valdacil-446
                        settings.gridspacing = 35;
69 80 Valdacil-446
                        settings.userbars = 0;
70 Valdacil-446
                        settings.kbbutton = { x = 10, y = 10 };
71 45 Valdacil-446
                        if(settings.language == nil) then
72 Valdacil-446
                                if (vars.locale == "fr") then
73 Valdacil-446
                                        settings.language = 2;
74 Valdacil-446
                                elseif (vars.locale == "de") then
75 Valdacil-446
                                        settings.language = 3;
76 Valdacil-446
                                else
77 Valdacil-446
                                        settings.language = 1;
78 Valdacil-446
                                end
79 Valdacil-446
                        end
80 80 Valdacil-446
                elseif (settings.vers < 4.00) then
81 Valdacil-446
                        settings.gridspacing = 35;
82 Valdacil-446
                        settings.userbars = 0;
83 Valdacil-446
                        settings.kbbutton = { x = 10, y = 10 };
84 45 Valdacil-446
 
85 75 Valdacil-446
 
86 6 Kragenwar-3044
                end
87 56 Kragenwar-3044
 
88 Kragenwar-3044
                if (settings.kbbutton == nil) then
89 Kragenwar-3044
                        settings.kbbutton = { x = 10, y = 10 };
90 Kragenwar-3044
                end
91 6 Kragenwar-3044
 
92 Kragenwar-3044
        if (vars.classid == 40) then
93 Kragenwar-3044
            vars.playerclass = "Burglar";
94 Kragenwar-3044
            KragenBars = BurglarBars();
95 Kragenwar-3044
        elseif (vars.classid == 24) then
96 Kragenwar-3044
            vars.playerclass = "Captain";
97 Kragenwar-3044
            KragenBars = CaptainBars();
98 Kragenwar-3044
        elseif (vars.classid == 172) then
99 Kragenwar-3044
            vars.playerclass = "Champion";
100 Kragenwar-3044
            KragenBars = ChampionBars();
101 Kragenwar-3044
        elseif (vars.classid == 23) then
102 Kragenwar-3044
            vars.playerclass = "Guardian";
103 Kragenwar-3044
            KragenBars = GuardianBars();
104 Kragenwar-3044
        elseif (vars.classid == 162) then
105 Kragenwar-3044
            vars.playerclass = "Hunter";
106 Kragenwar-3044
            KragenBars = HunterBars();
107 Kragenwar-3044
        elseif (vars.classid == 185) then
108 Kragenwar-3044
            vars.playerclass = "Loremaster";
109 Kragenwar-3044
            KragenBars = LoreBars();
110 Kragenwar-3044
        elseif (vars.classid == 31) then
111 Kragenwar-3044
            vars.playerclass = "Minstrel";
112 Kragenwar-3044
            KragenBars = MiniBars();
113 Kragenwar-3044
        elseif (vars.classid == 193) then
114 Kragenwar-3044
            vars.playerclass = "Runekeeper";
115 Kragenwar-3044
            KragenBars = RuneBars();
116 Kragenwar-3044
        elseif (vars.classid == 194) then
117 Kragenwar-3044
            vars.playerclass = "Warden";
118 Kragenwar-3044
                        Turbine.Shell.WriteLine("KragenBars: Warden is not currently implemented in KragenBars.  Look for this feature in a future version.");
119 Kragenwar-3044
            -- KragenBars = WardenBars();
120 56 Kragenwar-3044
        end
121 135 Valdacil-446
 
122 Valdacil-446
                Turbine.Shell.WriteLine("KragenBars: Loaded version " ..vars.vers);
123 Valdacil-446
 
124 6 Kragenwar-3044
 
125 Kragenwar-3044
end
126 Kragenwar-3044
 
127 Kragenwar-3044
-- save to settings file
128 Kragenwar-3044
function SaveSettings()
129 104 Kragenwar-3044
    Turbine.PluginData.Save( Turbine.DataScope.Character, "KragenBarsSettings", EncodeObject(settings) );
130 19 Kragenwar-3044
end
131 6 Kragenwar-3044
 
132 104 Kragenwar-3044
function EncodeObject(obj)
133 106 Kragenwar-3044
        if ((vars.locale == "de" or vars.locale == "fr") and obj ~= nil) then
134 104 Kragenwar-3044
                local encoded = {};
135 Kragenwar-3044
                local function _copyObject(obj)
136 Kragenwar-3044
                        local function _encodeObject(obj)
137 Kragenwar-3044
                                if (type(obj) == "number") then return (("<num>%f</num>"):format(obj)); else return obj end;
138 31 Kragenwar-3044
                        end
139 104 Kragenwar-3044
                        if (type(obj) ~= "table") then
140 Kragenwar-3044
                                return _encodeObject(obj);
141 Kragenwar-3044
                        elseif (encoded[obj] ~= nil) then
142 Kragenwar-3044
                                return encoded[obj];
143 19 Kragenwar-3044
                        end
144 104 Kragenwar-3044
                        local newtable = { };
145 Kragenwar-3044
                        for k,v in pairs(obj) do
146 Kragenwar-3044
                                local key = _copyObject(k);
147 Kragenwar-3044
                                local value = _copyObject(v);
148 Kragenwar-3044
                                newtable[key] = value;
149 Kragenwar-3044
                                encoded[obj] = newtable[key];
150 Kragenwar-3044
                        end
151 Kragenwar-3044
                        return newtable;
152 19 Kragenwar-3044
                end
153 104 Kragenwar-3044
 
154 Kragenwar-3044
                return _copyObject(obj);
155 21 Kragenwar-3044
        else
156 104 Kragenwar-3044
                return obj;
157 19 Kragenwar-3044
        end
158 6 Kragenwar-3044
end
159 Kragenwar-3044
 
160 104 Kragenwar-3044
function DecodeObject(data)
161 106 Kragenwar-3044
        if ((vars.locale == "de" or vars.locale == "fr") and data ~= nil) then
162 104 Kragenwar-3044
                local decoded = { };
163 Kragenwar-3044
                local function _copyObject(obj)
164 Kragenwar-3044
                        local function _decodeObject(obj)
165 Kragenwar-3044
                                if (type(obj) == "string") then
166 Kragenwar-3044
                                        local match = obj:match("<num>(%d+.%d+)</num>");
167 Kragenwar-3044
                                        if (match ~= nil) then
168 Kragenwar-3044
                                                return tonumber(match);
169 Kragenwar-3044
                                        else
170 Kragenwar-3044
                                                return obj
171 Kragenwar-3044
                                        end
172 31 Kragenwar-3044
                                else
173 104 Kragenwar-3044
                                        return obj;
174 31 Kragenwar-3044
                                end
175 Kragenwar-3044
                        end
176 104 Kragenwar-3044
                        if (obj == nil) then return nil; end
177 Kragenwar-3044
                        if (type(obj) ~= "table") then
178 Kragenwar-3044
                                return _decodeObject(obj);
179 Kragenwar-3044
                        elseif (decoded[obj]) then
180 Kragenwar-3044
                                return decoded[obj];
181 19 Kragenwar-3044
                        end
182 104 Kragenwar-3044
                        local newtable = { };
183 Kragenwar-3044
                        decoded[obj] = newtable;
184 Kragenwar-3044
                        for k,v in pairs(obj) do
185 Kragenwar-3044
                                local key = _copyObject(k);
186 Kragenwar-3044
                                local value = _copyObject(v);
187 Kragenwar-3044
                                newtable[key] = value;
188 Kragenwar-3044
                                decoded[obj] = newtable[key];
189 Kragenwar-3044
                        end
190 Kragenwar-3044
                        return newtable;
191 19 Kragenwar-3044
                end
192 104 Kragenwar-3044
 
193 Kragenwar-3044
                return _copyObject(data);
194 31 Kragenwar-3044
        else
195 48 Kragenwar-3044
                return data;
196 19 Kragenwar-3044
        end
197 Kragenwar-3044
end
198 Kragenwar-3044
 
199 6 Kragenwar-3044
-- on unload call each instances unload function to save settings
200 Kragenwar-3044
function UnloadPlugin()
201 19 Kragenwar-3044
    KragenBars:SaveSettings();
202 6 Kragenwar-3044
end
203 Kragenwar-3044
 
204 Kragenwar-3044
 
205 Kragenwar-3044
function ValidatePosition(x, y, width, height)
206 Kragenwar-3044
    x = math.min(math.max(x, 0), Turbine.UI.Display:GetWidth() - width);
207 Kragenwar-3044
    y = math.min(math.max(y, 0), Turbine.UI.Display:GetHeight() - height);
208 Kragenwar-3044
    return x, y;
209 Kragenwar-3044
 
210 Kragenwar-3044
end
211 Kragenwar-3044
 
212 Kragenwar-3044
 
213 Kragenwar-3044
-- setup user chat commands
214 Kragenwar-3044
KragenBarsCommand = Turbine.ShellCommand();
215 Kragenwar-3044
 
216 Kragenwar-3044
function KragenBarsCommand:Execute( command, arguments )
217 Kragenwar-3044
        if (arguments == "setup") then
218 Kragenwar-3044
                KragenBars:ShowSetup();
219 Kragenwar-3044
        elseif (arguments == "refresh") then
220 Kragenwar-3044
                KragenBars:Refresh();
221 Kragenwar-3044
        elseif (arguments == "save") then
222 Kragenwar-3044
                KragenBars:SaveSettings();
223 Kragenwar-3044
                elseif (arguments == "reset") then
224 Kragenwar-3044
                        KragenBars:DefaultPosition();
225 Kragenwar-3044
                        KragenBars:DefaultSettings();
226 Kragenwar-3044
                        KragenBars:Refresh();
227 Kragenwar-3044
        elseif (arguments == "defaultpos") then
228 Kragenwar-3044
                        KragenBars:DefaultPosition();
229 Kragenwar-3044
        else
230 Kragenwar-3044
        Turbine.Shell.WriteLine("KragenBars Help:\n - /Kragenbars setup - Opens Kragens setup window\n - /Kragenbars refresh - Refreshes Kragens bar settings (ie. after level up)\n - /Kragenbars reset - Resets settings to default\n - /Kragenbars defaultpos - Sets window positions to default");
231 Kragenwar-3044
        end
232 Kragenwar-3044
 
233 Kragenwar-3044
end
234 Kragenwar-3044
 
235 Kragenwar-3044
 
236 Kragenwar-3044
function AddCallback(object, event, callback)
237 Kragenwar-3044
        if (object[event] == nil) then
238 Kragenwar-3044
                object[event] = callback;
239 Kragenwar-3044
        else
240 Kragenwar-3044
                if (type(object[event]) == "table") then
241 Kragenwar-3044
                        table.insert(object[event], callback);
242 Kragenwar-3044
                else
243 Kragenwar-3044
                        object[event] = {object[event], callback};
244 Kragenwar-3044
                end
245 Kragenwar-3044
        end
246 Kragenwar-3044
end
247 Kragenwar-3044
 
248 Kragenwar-3044
 
249 Kragenwar-3044
-- inialize plugin
250 Kragenwar-3044
function init()
251 Kragenwar-3044
    settings = { };
252 95 Kragenwar-3044
        altfunction = nil;
253 94 Kragenwar-3044
 
254 Kragenwar-3044
        altCheck = Turbine.UI.Control();
255 Kragenwar-3044
        altCheck:SetWantsUpdates(true);
256 Kragenwar-3044
        altCheck.Update = function(sender, args)
257 Kragenwar-3044
                if (altCheck:IsAltKeyDown() and altCheck:IsControlKeyDown()) then
258 95 Kragenwar-3044
                        if (type(altfunction) == "function") then
259 Kragenwar-3044
                                altfunction(true);
260 94 Kragenwar-3044
                        end
261 Kragenwar-3044
                end
262 Kragenwar-3044
        end
263 Kragenwar-3044
 
264 95 Kragenwar-3044
        altCheck.Add = function(func)
265 Kragenwar-3044
                if (func ~= altfunction) then
266 Kragenwar-3044
                        altCheck.Clear();
267 Kragenwar-3044
                        altfunction = func;
268 Kragenwar-3044
                end
269 94 Kragenwar-3044
        end
270 95 Kragenwar-3044
 
271 Kragenwar-3044
        altCheck.Clear = function()
272 Kragenwar-3044
                if (type(altfunction) == "function") then
273 Kragenwar-3044
                        altfunction(false);
274 Kragenwar-3044
                end
275 Kragenwar-3044
                altfunction = nil;
276 Kragenwar-3044
        end
277 6 Kragenwar-3044
 
278 94 Kragenwar-3044
        -- setup plugin unload function to save setting on unload.
279 Kragenwar-3044
        pluginName="KragenBars";
280 Kragenwar-3044
        window = Turbine.UI.Window();
281 Kragenwar-3044
        window:SetWantsUpdates(true);
282 Kragenwar-3044
        window.Update = function(sender,args)
283 Kragenwar-3044
                        if (Plugins[pluginName] ~= nil) then
284 Kragenwar-3044
                                        Plugins[pluginName].Unload = function(self,sender,args)
285 Kragenwar-3044
                                                        UnloadPlugin();
286 Kragenwar-3044
                                        end
287 Kragenwar-3044
                                        window:SetWantsUpdates(false);
288 Kragenwar-3044
                        end
289 Kragenwar-3044
        end
290 6 Kragenwar-3044
 
291 94 Kragenwar-3044
    Turbine.Shell.AddCommand( "Kragenbars", KragenBarsCommand );
292 Kragenwar-3044
    LoadSettings();
293 6 Kragenwar-3044
end
294 Kragenwar-3044
 
295 Kragenwar-3044
 
296 Kragenwar-3044
-- codeblock
297 Kragenwar-3044
init();

All times are GMT -5. The time now is 09:57 AM.


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