Script.health=100
Script.levelcomplete=false
Script.coinscollected=0
if TotalCoins==nil then
TotalCoins=0
end
function Script:Start()
self.camera = Camera:Create()
self.startposition = self.entity:GetPosition(true)
self.font = Font:Load("Fonts/Ranchers-Regular.ttf",32)
if self.font==nil then
camera:Move(0,0,-6)
local context = Context:GetCurrent()
self.font = context:GetFont()
end
self:Respawn()
end
function Script:SetLevelComplete(nextmapname)
self.nextmapname=nextmapname
self.levelcomplete=true
self.levelcompletetime=Time:GetCurrent()
end
function Script:TakeDamage(damage)
self.health = self.health - damage
if self.health<=0 then
text= "Nice try"
self:Respawn()
end
end
function Script:CollectCoin()
self.coinscollected=self.coinscollected+1
end
function Script:Respawn()
self.health=100
self.entity:SetPosition(self.startposition)
self.entity:SetRotation(45,0,0)
self.entity:SetVelocity(Vec3(0,0,0))
self.entity:SetOmega(Vec3(0,0,0))
self.gamestarttime = Time:GetCurrent()+2000
end
function Script:UpdateWorld()
self.camera:SetRotation(0,-90,0)
self.camera:SetPosition(self.entity:GetPosition())
self.camera:Move(0,0,-4)
end
function Script:UpdatePhysics()
local window = Window:GetCurrent()
local movex=0
local movey=0
local movez=0
local force=10
local jumpforce=800
if Time:GetCurrent()<self.gamestarttime then
return
end
if self.levelcomplete then
self.entity:SetMass(0)
return
end
if window:KeyDown(Key.A) then
movex = movex - force
end
if window:KeyDown(Key.D) then
movex = movex + force
end
if window:KeyDown(Key.S) then
movez = movez - force
end
if window:KeyDown(Key.W) then
movez = movez + force
end
if window:KeyDown(Key.space) then
movey = movey + jumpforce
end
self.entity:AddForce(movex,movey,movez,true)
end
function Script:Collision(entity, position, normal, speed)
end
function Script:PostRender(context)
local t = Time:GetCurrent()
local timetostart = self.gamestarttime-t
context:SetBlendMode(Blend.Alpha)
context:SetColor(1,0,0,1)
local text
local prevfont = context:GetFont()
prevfont:AddRef()
context:SetFont(self.font)
local fh=self.font:GetHeight()
local timestring
if self.levelcomplete==false then
self.timeelapsed = t - self.gamestarttime
if self.timeelapsed>0 then
local seconds = math.floor(self.timeelapsed/1000)
local minutes = math.floor(seconds / 60)
seconds = seconds - minutes * 60
if seconds<10 then
seconds = "0"..seconds
end
text = minutes..":"..seconds
else
text = "0:00"
end
self.timestring=text
end
if self.levelcomplete then
if t-self.levelcompletetime>3000 then
changemapname=self.nextmapname
end
text="Level Complete good job"
context:DrawText(text,(context:GetWidth()-self.font:GetTextWidth(text))/2,(context:GetHeight()-fh)/2-fh*1.5)
text="Time: "..self.timestring
context:DrawText(text,(context:GetWidth()-self.font:GetTextWidth(text))/2,(context:GetHeight()-fh)/2)
text="Coins: "..self.coinscollected.."/"..TotalCoins
context:DrawText(text,(context:GetWidth()-self.font:GetTextWidth(text))/2,(context:GetHeight()-self.font:GetHeight())/2+fh*1.5)
else
if timetostart>-1000 then
text="Go!"
if timetostart>0 then
text="Get Ready..."
end
context:DrawText(text,(context:GetWidth()-self.font:GetTextWidth(text))/2,(context:GetHeight()-self.font:GetHeight())/2)
else
text="Time: "..self.timestring
context:DrawText(text,context:GetWidth()-self.font:GetTextWidth(text)-8,8)
text="Coins: "..self.coinscollected.."/"..TotalCoins
context:DrawText(text,context:GetWidth()-self.font:GetTextWidth(text)-8,8+fh*1.5)
end
end
context:SetFont(prevfont)
prevfont:Release()
context:SetBlendMode(Blend.Solid)
context:SetColor(1,1,1,1)
end