48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local iconDisplayDuration = 3
 | |
| 
 | |
| ---@alias CItemInfo {name: string, icon: number, quantity: number, color: string}
 | |
| 
 | |
| ---@param msg string
 | |
| ---@return CItemInfo, string | nil
 | |
| GetItemInfo = function(msg)
 | |
|     local itemInfo = {name = "", icon = 134400, quantity = 0, color = ""}
 | |
|     local name = msg:match("h%[(.+)%]")
 | |
|     if not name then return itemInfo, "No item name found" end
 | |
|     local quantity = msg:match("x(%d+)") or 1
 | |
|     itemInfo.name = name
 | |
|     itemInfo.quantity = quantity
 | |
| 
 | |
|     if WeakAurasSaved.Cyka.ItemCache[name] then
 | |
|         itemInfo.icon = WeakAurasSaved.Cyka.ItemCache[name].icon
 | |
|     end
 | |
|     local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff"
 | |
|     itemInfo.color = color
 | |
| 
 | |
|     return itemInfo, nil
 | |
| end
 | |
| 
 | |
| ---@param msg string
 | |
| ---@param allstates allstates
 | |
| DrawIcon = function(msg, allstates)
 | |
|     local info, err = GetItemInfo(msg)
 | |
|     if err then
 | |
|         print(err)
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity
 | |
|     allstates[#aura_env.allstates + 1] = {
 | |
|         show = true,
 | |
|         changed = true,
 | |
|         index = GetTime(),
 | |
|         resort = true,
 | |
| 
 | |
|         icon = info.icon,
 | |
|         name = formattedName,
 | |
| 
 | |
|         progressType = "timed",
 | |
|         expirationTime = GetTime() + iconDisplayDuration,
 | |
|         duration = iconDisplayDuration,
 | |
|         autoHide = true,
 | |
|     }
 | |
| end |