// SMB3 P-METER FOR RUSHCHARS MARINE
// script + gfx by someone bad
// feel free to modify for anything

local pmeter = CV_RegisterVar({
	name = "showpmeter",
	flags = 0,
	PossibleValue = CV_OnOff,
	defaultvalue = "On",
})

local pmeterlevel = {0,0,0,0,0,0,0}

local function SMB3meter(v, p)
	if (pmeter.value) then
		if not (p.mo) or not (p.mo.valid) then return end
		if (solchars) and (p.mo.skin == "marine") then
			if not (p.marine) then return end
			for i = 1, 7 do
				local frame = 1
				local flags = V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_PERPLAYER|V_HUDTRANS
				if (i == 7) then
					frame = 3
				end
				if (p.marine.run >= 10) or (p.marine.soar > 0) then
					pmeterlevel[1] = 1
				else
					pmeterlevel[1] = 0
				end
				if (p.marine.run >= 20) or (p.marine.soar > 0) then
					pmeterlevel[2] = 1
				else
					pmeterlevel[2] = 0
				end
				if (p.marine.run >= 30) or (p.marine.soar > 0) then
					pmeterlevel[3] = 1
				else
					pmeterlevel[3] = 0
				end
				if (p.marine.run >= 40) or (p.marine.soar > 0) then
					pmeterlevel[4] = 1
				else
					pmeterlevel[4] = 0
				end
				if (p.marine.run >= 50) or (p.marine.soar > 0) then
					pmeterlevel[5] = 1
				else
					pmeterlevel[5] = 0
				end
				if (p.marine.run >= 60) or (p.marine.soar > 0) then
					pmeterlevel[6] = 1
				else
					pmeterlevel[6] = 0
				end
				if (p.marine.run >= 70) or (p.marine.soar > 0) then
					pmeterlevel[7] = 1
				else
					pmeterlevel[7] = 0
				end
				
				if not (i == 7) then
					if (pmeterlevel[i] == 1) then
						frame = 2
					end
				else
					if (pmeterlevel[i] == 1) then
						frame = 4
						if (pmeterlevel[7] == 1) and (leveltime&4) then
							frame = 5
						end
					end
				end
				
				v.draw(3+(i*13), 164, v.cachePatch("PMETER"..frame), flags)
			end
		end
	end
end

hud.add(SMB3meter,"game")