Script - Example HUD

Partial HUD created with scripting

Creates new HUD or rather an example of scripted HUD. (Original source by WMCoolmon)

Table Entry

Scripting.tbl

```#Global Hooks
\$GameInit:  [[init.lua]]
\$HUD:    [[hud.lua]]
+Override: true
#End```

init.lua

```--#################### HUD ####################--
drawBevRect = function(x1, y1, x2, y2)
-------Draw background
gr.setColor(0, 0, 48)
for x=1,5 do
--"/ \"
gr.drawLine(x1+(5-x), y1+x, x2-(5-x), y1+x)
--"\ /"
gr.drawLine(x1+(5-x), y2-x, x2-(5-x), y2-x)
end
-- "| |"
gr.drawRectangle(x1+1, y1+5, x2, y2-6, true)

-------Draw lines
gr.setColor(0, 128, 255)
--" - "
gr.drawLine(x1+5, y1, x2-6, y1)
--"/ \"
gr.drawLine(x1, y1+5, x1+5, y1)
gr.drawLine(x2, y1+5, x2-5, y1)
--"| |"
gr.drawLine(x1, y1+5, x1, y2-5)
gr.drawLine(x2, y1+5, x2, y2-5)
--"\ /"
gr.drawLine(x1, y2-5, x1+5, y2)
gr.drawLine(x2, y2-5, x2-5, y2)
--" - "
gr.drawLine(x1+5, y2, x2-6, y2)
end

setDamageColor = function(dcm)
local r
local g
local b
if dcm > .5 then
r = 255 * math.sin(dcm*math.pi)
g = 128+128 * math.sin(dcm*math.pi)
b = -255 * math.cos(2*dcm*math.pi)
else
r = 255
g = 255 * math.sin(dcm*math.pi)
b = 0
end

gr.setColor(r, g, b)
end```

hud.lua

```if slf then
-------Draw speed
x = 50
y = 50

drawBevRect(x, y, x+100, y+30)

local vel = slf.Orientation:rotateVector(slf.Velocity)
local mvel = slf.MaxVelocity

--Skip beveled area
x = x+5
y = y+5

--Draw X component
local speed = (vel.x/mvel.x)*10
gr.drawRectangle(x, y+5, x+20, y+15, false)
gr.drawRectangle(x+10, y+5, x+10+speed, y+15)

--Skip last gauge(20 px)
x = x+20+5

--Draw Y component
local speed = (vel.y/mvel.y)*10
gr.drawRectangle(x, y, x+10, y+20, false)
gr.drawRectangle(x, y+15, x+10, y+15+speed)

--Skip last gauge(10 px)
x=x+10+5

--Draw Z component
local speed = (vel.z/mvel.z)*50
gr.drawRectangle(x, y+5, x+50, y+15, false)
gr.drawRectangle(x, y+5, x+speed, y+15)

-------Draw life
x = 25
y = 200

drawBevRect(x, y, x+20, y+110)

x = x+5
y = y+5

dcm = slf.HitpointsLeft/slf.HitpointsMax

--Draw bar
gr.drawRectangle(x, y, x+10, y+100, false)
setDamageColor(dcm)
gr.drawRectangle(x, y+(1-dcm)*100, x+10, y+100)

-------Draw mission time
x = gr.getScreenWidth()-125
y = 200

drawBevRect(x, y, x+100, y+20)

x = x+5
y = y+5

gr.drawString("Flight time: ", x, y)

-------Draw gun ammo
x = 25
y = gr.getScreenHeight()-45

local pbank = slf.PrimaryBanks[1]

if pbank then
local ammo = pbank.AmmoLeft/pbank.AmmoMax*70

drawBevRect(x, y, x+120, y+20)

--Skip beveled area
x = x+5
y = y+5

--Draw bar
gr.drawRectangle(x, y, x+70, y+10, false)
gr.drawRectangle(x, y, x+ammo, y+10)

--Skip bar(70px)
x = x+70+5

--Draw number
gr.drawString(pbank.AmmoLeft, x, y)
end

-------Draw missile ammo
x = gr.getScreenWidth()-190
y = gr.getScreenHeight()-45

local sbank = slf.SecondaryBanks[1]

if sbank then
local sb_left = sbank.AmmoLeft
local sb_max = sbank.AmmoMax

drawBevRect(x, y, x+165, y+20)

x = x+5
y = y+5

for i = 1,16 do
if i > sb_max then
break
elseif i > sb_left then
gr.drawRectangle(x, y, x+5, y+10, false)
else
gr.drawRectangle(x, y, x+5, y+10)
end

x = x+10
end
end

-------Draw countermeasures
x = (gr.getScreenWidth()/2)-(105/2)
y = gr.getScreenHeight()-40

local cm_max = slf.Class.CountermeasuresMax

if cm_max then
local cm_left = slf.CountermeasuresLeft
drawBevRect(x, y, x+105, y+15)

x = x+5
y = y+5

for i = 1,10 do
if i > cm_max then
break
elseif i > cm_left then
--"-"
gr.drawLine(x+2, y+2, x+3, y+2)
--"|"
gr.drawLine(x+2, y+2, x+2, y+3)
else
--"-"
gr.drawLine(x, y+2, x+5, y+2)
--"|"
gr.drawLine(x+2, y, x+2, y+5)
--"\"
gr.drawLine(x, y, x+5, y+5)
--"/"
gr.drawLine(x, y+5, x+5, y)
end

x = x+10
end
end

--/slf
end```