Код:
--------------------------------------------------------------------------------
-- Text caches
--------------------------------------------------------------------------------
local ews = common.GetEmptyWString()
function GetEWs() return ews end
--------------------------------------------------------------------------------
local _textGroups = {}
local _textCache = {}
local _textStateGroups = {}
local _textStateCache = {}
--------------------------------------------------------------------------------
local function GetGroupText( group, groupCache, sysName, optional )
local result = groupCache[ sysName ]
if result == nil then
result = group:HasText( sysName ) and group:GetText( sysName )
groupCache[ sysName ] = result
end
if result == false and not optional then
assert( false, "Non-existent text requested: " .. tostring( sysName ) )
end
return result
end
--------------------------------------------------------------------------------
-- Получить текст sysName из текстовой группы аддона sysGroup (группа должна существовать)
-- Если задан optional то при отсутствии текста вернется false, иначе будет вызван assert
function GetAddonText( sysGroup, sysName, optional )
local group = _textGroups[ sysGroup ]
if not group then
group = common.GetAddonRelatedTextGroup( sysGroup )
_textGroups[ sysGroup ] = group
_textCache[ sysGroup ] = {}
end
return GetGroupText( group, _textCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------
-- Получить текст sysName из текстовой группы стейта sysGroup (группа должна существовать)
-- Если задан optional то при отсутствии текста вернется false, иначе будет вызван assert
function GetStateText( sysGroup, sysName, optional )
local group = _textStateGroups[ sysGroup ]
if not group then
group = common.GetStateRelatedTextGroup( sysGroup )
_textStateGroups[ sysGroup ] = group
_textStateCache[ sysGroup ] = {}
end
return GetGroupText( group, _textStateCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------
-- Texture caches
--------------------------------------------------------------------------------
local _textureGroups = {}
local _textureCache = {}
local _textureStateGroups = {}
local _textureStateCache = {}
--------------------------------------------------------------------------------
local function GetGroupTexture( group, groupCache, sysName, optional )
local result = groupCache[ sysName ]
if result == nil then
result = group:HasTexture( sysName ) and group:GetTexture( sysName )
groupCache[ sysName ] = result
end
if result == false and not optional then
assert( false, "Non-existent texture requested: " .. tostring( sysName ) )
end
return result
end
--------------------------------------------------------------------------------
-- Получить текстуру sysName из текстурной группы аддона sysGroup (группа должна существовать)
-- Если задан optional то при отсутствии текстуры вернется false, иначе будет вызван assert
function GetAddonTexture( sysGroup, sysName, optional )
local group = _textureGroups[ sysGroup ]
if not group then
group = common.GetAddonRelatedTextureGroup( sysGroup )
_textureGroups[ sysGroup ] = group
_textureCache[ sysGroup ] = {}
end
return GetGroupTexture( group, _textureCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------
-- Получить текстуру sysName из текстурной группы стейта sysGroup (группа должна существовать)
-- Если задан optional то при отсутствии текстуры вернется false, иначе будет вызван assert
function GetStateTexture( sysGroup, sysName, optional )
local group = _textureStateGroups[ sysGroup ]
if not group then
group = common.GetStateRelatedTextureGroup( sysGroup )
_textureStateGroups[ sysGroup ] = group
_textureStateCache[ sysGroup ] = {}
end
return GetGroupTexture( group, _textureStateCache[ sysGroup ], sysName, optional )
end
--------------------------------------------------------------------------------