level7 = Class{} local levelLoaded = false local M = {} function level7.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(1400, 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" end end )) table.insert(guibutts, menu:addButton("To menu", function () levelgeneral.goBack() end)) table.insert(cannons, enemy(10000, 100, false, 3, 5)) table.insert(cannons, enemy(10000, 700, false, 3, 4)) table.insert(planets, planet(1000, -100, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 0, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 100, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 200, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 300, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 400, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 500, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 600, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 700, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 800, 50, 0.3, asteroidImage, "nodelete")) end function level7.hint() GUIDraw("left") love.graphics.setFont(tinyfont) if (VCAM.x > WINDOW_WIDTH/2) 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 level7.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 table.insert(planets, planet(1000, -100, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 0, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 100, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 200, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 300, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 400, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 500, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 600, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 700, 50, 0.3, asteroidImage, "nodelete")) table.insert(planets, planet(1000, 800, 50, 0.3, asteroidImage, "nodelete")) local planetImage = love.graphics.newImage("entities/planet/planet" .. math.random(1, 18) .. ".png") shipsleft = 1 projectiles = {} for i in ipairs(cannons) do cannons[i].x = 100000 cannons[i].destX = 100000 cannons[i].appeared = false end cannons[1].appeartimer = 5 cannons[2].appeartimer = 4 firstShip.fuel = 75 shipIsHit = false attackTimer = 5 end function level7.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 = 1200 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 level7.GUIControl() if (love.keyboard.isDown('a') and VCAM.x > WINDOW_WIDTH/2) then VCAM.x = VCAM.x - 10 end if (love.keyboard.isDown('d')) then VCAM.x = VCAM.x + 10 end end function level7.goBack() levelgeneral.goBack() end return level7