--## Author: 布兰卡德-沐琪
--[[
	说					"SAY"
	表情				"EMOTE"
	大喊				"YELL"
	公会聊天			"GUILD"
	官员聊天			"OFFICER"
	公会通告			"GUILD_ACHIEVEMENT"
	成就通告			"ACHIEVEMENT"
	悄悄话				"WHISPER"
	战网昵称密语		"BN_WHISPER"
	小队				"PARTY"
	小队队长			"PARTY_LEADER"
	团队				"RAID"
	团队领袖			"RAID_LEADER"
	团队通知			"RAID_WARNING"
	副本				"INSTANCE_CHAT"
	副本向导			"INSTANCE_CHAT_LEADER"
	语音识别			"VOICE_TEXT"
	经验				"COMBAT_XP_GAIN"
	荣誉				"COMBAT_HONOR_GAIN"
	声望				"COMBAT_FACTION_CHANGE"
	技能提升			"SKILL"
	物品拾取			"LOOT"
	货币				"CURRENCY"
	金钱拾取			"MONEY"
	商业技能			"TRADESKILLS"
	正在打开			"OPENING"
	宠物信息			"PET_INFO"
	其他信息			"COMBAT_MISC_INFO"
	战场部落			"BG_HORDE"
	战场联盟			"BG_ALLIANCE"
	战场中立			"BG_NEUTRAL"
	系统消息			"SYSTEM"
	错误				"ERRORS"
	已屏蔽				"IGNORED"
	频道				"CHANNEL"
	目标图标			"TARGETICONS"
	暴雪游戏服务提示	"BN_INLINE_TOAST_ALERT"
	宠物对战			"PET_BATTLE_COMBAT_LOG"
	宠物对战信息		"PET_BATTLE_INFO"
	信号				"PING"
	说					"MONSTER_SAY"
	表情				"MONSTER_EMOTE"
	大喊				"MONSTER_YELL"
	悄悄话				"MONSTER_WHISPER"
	首领台词			"MONSTER_BOSS_EMOTE"
	首领密语			"MONSTER_BOSS_WHISPER"
--]]


-- 定义聊天标签组
local ChatTypeGroup = {}


-- 综合
ChatTypeGroup["综合"] = {
	"SAY",
	"EMOTE",
	"YELL",
	"COMBAT_XP_GAIN",
	"COMBAT_HONOR_GAIN",
	"COMBAT_FACTION_CHANGE",
	"SKILL",
	"LOOT",
	"CURRENCY",
	"MONEY",
	"COMBAT_MISC_INFO",
	"BG_HORDE",
	"BG_ALLIANCE",
	"BG_NEUTRAL",
	"SYSTEM",
	"ERRORS",
	"BN_INLINE_TOAST_ALERT",
	"MONSTER_SAY",
	"MONSTER_EMOTE",
	"MONSTER_YELL",
	"MONSTER_WHISPER",
	"MONSTER_BOSS_EMOTE",
	"MONSTER_BOSS_WHISPER",
	"ACHIEVEMENT",
	"PARTY",
	"PARTY_LEADER",
	"RAID",
	"RAID_LEADER",
	"RAID_WARNING",
	"INSTANCE_CHAT",
	"INSTANCE_CHAT_LEADER",
	"LOOT",
	"PING",
	"GUILD",
	"OFFICER",
	"GUILD_ACHIEVEMENT",
	"WHISPER",
	"BN_WHISPER",
}

-- 团队
ChatTypeGroup["团队"] = {
	"MONSTER_EMOTE",
	"ACHIEVEMENT",
	"PARTY",
	"PARTY_LEADER",
	"RAID",
	"RAID_LEADER",
	"RAID_WARNING",
	"INSTANCE_CHAT",
	"INSTANCE_CHAT_LEADER",
	"LOOT",
	"PING",
}

-- 密语
ChatTypeGroup["聊天"] = {
	"GUILD",
	"OFFICER",
	"GUILD_ACHIEVEMENT",
	"WHISPER",
	"BN_WHISPER",
}


--[[
	设置聊天标签
	@self			聊天窗口对象
	@object			聊天标签组 ChatTypeGroup["综合"]
--]] 
local function SetChatTab(self, object)	
	ChatFrame_RemoveAllMessageGroups(self)	-- 删除所有聊天类型
	ChatFrame_RemoveAllChannels(self)		-- 删除所有聊天频道
	
	for _, v in ipairs(object) do
		ChatFrame_AddMessageGroup(self, v)
	end
end


-- 单独设置"综合"标签
local function SetGeneralTab()
	
	-- 聊天标签对象
	local ChatTab = DEFAULT_CHAT_FRAME
	
	-- 字体
	FCF_SetChatWindowFontSize(self, ChatTab, 13)
	
	-- 设置聊天标签
	SetChatTab(ChatTab, ChatTypeGroup["综合"])
end


-- 添加聊天标签
local function AddChatTab()
	
	-- 单独设置"综合"标签
	SetGeneralTab()
	
	-- 排序
	local sort = {"团队", "聊天"}

	for _, k in ipairs(sort) do		
		
		-- 聊天标签对象
        local ChatTab, _ = FCF_OpenNewWindow(k, true)

		-- 字体
		FCF_SetChatWindowFontSize(self, ChatTab, 13)
	
		-- 设置聊天标签
		SetChatTab(ChatTab, ChatTypeGroup[k])
		
		if k == "聊天" then
			-- 告诉系统：以后有人私聊我，把粉红色的字都显示在这个窗口里
			ChatFrame_ReceiveAllPrivateMessages(ChatTab)
		end
	end
end

-- 注册命令
SlashCmdList["ACT"] = function()

    -- 重置所有聊天窗口到暴雪默认状态
    FCF_ResetChatWindows()
    
    -- 应用自定义配置 使用 C_Timer.After 延迟一小会儿执行，等待 Reset 完成，防止 UI 报错
    C_Timer.After(0.1, function()
        AddChatTab()
    end)
end
SLASH_ACT1 = "/act"

local UpdateChatCvarButton = CreateFrame("Button", nil, SettingsPanel, "UIPanelButtonTemplate")
UpdateChatCvarButton:SetPoint("BOTTOMLEFT", SettingsPanel, 130, 16)
UpdateChatCvarButton:SetSize(150, 22)
UpdateChatCvarButton:SetText("聊天框推荐设置")
UpdateChatCvarButton:SetScript("OnClick", function()
    -- 重置所有聊天窗口到暴雪默认状态
    FCF_ResetChatWindows()
    -- 应用自定义配置 使用 C_Timer.After 延迟一小会儿执行，等待 Reset 完成，防止 UI 报错
    C_Timer.After(0.1, function()
        AddChatTab()
    end)
end)