Quantcast
local A, L = ...

local config = L.C

--[[=========================== 变量区 ==========================]]
-- 是否可移动的标记
local IsMovable = false -- 没事干别动这个,你改成ture那么进入游戏后聊天条就是可以移动的
--[[=============================== END ==============================]]
local chatFrame = SELECTED_DOCK_FRAME -- 聊天框架
local inputbox = chatFrame.editBox -- 输入框

COLORSCHEME_BORDER = {0.3, 0.3, 0.3, 1}

-- 边框颜色
-- 主框架初始化
local ChatBar = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
-- rChatBar = ChatBar

local function ChannelSay_OnClick()
  ChatFrame_OpenChat("/s " .. inputbox:GetText(), chatFrame)
end

local function ChannelYell_OnClick()
  ChatFrame_OpenChat("/y " .. inputbox:GetText(), chatFrame)
end

local function ChannelParty_OnClick()
  ChatFrame_OpenChat("/p " .. inputbox:GetText(), chatFrame)
end

local function ChannelGuild_OnClick()
  ChatFrame_OpenChat("/g " .. inputbox:GetText(), chatFrame)
end

local function ChannelRaid_OnClick()
  ChatFrame_OpenChat("/raid " .. inputbox:GetText(), chatFrame)
end

local function ChannelBG_OnClick()
  ChatFrame_OpenChat("/bg " .. inputbox:GetText(), chatFrame)
end

local function ChatEmote_OnClick()
  rChat:ToggleEmoteTable()
end

local function ChannelWorld_OnClick(self, button)
  if button == "RightButton" then
    local _, channelName, _ = GetChannelName("大脚世界频道")
    if channelName == nil then
      JoinPermanentChannel("大脚世界频道", nil, 1, 1)
      ChatFrame_RemoveMessageGroup(chatFrame, "CHANNEL")
      ChatFrame_AddChannel(chatFrame, "大脚世界频道")
      print("|cffffe00a<|r|cffff7d0arChat|r|cffffe00a>|r |cff00d200已加入大脚世界频道|r")
    else
      LeaveChannelByName("大脚世界频道")
      print("|cffffe00a<|r|cffff7d0arChat|r|cffffe00a>|r |cffd20000已离开大脚世界频道|r")
    end
  else
    local channel, _, _ = GetChannelName("大脚世界频道")
    ChatFrame_OpenChat("/" .. channel .. " " .. inputbox:GetText(), chatFrame)
  end
end

local function Roll_OnClick()
    RandomRoll(1, 100)
end

local function Report_OnClick()
  local statText = rChat:StatReport()
  if button == "RightButton" then
    print("|cffffe00a<|r|cffff7d0arChat|r|cffffe00a>|r |cff00d200我的属性:|r" .. statText)
  else
    ChatEdit_ActivateChat(inputbox)
    inputbox:SetText(statText)
  end
end

local function ChatCopy_OnClick()
  rChat:CopyFunc()
end

local ChannelButtons = {
  {name = "say", text = "说", color = {1.00, 1.00, 1.00}, callback = ChannelSay_OnClick},
  {name = "yell", text = "喊", color = {1.00, 0.25, 0.25}, callback = ChannelYell_OnClick},
  {name = "party", text = "队", color = {0.66, 0.66, 1.00}, callback = ChannelParty_OnClick},
  {name = "guild", text = "会", color = {0.25, 1.00, 0.25}, callback = ChannelGuild_OnClick},
  {name = "raid", text = "团", color = {1.00, 0.50, 0.00}, callback = ChannelRaid_OnClick},
  -- {name = "bg", text = "战", color = {1.00, 0.50, 0.00}, callback = ChannelBG_OnClick},
  {name = "world", text = "世", color = {0.78, 1.00, 0.59}, callback = ChannelWorld_OnClick},
  {name = "emote", text = "表", color = {1.00, 0.50, 1.00}, callback = ChatEmote_OnClick},
  {name = "roll", text = "骰", color = {1.00, 1.00, 0.00}, callback = Roll_OnClick},
  -- {name = "report", text = "报", color = {0.80, 0.30, 0.30}, callback = Report_OnClick},
  {name = "copy", text = "复", color = {0.20, 0.60, 0.80}, callback = ChatCopy_OnClick}
}

local function CreateChannelButton(data, index)
  local button = CreateFrame("Button", nil, ChatBar)
  button:SetSize(20, 10)
  -- frame:SetWidth(22) -- 按钮宽度
  -- frame:SetHeight(22) -- 按钮高度
  button:SetAlpha(config.alpha.leave)
  button:SetFrameLevel(1)

  local tex = button:CreateTexture()
  tex:SetTexture("Interface\\Buttons\\WHITE8x8")
  tex:SetAllPoints()
  tex:SetColorTexture(unpack(data.color))

  button:SetScript(
    "OnEnter",
    function(self)
      self:SetAlpha(config.alpha.enter)
    end
  )
  button:SetScript(
    "OnLeave",
    function(self)
      self:SetAlpha(config.alpha.leave)
    end
  )

  if config.bar.is_vertical then
    button:SetPoint("TOP", ChatBar, "TOP", 0, (1 - index) * config.bar.padding)
  else
    button:SetPoint("LEFT", ChatBar, "LEFT", 10 + (index - 1) * config.bar.padding, 0)
  end

  button:RegisterForClicks("AnyUp")
  button:SetScript("OnClick", data.callback)
  -- 显示的文字
  -- frameText = frame:CreateFontString(data.name .. "Text", "OVERLAY")
  -- 字体设置
  -- frameText:SetFont(STANDARD_TEXT_FONT, 15, "OUTLINE")

  -- frameText:SetJustifyH("CENTER")
  -- frameText:SetWidth(26)
  -- frameText:SetHeight(26)
  -- frameText:SetText(data.text)
  -- frameText:SetPoint("CENTER", 0, 0)

  -- 文字按钮的颜色
  -- frameText:SetTextColor(data.color[1], data.color[2], data.color[3])
end

ChatBar:SetFrameLevel(0)

-- 使用竖直布局
if config.bar.is_vertical then
  -- 主框体宽度
  ChatBar:SetWidth(30)
  -- 主框体高度
  ChatBar:SetHeight(#ChannelButtons * config.bar.padding + 10)
else
  -- 主框体宽度
  ChatBar:SetWidth(#ChannelButtons * config.bar.padding + 10)
  -- 主框体高度
  ChatBar:SetHeight(30)
end

-- 上方聊天输入框
-- if SimpleChat_Config.UseTopInput then
--     inputbox:ClearAllPoints()
--     inputbox:SetPoint("BOTTOMLEFT", chatFrame, "TOPLEFT", 0, 20)
--     inputbox:SetPoint("BOTTOMRIGHT", chatFrame, "TOPRIGHT", 0, 20)
-- end

-- 位置设定
if config.bar.is_vertical then
  ChatBar:SetPoint("TOPLEFT", "ChatFrame1", "TOPRIGHT", config.bar.offsetx + 30, config.bar.offsety + 25)
else
  ChatBar:SetPoint("TOPLEFT", "ChatFrame1", "BOTTOMLEFT", config.bar.offsetx, config.bar.offsety - 5)
end

if GetLocale() ~= 'zhCN' then
  table.remove(ChannelButtons, 6)
end

for i = 1, #ChannelButtons do -- 对非战斗记录聊天框的信息进行处理
  CreateChannelButton(ChannelButtons[i], i)
end

--create drag frame
rLib:CreateDragFrame(ChatBar, L.dragFrames, -2, true)
--create slash commands
rLib:CreateSlashCmd(L.addonName, L.addonShortcut, L.dragFrames, L.addonColor)