--[[---------------------------------------------------------------------------- |
Copyright (c) 2007, Tom Wieland |
All rights reserved. |
|
Redistribution and use in source and binary forms, with or without |
modification, are permitted provided that the following conditions are met: |
|
* Redistributions of source code must retain the above copyright notice, |
this list of conditions and the following disclaimer. |
* Redistributions in binary form must reproduce the above copyright notice, |
this list of conditions and the following disclaimer in the documentation |
and/or other materials provided with the distribution. |
* Neither the name of idExperience nor the names of its contributors may be |
used to endorse or promote products derived from this software without |
specific prior written permission. |
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGE. |
------------------------------------------------------------------------------]] |
|
local lib = LibStub('idLibrary-1.1') |
|
local TL, TC, TR = 'TOPLEFT', 'TOP', 'TOPRIGHT' |
local ML, MC, MR = 'LEFT', 'CENTER', 'RIGHT' |
local BL, BC, BR = 'BOTTOMLEFT', 'BOTTOM', 'BOTTOMRIGHT' |
|
local ExperienceLeft |
local ExperienceGain |
local RepetitionsNeeded |
local ExperienceRested |
|
local function getExperienceLeft() |
return UnitXPMax('player') - UnitXP('player') |
end |
|
local function print() |
local rested = GetXPExhaustion() |
if rested then |
UIErrorsFrame:AddMessage(('%s / %s = %s (%s %s%%)'):format(ExperienceLeft, ExperienceGain, RepetitionsNeeded, rested, math.floor(rested*100/ExperienceLeft))) |
else |
UIErrorsFrame:AddMessage(ExperienceLeft..' / '..ExperienceGain..' = '..RepetitionsNeeded) |
end |
end |
|
local function PLAYER_XP_UPGRADE () |
ExperienceGain = ExperienceLeft - getExperienceLeft() |
ExperienceLeft = getExperienceLeft() |
RepetitionsNeeded = math.ceil(ExperienceLeft / ExperienceGain) |
print() |
end |
|
local function PLAYER_LEVEL_UP () |
ExperienceLeft = getExperienceLeft() |
ExperienceGain = 0 |
RepetitionsNeeded = 0 |
end |
|
local function initialize(name) |
if name ~= 'idExperience' then return end |
ExperienceLeft = getExperienceLeft() |
ExperienceGain = 0 |
RepetitionsNeeded = 0 |
end |
|
local function enable() |
SlashCmdList['ZEXPERIENCE_PRINTXP'] = print |
SLASH_ZEXPERIENCE_PRINTXP1 = '/xp' |
end |
|
|
lib:RegisterEvent('idExperience-Initialize', 'ADDON_LOADED', initialize) |
lib:RegisterEvent('idExperience-Enable', 'PLAYER_LOGIN', enable) |
lib:RegisterEvent('idExperience', 'PLAYER_XP_UPDATE', PLAYER_XP_UPDATE) |
lib:RegisterEvent('idExperience', 'PLAYER_LEVEL_UP', PLAYER_LEVEL_UP) |