lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.21/] [KragenBars/] [Main.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.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 Kragenwar-3044
        vars.vers = 3.20;
11 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 Kragenwar-3044
                vars.locale = Turbine.Engine.GetLocale();
17 Kragenwar-3044
 
18 Kragenwar-3044
                limbo = Turbine.UI.Window();
19 Kragenwar-3044
                limbo:SetPosition(-35, -35);
20 Kragenwar-3044
                limbo:SetVisible(false);
21 Kragenwar-3044
 
22 Kragenwar-3044
                settings = DecodeTable(Turbine.PluginData.Load( Turbine.DataScope.Character, "KragenBarsSettings" ));
23 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 Kragenwar-3044
                                if(settings.language == nil) then
31 Kragenwar-3044
                                        if (vars.locale == "fr") then
32 Kragenwar-3044
                                                settings.language = 2;
33 Kragenwar-3044
                                        elseif (vars.locale == "de") then
34 Kragenwar-3044
                                                settings.language = 3;
35 Kragenwar-3044
                                        else
36 Kragenwar-3044
                                                settings.language = 1;
37 Kragenwar-3044
                                        end
38 Kragenwar-3044
                                end
39 Kragenwar-3044
        end
40 Kragenwar-3044
 
41 Kragenwar-3044
        -- if version is not declared then wipe settings file and set version number
42 Kragenwar-3044
                -- if version <3.00 (prior versions had string version number) then add required settings
43 Kragenwar-3044
        if (settings.vers == nil or type(settings.vers) == "string" or settings.vers < 3.00) then
44 Kragenwar-3044
                        settings = nil;
45 Kragenwar-3044
            settings = { };
46 Kragenwar-3044
            settings.vers = vars.vers;
47 Kragenwar-3044
            settings.opacity = 1;
48 Kragenwar-3044
            settings.lockslots = false;
49 Kragenwar-3044
            settings.snaptogrid = true;
50 Kragenwar-3044
                        if(settings.language == nil) then
51 Kragenwar-3044
                                if (vars.locale == "fr") then
52 Kragenwar-3044
                                        settings.language = 2;
53 Kragenwar-3044
                                elseif (vars.locale == "de") then
54 Kragenwar-3044
                                        settings.language = 3;
55 Kragenwar-3044
                                else
56 Kragenwar-3044
                                        settings.language = 1;
57 Kragenwar-3044
                                end
58 Kragenwar-3044
                        end
59 Kragenwar-3044
            SaveSettings();
60 Kragenwar-3044
                elseif (settings.vers < 3.20) then
61 Kragenwar-3044
                        if(settings.language == nil) then
62 Kragenwar-3044
                                if (vars.locale == "fr") then
63 Kragenwar-3044
                                        settings.language = 2;
64 Kragenwar-3044
                                elseif (vars.locale == "de") then
65 Kragenwar-3044
                                        settings.language = 3;
66 Kragenwar-3044
                                else
67 Kragenwar-3044
                                        settings.language = 1;
68 Kragenwar-3044
                                end
69 Kragenwar-3044
                        end
70 Kragenwar-3044
 
71 Kragenwar-3044
                end
72 Kragenwar-3044
 
73 Kragenwar-3044
 
74 Kragenwar-3044
        if (vars.classid == 40) then
75 Kragenwar-3044
            vars.playerclass = "Burglar";
76 Kragenwar-3044
            KragenBars = BurglarBars();
77 Kragenwar-3044
        elseif (vars.classid == 24) then
78 Kragenwar-3044
            vars.playerclass = "Captain";
79 Kragenwar-3044
            KragenBars = CaptainBars();
80 Kragenwar-3044
        elseif (vars.classid == 172) then
81 Kragenwar-3044
            vars.playerclass = "Champion";
82 Kragenwar-3044
            KragenBars = ChampionBars();
83 Kragenwar-3044
        elseif (vars.classid == 23) then
84 Kragenwar-3044
            vars.playerclass = "Guardian";
85 Kragenwar-3044
            KragenBars = GuardianBars();
86 Kragenwar-3044
        elseif (vars.classid == 162) then
87 Kragenwar-3044
            vars.playerclass = "Hunter";
88 Kragenwar-3044
            KragenBars = HunterBars();
89 Kragenwar-3044
        elseif (vars.classid == 185) then
90 Kragenwar-3044
            vars.playerclass = "Loremaster";
91 Kragenwar-3044
            KragenBars = LoreBars();
92 Kragenwar-3044
        elseif (vars.classid == 31) then
93 Kragenwar-3044
            vars.playerclass = "Minstrel";
94 Kragenwar-3044
            KragenBars = MiniBars();
95 Kragenwar-3044
        elseif (vars.classid == 193) then
96 Kragenwar-3044
            vars.playerclass = "Runekeeper";
97 Kragenwar-3044
            KragenBars = RuneBars();
98 Kragenwar-3044
        elseif (vars.classid == 194) then
99 Kragenwar-3044
            vars.playerclass = "Warden";
100 Kragenwar-3044
                        Turbine.Shell.WriteLine("KragenBars: Warden is not currently implemented in KragenBars.  Look for this feature in a future version.");
101 Kragenwar-3044
            -- KragenBars = WardenBars();
102 Kragenwar-3044
        end
103 Kragenwar-3044
 
104 Kragenwar-3044
end
105 Kragenwar-3044
 
106 Kragenwar-3044
-- save to settings file
107 Kragenwar-3044
function SaveSettings()
108 Kragenwar-3044
    Turbine.PluginData.Save( Turbine.DataScope.Character, "KragenBarsSettings", EncodeTable(settings) );
109 Kragenwar-3044
end
110 Kragenwar-3044
 
111 Kragenwar-3044
function EncodeTable(data)
112 Kragenwar-3044
        if ((vars.locale == "fr" or vars.locale == "de") and data ~= nil) then
113 Kragenwar-3044
                local newdata = {};
114 Kragenwar-3044
                local newkey = nil;
115 Kragenwar-3044
 
116 Kragenwar-3044
                for k,v in pairs(data) do
117 Kragenwar-3044
                        if (type(k) == "number") then
118 Kragenwar-3044
                                newkey = ("<num>%f</num>"):format(k);
119 Kragenwar-3044
                        else
120 Kragenwar-3044
                                newkey = k;
121 Kragenwar-3044
                        end
122 Kragenwar-3044
                        if (type(data[k]) == "number") then
123 Kragenwar-3044
                                newdata[newkey] = ("<num>%f</num>"):format(data[k]);
124 Kragenwar-3044
                        elseif(type(data[k]) == "table") then
125 Kragenwar-3044
                                newdata[newkey] = EncodeTable(data[k]);
126 Kragenwar-3044
                        else
127 Kragenwar-3044
                                newdata[newkey] = data[k];
128 Kragenwar-3044
                        end
129 Kragenwar-3044
                end
130 Kragenwar-3044
                return newdata;
131 Kragenwar-3044
        else
132 Kragenwar-3044
                return data;
133 Kragenwar-3044
        end
134 Kragenwar-3044
end
135 Kragenwar-3044
 
136 Kragenwar-3044
function DecodeTable(data)
137 Kragenwar-3044
        if ((vars.locale == "fr" or vars.locale == "de") and data ~= nil) then
138 Kragenwar-3044
                local newdata = {};
139 Kragenwar-3044
                local newkey = nil;
140 Kragenwar-3044
 
141 Kragenwar-3044
                for k,v in pairs(data) do
142 Kragenwar-3044
                        if (type(k) == "string") then
143 Kragenwar-3044
                                local match = k:match("<num>(%d+.%d+)</num>");
144 Kragenwar-3044
                                if (match ~= nil) then
145 Kragenwar-3044
                                        newkey = tonumber(match);
146 Kragenwar-3044
                                else
147 Kragenwar-3044
                                        newkey = k;
148 Kragenwar-3044
                                end
149 Kragenwar-3044
                        else
150 Kragenwar-3044
                                newkey = k;
151 Kragenwar-3044
                        end
152 Kragenwar-3044
                        if (type(data[k]) == "string") then
153 Kragenwar-3044
                                local match = data[k]:match("<num>(%d+.%d+)</num>");
154 Kragenwar-3044
                                if (match ~= nil) then
155 Kragenwar-3044
                                        newdata[newkey] = tonumber(match);
156 Kragenwar-3044
                                else
157 Kragenwar-3044
                                        newdata[newkey] = data[k];
158 Kragenwar-3044
                                end
159 Kragenwar-3044
                        elseif(type(data[k]) == "table") then
160 Kragenwar-3044
                                newdata[newkey] = DecodeTable(data[k]);
161 Kragenwar-3044
                        else
162 Kragenwar-3044
                                newdata[newkey] = data[k];
163 Kragenwar-3044
                        end
164 Kragenwar-3044
                end
165 Kragenwar-3044
                return newdata;
166 Kragenwar-3044
        else
167 Kragenwar-3044
                return data;
168 Kragenwar-3044
        end
169 Kragenwar-3044
end
170 Kragenwar-3044
 
171 Kragenwar-3044
-- on unload call each instances unload function to save settings
172 Kragenwar-3044
function UnloadPlugin()
173 Kragenwar-3044
    KragenBars:SaveSettings();
174 Kragenwar-3044
end
175 Kragenwar-3044
 
176 Kragenwar-3044
 
177 Kragenwar-3044
function ValidatePosition(x, y, width, height)
178 Kragenwar-3044
    x = math.min(math.max(x, 0), Turbine.UI.Display:GetWidth() - width);
179 Kragenwar-3044
    y = math.min(math.max(y, 0), Turbine.UI.Display:GetHeight() - height);
180 Kragenwar-3044
    return x, y;
181 Kragenwar-3044
 
182 Kragenwar-3044
end
183 Kragenwar-3044
 
184 Kragenwar-3044
 
185 Kragenwar-3044
-- setup user chat commands
186 Kragenwar-3044
KragenBarsCommand = Turbine.ShellCommand();
187 Kragenwar-3044
 
188 Kragenwar-3044
function KragenBarsCommand:Execute( command, arguments )
189 Kragenwar-3044
        if (arguments == "setup") then
190 Kragenwar-3044
                KragenBars:ShowSetup();
191 Kragenwar-3044
        elseif (arguments == "refresh") then
192 Kragenwar-3044
                KragenBars:Refresh();
193 Kragenwar-3044
        elseif (arguments == "save") then
194 Kragenwar-3044
                KragenBars:SaveSettings();
195 Kragenwar-3044
                elseif (arguments == "reset") then
196 Kragenwar-3044
                        KragenBars:DefaultPosition();
197 Kragenwar-3044
                        KragenBars:DefaultSettings();
198 Kragenwar-3044
                        KragenBars:Refresh();
199 Kragenwar-3044
        elseif (arguments == "defaultpos") then
200 Kragenwar-3044
                        KragenBars:DefaultPosition();
201 Kragenwar-3044
        else
202 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");
203 Kragenwar-3044
        end
204 Kragenwar-3044
 
205 Kragenwar-3044
end
206 Kragenwar-3044
 
207 Kragenwar-3044
 
208 Kragenwar-3044
function AddCallback(object, event, callback)
209 Kragenwar-3044
        if (object[event] == nil) then
210 Kragenwar-3044
                object[event] = callback;
211 Kragenwar-3044
        else
212 Kragenwar-3044
                if (type(object[event]) == "table") then
213 Kragenwar-3044
                        table.insert(object[event], callback);
214 Kragenwar-3044
                else
215 Kragenwar-3044
                        object[event] = {object[event], callback};
216 Kragenwar-3044
                end
217 Kragenwar-3044
        end
218 Kragenwar-3044
end
219 Kragenwar-3044
 
220 Kragenwar-3044
 
221 Kragenwar-3044
-- inialize plugin
222 Kragenwar-3044
function init()
223 Kragenwar-3044
    settings = { };
224 Kragenwar-3044
 
225 Kragenwar-3044
        -- setup plugin unload function to save setting on unload.
226 Kragenwar-3044
                pluginName="KragenBars";
227 Kragenwar-3044
                window = Turbine.UI.Window();
228 Kragenwar-3044
                window:SetWantsUpdates(true);
229 Kragenwar-3044
                window.Update = function(sender,args)
230 Kragenwar-3044
                        if (Plugins[pluginName] ~= nil) then
231 Kragenwar-3044
                                Plugins[pluginName].Unload = function(self,sender,args)
232 Kragenwar-3044
                                        UnloadPlugin();
233 Kragenwar-3044
                                end
234 Kragenwar-3044
                                window:SetWantsUpdates(false);
235 Kragenwar-3044
                        end
236 Kragenwar-3044
                end
237 Kragenwar-3044
 
238 Kragenwar-3044
        Turbine.Shell.AddCommand( "Kragenbars", KragenBarsCommand );
239 Kragenwar-3044
 
240 Kragenwar-3044
        LoadSettings();
241 Kragenwar-3044
end
242 Kragenwar-3044
 
243 Kragenwar-3044
 
244 Kragenwar-3044
-- codeblock
245 Kragenwar-3044
init();

All times are GMT -5. The time now is 06:23 PM.


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