|
@@ -0,0 +1,130 @@ |
|
|
|
|
|
level8 = Class{} |
|
|
|
|
|
local levelLoaded = false |
|
|
|
|
|
local M = {} |
|
|
|
|
|
|
|
|
|
|
|
function level8.load() |
|
|
|
|
|
shipsleft = 1 |
|
|
|
|
|
local planetImage = love.graphics.newImage("entities/planet/planet" .. math.random(1, 18) .. ".png") |
|
|
|
|
|
planetsleft = 3 |
|
|
|
|
|
gameStatus = "setup" |
|
|
|
|
|
playbutts = {} |
|
|
|
|
|
thrusterMax = 75 |
|
|
|
|
|
firstShip.fuel = 75 |
|
|
|
|
|
guibutts = {} |
|
|
|
|
|
VCAM.x, VCAM.y = WINDOW_WIDTH/2, WINDOW_HEIGHT/2 |
|
|
|
|
|
explosions = {} |
|
|
|
|
|
shipIsHit = false |
|
|
|
|
|
guimenu = mainMenu() |
|
|
|
|
|
cameraControl = true |
|
|
|
|
|
reachedGoal = false |
|
|
|
|
|
lvlbase = base(-100, WINDOW_HEIGHT/2) |
|
|
|
|
|
levelLoaded = true |
|
|
|
|
|
attackTimer = 5 |
|
|
|
|
|
table.insert(playbutts, menu:addButton("Return to setup", function() |
|
|
|
|
|
gameStatus = "setup" |
|
|
|
|
|
levelgeneral.reset() |
|
|
|
|
|
end )) |
|
|
|
|
|
table.insert(guibutts, menu:addButton("Release brake!", function () |
|
|
|
|
|
if shipsleft == 0 then |
|
|
|
|
|
selectedItem = "none" |
|
|
|
|
|
gameStatus = "play" |
|
|
|
|
|
table.insert(cannons, enemy(10000, firstShip.y+200, false, 3, 0.1,firstShip.x+200)) |
|
|
|
|
|
table.insert(cannons, enemy(10000, firstShip.y+200, false, 3, 0.4,firstShip.x-200)) |
|
|
|
|
|
table.insert(cannons, enemy(10000, firstShip.y-200, false, 3, 0.8,firstShip.x-200)) |
|
|
|
|
|
table.insert(cannons, enemy(10000, firstShip.y-200, false, 3, 1, firstShip.x+200)) |
|
|
|
|
|
table.insert(cannons, enemy(10000, firstShip.y, false, 3, 2, firstShip.x+600)) |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
)) |
|
|
|
|
|
table.insert(guibutts, menu:addButton("To menu", function () |
|
|
|
|
|
levelgeneral.goBack() |
|
|
|
|
|
end)) |
|
|
|
|
|
|
|
|
|
|
|
--table.insert(planets, planet(1000, -100, 50, 0.3, asteroidImage, "nodelete")) |
|
|
|
|
|
|
|
|
|
|
|
end |
|
|
|
|
|
function level8.hint() |
|
|
|
|
|
GUIDraw("left") |
|
|
|
|
|
love.graphics.setFont(tinyfont) |
|
|
|
|
|
if (VCAM.x > -WINDOW_WIDTH/3) then |
|
|
|
|
|
if love.keyboard.isDown('a') then |
|
|
|
|
|
love.graphics.setColor(1,0,0,1) |
|
|
|
|
|
end |
|
|
|
|
|
love.graphics.print("←[A]",10,50) |
|
|
|
|
|
end |
|
|
|
|
|
love.graphics.setColor(1,1,1,1) |
|
|
|
|
|
if (VCAM.x < WINDOW_WIDTH*2) then |
|
|
|
|
|
if love.keyboard.isDown('d') then |
|
|
|
|
|
love.graphics.setColor(1,0,0,1) |
|
|
|
|
|
end |
|
|
|
|
|
love.graphics.print("[D]→",100,50) |
|
|
|
|
|
|
|
|
|
|
|
end |
|
|
|
|
|
love.graphics.setColor(1,1,1,1) |
|
|
|
|
|
end |
|
|
|
|
|
function level8.reset() |
|
|
|
|
|
firstShip:reset() |
|
|
|
|
|
camera.scale = 1 |
|
|
|
|
|
for i in ipairs(planets) do |
|
|
|
|
|
if not planets[i].deletable then |
|
|
|
|
|
table.remove(planets, i) |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
for i in ipairs(cannons) do |
|
|
|
|
|
cannons[i].timer = cannons[i].otimer |
|
|
|
|
|
end |
|
|
|
|
|
local planetImage = love.graphics.newImage("entities/planet/planet" .. math.random(1, 18) .. ".png") |
|
|
|
|
|
shipsleft = 1 |
|
|
|
|
|
projectiles = {} |
|
|
|
|
|
cannons = {} |
|
|
|
|
|
firstShip.fuel = 75 |
|
|
|
|
|
shipIsHit = false |
|
|
|
|
|
attackTimer = 5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end |
|
|
|
|
|
function level8.bonusUpdate(dt) |
|
|
|
|
|
if not reachedGoal then |
|
|
|
|
|
for i in ipairs(cannons) do |
|
|
|
|
|
cannons[i]:time(dt) |
|
|
|
|
|
cannons[i].x = cannons[i].x - (math.abs(cannons[i].destX-cannons[i].x)/5) |
|
|
|
|
|
if cannons[i].appeartimer <= 0 then |
|
|
|
|
|
cannons[i].destX = cannons[i].actualdest |
|
|
|
|
|
cannons[i]:update(dt) |
|
|
|
|
|
if not cannons[i].appeared then |
|
|
|
|
|
sounds["appear"]:stop() |
|
|
|
|
|
sounds["appear"]:play() |
|
|
|
|
|
local coolx, cooly = camera:toWorldCoords(1280, 720) |
|
|
|
|
|
table.insert(explosions, explosion(coolx, cannons[i].y, 100, {1,1,1,1}, 1)) |
|
|
|
|
|
cannons[i].appeared = true |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
for i in ipairs(projectiles) do |
|
|
|
|
|
projectiles[i]:update(dt) |
|
|
|
|
|
end |
|
|
|
|
|
for i in ipairs(projectiles) do |
|
|
|
|
|
if projectiles[i].killed then |
|
|
|
|
|
table.remove(projectiles, i) |
|
|
|
|
|
--print("killing") |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
function level8.GUIControl() |
|
|
|
|
|
|
|
|
|
|
|
if (love.keyboard.isDown('a') and VCAM.x > -WINDOW_WIDTH/3) then |
|
|
|
|
|
VCAM.x = VCAM.x - 10 |
|
|
|
|
|
end |
|
|
|
|
|
if (love.keyboard.isDown('d') and VCAM.x < WINDOW_WIDTH*2) then |
|
|
|
|
|
VCAM.x = VCAM.x + 10 |
|
|
|
|
|
end |
|
|
|
|
|
end |
|
|
|
|
|
function level8.goBack() |
|
|
|
|
|
levelgeneral.goBack() |
|
|
|
|
|
end |
|
|
|
|
|
return level8 |
|
|
|
|
|
|