--------------------------------------------------------------------------------
-- 文件: const_value.lua
-- 日期: 2013-12-06
-- 作者: 盒子哥
-- 描述: 定义全局的常量, 在这里增加全局的常量
--------------------------------------------------------------------------------
local common = LibStub("LibAddon"):GetAddon("common")
local type = type
local CONST_TABLE = {}
local t = CONST_TABLE

t.g_login_mode_normal = 1 	-- 正常登录模式
t.g_login_mode_fast = 2	-- 快速登录模式

-- 登录状态
t.g_Unlogin = 0           -- 未登录
t.g_Normal = 1            -- 正常登录
t.g_Anonymous = 2        -- 匿名登录

t.Enhance_On = 1;
t.Enhance_Off = 0;
t.Mute_On = 1;
t.Mute_Off = 0;   --（1=打开状态、0=关闭状态）
t.obj_Mic = 2;
t.obj_Voice = 1;  --（2=表示麦克、1=表示声音）
t.g_type_team=1;
t.g_type_channel=2;   --（表示队伍、表示频道）
t.g_speak_key=0;
t.g_speak_mouse=1;
t.g_speak_free=2;
t.g_strHover  = "HoverImage"
t.g_strPushed = "PushedImage"
t.g_strNormal = "NormalImage" 
t.g_strDisabled = "DisabledImage"

t.g_defaultMainbarposX = -91
t.g_defaultMainbarposY = 30
t.g_defaultMainbarscaleX = 0.5
t.g_defaultMainbarscaleY = 0

--登录类型和登录标志
t.type_fast_login 	 = 0	--快速登录
t.type_normal_login  = 1	--普通登录
t.type_visitor_login = 2	--游客登录

t.login_flag_normal  = 0	--默认无操作
t.login_flag_killyy  = 1	--退出YY

local mt = {
	__index = function (t, k)
		return CONST_TABLE[k]
	end,
	__newindex = function (t, k, v)
		geterrorhandler()("can't update const value " .. tostring(k))
	end
}

setmetatable(common.const, mt)


function common:add_const(key, value)
	if (type(key) == "table") then
		for k, v in pairs(key) do
			self:add_const(k, v)
		end
	elseif (type(key) == "string") then
		if (self.const[key]) then
			geterrorhandler()("common:add_const(key, value) failed. 'key' "..key.." exist.")
		end
		
		CONST_TABLE[key] = value
	else
		geterrorhandler()("common:add_const(key, value): 'key'  - string expected.")
	end
	
end

function common:print_all_const(print_func)
	local print_func = print_func or function(...) self:print(...) end
	print_func("const value count:", #CONST_TABLE)
	for k, v in pairs(CONST_TABLE) do
		print_func("    ", k, "=", tostring(self.const[k]))
	end
end