You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.3 KiB
100 lines
3.3 KiB
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
local TSM = select(2, ...) ---@type TSM
|
|
local Sound = TSM.Init("Util.Sound") ---@class Util.Sound
|
|
local L = TSM.Include("Locale").GetTable()
|
|
local NO_SOUND_KEY = "TSM_NO_SOUND" -- this can never change
|
|
---@alias SoundKey
|
|
---|'"TSM_NO_SOUND"'
|
|
---|'"AuctionWindowOpen"'
|
|
---|'"AuctionWindowClose"'
|
|
---|'"alarmclockwarning3"'
|
|
---|'"UI_AutoQuestComplete"'
|
|
---|'"TSM_CASH_REGISTER"'
|
|
---|'"HumanExploration"'
|
|
---|'"Fishing Reel in"'
|
|
---|'"LevelUp"'
|
|
---|'"MapPing"'
|
|
---|'"MONEYFRAMEOPEN"'
|
|
---|'"IgPlayerInviteAccept"'
|
|
---|'"QUESTADDED"'
|
|
---|'"QUESTCOMPLETED"'
|
|
---|'"UI_QuestObjectivesComplete"'
|
|
---|'"RaidWarning"'
|
|
---|'"ReadyCheck"'
|
|
---|'"UnwrapGift"'
|
|
---@type table<SoundKey,string>
|
|
local SOUNDS = {
|
|
[NO_SOUND_KEY] = "<"..L["No Sound"]..">",
|
|
["AuctionWindowOpen"] = L["Auction Window Open"],
|
|
["AuctionWindowClose"] = L["Auction Window Close"],
|
|
["alarmclockwarning3"] = L["Alarm Clock"],
|
|
["UI_AutoQuestComplete"] = L["Auto Quest Complete"],
|
|
["TSM_CASH_REGISTER"] = L["Cash Register"],
|
|
["HumanExploration"] = L["Exploration"],
|
|
["Fishing Reel in"] = L["Fishing Reel In"],
|
|
["LevelUp"] = L["Level Up"],
|
|
["MapPing"] = L["Map Ping"],
|
|
["MONEYFRAMEOPEN"] = L["Money Frame Open"],
|
|
["IgPlayerInviteAccept"] = L["Player Invite Accept"],
|
|
["QUESTADDED"] = L["Quest Added"],
|
|
["QUESTCOMPLETED"] = L["Quest Completed"],
|
|
["UI_QuestObjectivesComplete"] = L["Quest Objectives Complete"],
|
|
["RaidWarning"] = L["Raid Warning"],
|
|
["ReadyCheck"] = L["Ready Check"],
|
|
["UnwrapGift"] = L["Unwrap Gift"],
|
|
}
|
|
local SOUNDKITIDS = {
|
|
["AuctionWindowOpen"] = 5274,
|
|
["AuctionWindowClose"] = 5275,
|
|
["alarmclockwarning3"] = 12889,
|
|
["UI_AutoQuestComplete"] = 23404,
|
|
["HumanExploration"] = 4140,
|
|
["Fishing Reel in"] = 3407,
|
|
["LevelUp"] = 888,
|
|
["MapPing"] = 3175,
|
|
["MONEYFRAMEOPEN"] = 891,
|
|
["IgPlayerInviteAccept"] = 880,
|
|
["QUESTADDED"] = 618,
|
|
["QUESTCOMPLETED"] = 878,
|
|
["UI_QuestObjectivesComplete"] = 26905,
|
|
["RaidWarning"] = 8959,
|
|
["ReadyCheck"] = 8960,
|
|
["UnwrapGift"] = 64329,
|
|
}
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Module Functions
|
|
-- ============================================================================
|
|
|
|
---Gets the key used to represent no sound.
|
|
---@return SoundKey @The key used to represent no sound
|
|
function Sound.GetNoSoundKey()
|
|
return NO_SOUND_KEY
|
|
end
|
|
|
|
---Iterates over the available sounds.
|
|
---@return fun():SoundKey, string @An iterator with two fields, the sound key and a localized description
|
|
function Sound.Iterator()
|
|
return pairs(SOUNDS)
|
|
end
|
|
|
|
---Plays a sound and flashes the client icon.
|
|
---@param soundKey SoundKey The sound key to play
|
|
function Sound.PlaySound(soundKey)
|
|
if soundKey == NO_SOUND_KEY then
|
|
-- do nothing
|
|
elseif soundKey == "TSM_CASH_REGISTER" then
|
|
PlaySoundFile("Interface\\Addons\\TradeSkillMaster\\Media\\register.mp3", "Master")
|
|
FlashClientIcon()
|
|
else
|
|
PlaySound(SOUNDKITIDS[soundKey], "Master")
|
|
FlashClientIcon()
|
|
end
|
|
end
|
|
|