WoWInterface SVN Dashboard

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 5 to Rev 6
    Reverse comparison

Rev 5 → Rev 6

Dashboard.lua
14,6 → 14,7
frame.needle = frame:CreateTexture(nil, "ARTWORK")
frame.needle:SetAllPoints(true)
frame.needle:SetTexture("Interface\\AddOns\\Dashboard\\Needle")
frame.needle.timer = CreateFrame("Frame", nil, frame)
 
frame:RegisterForDrag("LeftButton")
frame:SetMovable(true)
111,13 → 112,12
if idx == 1 then
digit:SetTexCoord(getcoords(num, frac))
elseif roll then
-- The last digit is rolling over now, so let's see if we need to
-- digit.current is the number we're currently displaying
local new = tostring(count + 1):sub(index+1, index+1)
if new ~= digit.current then
digit:SetTexCoord(getcoords(num, frac))
-- The digit before us is rolling over
digit:SetTexCoord(getcoords(num, frac))
if num == 9 then
roll = true
else
digit:SetTexCoord(getcoords(num))
roll = false
end
else
digit:SetTexCoord(getcoords(num))
146,6 → 146,59
texture:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
end
 
local needle = DashboardFrame.needle
local function SetNeedle(speed)
if needle.eval == speed then
return
end
 
local dir = true
if needle.sval and needle.eval then
dir = needle.sval < needle.eval
end
 
needle.sval = needle.current or 0
needle.eval = speed
 
-- Only reset the timer if we're changing direction
if dir ~= (needle.sval < needle.eval) then
needle.elapsed = 0
end
needle.anim = true
end
 
local cos = math.cos
local pi = math.pi
local function cosineInterpolation(y1, y2, mu)
return y1+(y2-y1)*(1 - cos(pi*mu))/2
end
 
local function Needle_OnUpdate(self, elapsed)
if not needle.anim then
return
end
 
needle.elapsed = needle.elapsed + elapsed
 
local perc = needle.elapsed / 1.0
if perc > 1 then perc = 1 end
 
if needle.eval > needle.sval then
local current = cosineInterpolation(needle.sval, needle.eval, perc)
local angle = (current / 30) * -270
RotateTexture(needle, angle)
needle.current = current
else
-- Decelerating
local current = needle.sval - ((needle.sval - needle.eval) * perc)
local angle = (current / 30) * -270
RotateTexture(needle, angle)
needle.current = current
end
end
 
DashboardFrame.needle.timer:SetScript("OnUpdate", Needle_OnUpdate)
 
local base
local counter = 0
local function OnUpdate(self, elapsed)
167,12 → 220,9
setdials(distance)
 
local speed = dist / elapsed
-- 0 is 0 rotation, 50 is 360 rotation
local angle = (speed / 30) * -270
--ChatFrame1:AddMessage(speed .. " : " ..angle)
 
RotateTexture(DashboardFrame.needle, angle)
 
SetNeedle(speed)
--ChatFrame1:AddMessage(distance .. " : " .. (dist / elapsed))
end