Quantcast
local addon_name = "Kaamelol"
local frame_name = addon_name .. "Frame"
local frame = CreateFrame("Frame", frame_name)
local cmd_name = "/kaamelol"
local cmd_name2 = "/kl"

C_ChatInfo.RegisterAddonMessagePrefix(addon_name)

frame:RegisterEvent("CHAT_MSG_ADDON")

frame:SetScript("OnEvent", function(self, event_name, ...)
  return self[event_name](self, event_name, ...)
end)

function kaamelol_play(msg)
  root = "Interface/AddOns/" .. addon_name .. "/sounds/"
  path = root .. msg .. ".mp3"
  PlaySoundFile(path, "Master")
  return true
end

function kaamelol_broadcast(msg)
  if not msg or msg == "" then
    return false
  end

  chan, rest = strsplit(" ", msg, 2)
  if not rest then
    rest = chan
    chan = "GUILD"
  else
    chan = string.upper(chan)
    if chan == "WHISPER" then
      target, rest = strsplit(" ", rest, 2)
    else
      target = ""
    end
  end
  number = tonumber(rest)
  if number then
    rest = KAAMELOL_CONTENT[number]["FILE"]
  end
  C_ChatInfo.SendAddonMessage(addon_name, rest, chan, target);
  return true
end

function kaamelol_search(msg)
  if not msg or msg == "" then
    return false
  end
  print("\nresults:")
  for i, entry in ipairs(KAAMELOL_CONTENT) do
    local title = entry["TITLE"]
    local file = entry["FILE"]

    if string.find(string.upper(title), string.upper(msg)) then
      max_length = 256
      if string.len(title) > max_length then
        title = string.sub(title, 1, max_length) .. '...'
      end
      print(i, ":", title)
    end
  end
  return true
end

function kaamelol_run_command(cmd, args)
  if cmd == "play" or cmd == "p" then
    return kaamelol_play(args)
  elseif cmd == "broad" or cmd == "b" then
    return kaamelol_broadcast(args)
  elseif cmd == "search" or cmd == "s" then
    return kaamelol_search(args)
  else
    return kaamelol_broadcast(cmd)
  end
end

SLASH_KAAMELOL1 = cmd_name
SLASH_KAAMELOL2 = cmd_name2
SlashCmdList["KAAMELOL"] = function(msg)
  cmd, args = strsplit(" ", msg, 2)
  if not kaamelol_run_command(cmd, args) then
    print("Commandes de " .. addon_name .. " :")
    print("/kl s pas faux: recherche une citation à partir de l'extrait 'pas faux', pour retrouver son numéro")
    print("/kl 31: joue la citation numéro 31 à la guilde")
    print("Pour des commandes plus poussées, demandez à Eckter")
  end
end


function frame:CHAT_MSG_ADDON(event, prefix, msg)
  if prefix == addon_name then
    kaamelol_play(msg)
  end
end