vanilla-wow-addons – Rev 1
?pathlinks?
-- CVar Keywords
CSM_CVARNAME = "cvarname";
CSM_CVARVALUE= "cvarval";
CSM_CVARCALLBACK = "callback";
UUI_LAST_PLAYER = "uui_last_player";
UUI_LAST_REALM = "uui_last_realm";
UltimateUIMaster_CVars = { };
UltimateUIMaster_CVarsToRegister = { };
UltimateUIMaster_CVarsToSet = { };
UltimateUIMaster_Callbacks = { };
-- RegisterForSave('UltimateUIMaster_CVars');
-- Debug tools
ULTIMATEUIMASTER_DEBUG_CVAR = 0;
CSM_DEBUG_CVAR = "ULTIMATEUIMASTER_DEBUG_CVAR";
--[[
UltimateUIMaster_RegisterCVar
Usage:
UltimateUIMaster_RegisterCVar(uui_cvar, [uui_defvalue, uui_callback ])
uui_cvar is the "UUI_CVAR_NAME" you used to use.
uui_defvalue is the default value you're storing.
uui_callback will be called when the cvars are loaded
]]
function UltimateUI_RegisterCVar (uui_cvar, uui_defvalue, uui_callback)
-- Sea.io.dprint( CSM_DEBUG_CVAR, "REGISTER: "..uui_cvar);
if ( uui_cvar == nil ) then return false; end
if ( uui_defvalue == nil) then uui_defvalue = 0; end
if ( uui_callback ) then
UltimateUIMaster_Callbacks[this:GetName()] = uui_callback;
end
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then
if (UltimateUIMaster_CVarsToRegister[uui_cvar] == nil) then
UltimateUIMaster_CVarsToRegister[uui_cvar] = uui_defvalue;
end
return false;
end
local realmname = GetCVar("realmName");
if ( UltimateUIMaster_CVars[realmname] == nil ) then
UltimateUIMaster_CVars[realmname]={};
end
if ( UltimateUIMaster_CVars[realmname][playername] == nil ) then
UltimateUIMaster_CVars[realmname][playername]={};
end
local var = UltimateUI_GetCVar(uui_cvar);
if (var) then
UltimateUIMaster_CVars[realmname][playername][uui_cvar] = var;
else
UltimateUIMaster_CVars[realmname][playername][uui_cvar] = uui_defvalue;
end
return true;
end
-- The UltimateUI own
function UltimateUI_SetCVar ( uui_cvar, uui_value)
if ( uui_cvar == nil ) then return false; end
if(not uui_value) then
uui_value = "0";
end
if (isTable(uui_value)) then
-- Sea.io.dprint( CSM_DEBUG_CVAR, "SET: ",uui_cvar," table");
else
-- Sea.io.dprint( CSM_DEBUG_CVAR, "SET: ",uui_cvar,' ',uui_value);
end
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then
UltimateUIMaster_CVarsToSet[uui_cvar] = uui_value;
return false;
end
local realmname = GetCVar("realmName");
if ( UltimateUIMaster_CVars[realmname] == nil ) then
UltimateUIMaster_CVars[realmname]={};
end
if ( UltimateUIMaster_CVars[realmname][playername] == nil ) then
UltimateUIMaster_CVars[realmname][playername]={};
end
UltimateUIMaster_CVars[realmname][playername][uui_cvar] = uui_value;
end
-- Fakes the GetCVar command
function UltimateUI_GetCVar ( uui_cvar )
-- Sea.io.dprint( CSM_DEBUG_CVAR,"GET:", uui_cvar);
if ( uui_cvar == nil ) then return nil; end
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then return nil; end
-- Sea.io.dprint( CSM_DEBUG_CVAR, "GET: VALUE "..UltimateUIMaster_CVars[uui_cvar] );
local realmname = GetCVar("realmName");
--Check if variable exists on current realm/player
if (isTable(UltimateUIMaster_CVars[realmname]) and isTable(UltimateUIMaster_CVars[realmname][playername]) and UltimateUIMaster_CVars[realmname][playername][uui_cvar]) then
return UltimateUIMaster_CVars[realmname][playername][uui_cvar];
end
--Check if variable exists on last realm, current player
if (UltimateUIMaster_LastRealm and isTable(UltimateUIMaster_CVars[UltimateUIMaster_LastRealm]) and isTable(UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][playername]) and UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][playername][uui_cvar]) then
return UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][playername][uui_cvar];
end
--Check if variable exists on any realm, current player
for curRealm in UltimateUIMaster_CVars do
if (isTable(UltimateUIMaster_CVars[curRealm]) and isTable(UltimateUIMaster_CVars[curRealm][playername]) and UltimateUIMaster_CVars[curRealm][playername][uui_cvar]) then
return UltimateUIMaster_CVars[curRealm][playername][uui_cvar];
end
end
--Check if current player exists in old format
if (isTable(UltimateUIMaster_CVars[playername]) and UltimateUIMaster_CVars[playername][uui_cvar]) then
return UltimateUIMaster_CVars[playername][uui_cvar];
end
--Check if variable exists on last realm, last player
if (UltimateUIMaster_LastRealm and UltimateUIMaster_LastPlayer and isTable(UltimateUIMaster_CVars[UltimateUIMaster_LastRealm]) and isTable(UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][UltimateUIMaster_LastPlayer]) and UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][UltimateUIMaster_LastPlayer][uui_cvar]) then
return UltimateUIMaster_CVars[UltimateUIMaster_LastRealm][UltimateUIMaster_LastPlayer][uui_cvar];
end
--Check if variable exists on cur realm, any player
if (isTable(UltimateUIMaster_CVars[realmname])) then
for curPlayer in UltimateUIMaster_CVars[realmname] do
if (isTable(UltimateUIMaster_CVars[realmname][curPlayer]) and UltimateUIMaster_CVars[realmname][curPlayer][uui_cvar]) then
return UltimateUIMaster_CVars[realmname][curPlayer][uui_cvar];
end
end
end
--Check if variable exists on any realm, any player
for curRealm in UltimateUIMaster_CVars do
if (isTable(UltimateUIMaster_CVars[curRealm])) then
for curPlayer in UltimateUIMaster_CVars[curRealm] do
if (isTable(UltimateUIMaster_CVars[curRealm][curPlayer]) and UltimateUIMaster_CVars[curRealm][curPlayer][uui_cvar]) then
return UltimateUIMaster_CVars[curRealm][curPlayer][uui_cvar];
end
end
end
end
--Check if previous player exists in old format
if (UltimateUIMaster_LastPlayer and isTable(UltimateUIMaster_CVars[UltimateUIMaster_LastPlayer]) and UltimateUIMaster_CVars[UltimateUIMaster_LastPlayer][uui_cvar]) then
return UltimateUIMaster_CVars[UltimateUIMaster_LastPlayer][uui_cvar];
end
--Check if var exists on any player in old format
for curPlayer in UltimateUIMaster_CVars do
if (isTable(UltimateUIMaster_CVars[curPlayer]) and UltimateUIMaster_CVars[curPlayer][uui_cvar]) then
return UltimateUIMaster_CVars[curPlayer][uui_cvar];
end
end
--Check if var exists in really old format
if (UltimateUIMaster_CVars[uui_cvar]) then
return UltimateUIMaster_CVars[uui_cvar];
end
--Give up
return nil;
end
function UltimateUI_RegisterMissed ()
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then return false; end
for uui_cvar, uui_defvalue in UltimateUIMaster_CVarsToRegister do
UltimateUI_RegisterCVar(uui_cvar, uui_defvalue);
UltimateUIMaster_CVarsToRegister[uui_cvar] = nil;
end
return true;
end
function UltimateUI_SetMissed ()
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then return false; end
for uui_cvar, uui_value in UltimateUIMaster_CVarsToSet do
UltimateUI_SetCVar(uui_cvar, uui_value);
UltimateUIMaster_CVarsToSet[uui_cvar] = nil;
end
return true;
end
function UltimateUI_RegisterVarsLoaded (uui_callback)
if ( uui_callback ) then
UltimateUIMaster_Callbacks[this:GetName()] = uui_callback;
end
end
function UltimateUI_CallVarsLoaded ()
playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT )) then return false; end
for uui_mod, uui_func in UltimateUIMaster_Callbacks do
if (uui_func) then
-----------------------------------------------------------------------
--WARNING WARNING WARNING we are chaning this so that the called-------
--function will behave normalish, but this could be dangerous----------
-----------------------------------------------------------------------
--Store old this
local curThis = this;
--If we got a good something to set this to, then do it
if (getglobal(uui_mod)) then
this = getglobal(uui_mod);
end
--Call the function
uui_func();
--Reset this
this = curThis;
end
end
return true;
end
ULTIMATEUI_SETTINGS_CLASS_PREFIX = "CLASS_DEFAULT_SETTING_";
-- this saves default settings for a certain class
-- it is recommended that UltimateUIMaster_StoreVariables() is called prior to
-- this function so that the CVars contain the latest info, but...
function UltimateUI_SaveDefaultSettingsForClass(className)
if ( not className ) then
className = UnitClass("player");
end
local playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT ) or ( not className ) ) then
return false;
end
if ( UltimateUIMaster_CVars[playername] == nil ) then
UltimateUIMaster_CVars[playername]={};
end
local cvarIndex = ULTIMATEUI_SETTINGS_CLASS_PREFIX..className;
if ( UltimateUIMaster_CVars[cvarIndex] == nil ) then
UltimateUIMaster_CVars[cvarIndex]={};
end
for k, v in UltimateUIMaster_CVars[playername] do
UltimateUIMaster_CVars[cvarIndex][k] = v;
end
return true;
end
-- this loads default settings for a certain class
-- it is recommended that UltimateUIMaster_LoadVariables() is called after this
-- function so that the system contains the latest info, but...
function UltimateUI_LoadDefaultSettingsForClass(className)
if ( not className ) then
className = UnitClass("player");
end
local playername = UnitName("player");
if (( playername == nil ) or ( playername == UKNOWNBEING ) or ( playername == UNKNOWNOBJECT ) or ( not className ) ) then
return false;
end
if ( UltimateUIMaster_CVars[playername] == nil ) then
UltimateUIMaster_CVars[playername]={};
end
local cvarIndex = ULTIMATEUI_SETTINGS_CLASS_PREFIX..className;
if ( UltimateUIMaster_CVars[cvarIndex] == nil ) then
UltimateUIMaster_CVars[cvarIndex]={};
end
for k, v in UltimateUIMaster_CVars[cvarIndex] do
UltimateUIMaster_CVars[playername][k] = v;
end
return true;
end
--[[
Everything below this point is a helper function.
You shouldn't have to call any of these.
]]--
function PrintCvars()
PrintTable(UltimateUIMaster_CVars, "UltimateUIMaster_CVars");
end
function pcv ()
DEFAULT_CHAT_FRAME=ChatFrame1;
PrintCvars();
end