-
Notifications
You must be signed in to change notification settings - Fork 2
/
TestMode.lua
130 lines (113 loc) · 3.37 KB
/
TestMode.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
TestMode = {}
local logger
local function idExistsInTable(id, table)
for _, item in pairs(table) do
if item.id == id then
return true
end
end
return false
end
-- Initial test items with color variables
local testItemIds = { 50818, 2589, 2592, 1515, 730, 19019, 128507, 132842, 23538, 11754, 128827, 219325 }
local testItems = {}
local function initializeTestItems()
for _, id in pairs(testItemIds) do
if not idExistsInTable(id, testItems) then
local _, link = C_Item.GetItemInfo(id)
local icon = C_Item.GetItemIconByID(id)
if link and icon then
table.insert(testItems, {
id = id,
link = link,
icon = icon,
})
end
end
end
end
local testCurrencyIds = { 2245, 1191, 1828, 1792, 1755, 1580, 1273, 1166, 515, 241, 1813, 2778, 3089, 1101, 1704 }
local testCurrencies = {}
local function initializeTestCurrencies()
for _, id in pairs(testCurrencyIds) do
if not idExistsInTable(id, testCurrencies) then
local info = C_CurrencyInfo.GetCurrencyInfo(id)
local link = C_CurrencyInfo.GetCurrencyLink(id)
if info and link and info.currencyID and info.iconFileID then
table.insert(testCurrencies, {
id = info.currencyID,
link = link,
icon = info.iconFileID,
})
end
end
end
end
local testFactions = {
"Undercity",
"Thunder Bluff",
"Orgrimmar",
}
local function generateRandomLoot()
if #testItems ~= #testItemIds then
initializeTestItems()
end
if #testCurrencies ~= #testCurrencyIds then
initializeTestCurrencies()
end
-- Randomly decide whether to generate an item or currency
local numberOfRowsToGenerate = math.random(1, 5)
for i = 1, numberOfRowsToGenerate do
local rng = math.random()
if rng >= 0.8 then
local experienceGained = math.random(100, 10000)
G_RLF.LootDisplay:ShowLoot("Experience", experienceGained)
end
if rng <= 0.2 then
local copper = math.random(1, 100000000)
G_RLF.LootDisplay:ShowLoot("Money", copper)
end
-- 50% chance to show items
if rng > 0.2 and rng <= 0.7 then
local item = testItems[math.random(#testItems)]
local amountLooted = math.random(1, 5)
G_RLF.LootDisplay:ShowLoot("ItemLoot", item.id, item.link, item.icon, amountLooted)
-- 15% chance to show currency
elseif rng > 0.7 and rng <= 0.85 then
local currency = testCurrencies[math.random(#testCurrencies)]
local amountLooted = math.random(1, 500)
G_RLF.LootDisplay:ShowLoot("Currency", currency.id, currency.link, currency.icon, amountLooted)
-- 10% chance to show reputation (least frequent)
elseif rng > 0.85 then
local reputationGained = math.random(10, 100)
local factionName = testFactions[math.random(#testFactions)]
G_RLF.LootDisplay:ShowLoot("Reputation", reputationGained, factionName)
end
end
end
function TestMode:ToggleTestMode()
if not logger then
logger = G_RLF.RLF:GetModule("Logger")
end
if self.testMode then
-- Stop test mode
self.testMode = false
if self.testTimer then
self.testTimer:Cancel()
self.testTimer = nil
end
G_RLF:Print(G_RLF.L["Test Mode Disabled"])
logger:Debug("Test Mode Disabled", G_RLF.addonName)
else
-- Start test mode
self.testMode = true
G_RLF:Print(G_RLF.L["Test Mode Enabled"])
logger:Debug("Test Mode Enabled", G_RLF.addonName)
self.testTimer = C_Timer.NewTicker(1.5, function()
G_RLF:fn(generateRandomLoot)
end)
end
end
G_RLF:fn(initializeTestItems)
G_RLF:fn(initializeTestCurrencies)
G_RLF.TestMode = TestMode