All pastes #176973 Raw Edit

fridgid

public text v1 · immutable
#176973 ·published 2006-09-20 02:04 UTC
rendered paste body
This is the mana bar build function, the fill things are at the bottom

function DUF_ManaBar_Update()
	if ((not this.mana) or (not this.manamax) or this.manamax == 0) then
		if (DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].hideifnomana and (not DUF_OPTIONS_VISIBLE)) then
			getglobal(this:GetName().."_ManaBar"):Hide();
			return;
		else
			if ((not DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].hide) and (not DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].mouseover)) then
				getglobal(this:GetName().."_ManaBar"):Show();
			else
				return;
			end
			if (DUF_OPTIONS_VISIBLE) then
				this.mana = 100;
				this.manamax = 100;
				this.lastmana = 100;
			else
				this.mana = 0;
				this.manamax = 0;
				this.lastmana = 0;
			end
		end
	elseif ((not DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].hide) and (not DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].mouseover)) then
		getglobal(this:GetName().."_ManaBar"):Show();
	end
	if (not this.mana) then this.mana = 0 end
	local value = this.mana / this.manamax * 100;
	local value2 = 0;
	if (DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].fade and this.lastmana < this.manamax) then
		value2 = this.lastmana / this.manamax * 100;
	end
	if (this.manamax == 0) then
		value = 0;
		value2 = 0;
	end
	if (this.lastmana > this.mana and value2 > 0) then
		this.lastmanaalpha = 1;
	end
	this.lastmana = this.mana;

	local width = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].width;
	if (DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].resizemax and this.lastmanamax ~= this.manamax) then
		this.lastmanamax = this.manamax;
		local percent = this.manamax / UnitManaMax("player");
		width = width * percent;
		local padding = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].bgpadding * 2;
		getglobal(this:GetName().."_ManaBar").dynamicsize = percent;
		getglobal(this:GetName().."_ManaBar_Background"):SetWidth(width + padding);
	end
	if (DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[this.unit].index].StatusBar[2].fill) then
		DUF_StatusBar_SetValue(getglobal(this:GetName().."_ManaBar_Bar"), 100 - value, 1, width);
		DUF_StatusBar_SetValue(getglobal(this:GetName().."_ManaBar_Bar2"), 0, 1, width);
	else
		DUF_StatusBar_SetValue(getglobal(this:GetName().."_ManaBar_Bar"), value, 1, width);
		DUF_StatusBar_SetValue(getglobal(this:GetName().."_ManaBar_Bar2"), value2, 1, width);
	end
end

X
X
X
X
X
X
X
X
X

And this is the statusbar setvalue function.

function DUF_StatusBar_SetValue(bar, value)
	if (value == 0) then value = .01; end
	value = value / 100;
	if (value > 1) then value = 1; end

	if (bar.direction < 3) then
		bar:SetWidth(bar.length * value);
	else
		bar:SetHeight(bar.length * value);
	end

	if (bar.direction == 1) then
		bar:SetTexCoord(0, value, 0, 1);
	elseif (bar.direction == 2) then
		bar:SetTexCoord(value, 0, 0, 1);
	elseif (bar.direction == 3) then
		bar:SetTexCoord(0, 1, value, 0);
	elseif (bar.direction == 4) then
		bar:SetTexCoord(0, 1, 0, value);
	end
end