diff --git a/entities/enemy/enemy.lua b/entities/enemy/enemy.lua index be153ab..21a61fb 100644 --- a/entities/enemy/enemy.lua +++ b/entities/enemy/enemy.lua @@ -2,7 +2,7 @@ enemy = Class{} G = 6.67e-5 -function enemy:init(x, y, del, tm, atm) +function enemy:init(x, y, del, tm, atm, adst) self.x = x self.y = y self.image = love.graphics.newImage("entities/enemy/enemy.png") @@ -19,6 +19,7 @@ self.otimer = tm self.timer = tm self.color = {1,1,1,1} self.appeared = false +self.actualdest = adst self.appeartimer = atm end diff --git a/levels/level8.lua b/levels/level8.lua new file mode 100644 index 0000000..7be7f31 --- /dev/null +++ b/levels/level8.lua @@ -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 + diff --git a/levels/selectlv.lua b/levels/selectlv.lua index d6d7142..a7fa79a 100644 --- a/levels/selectlv.lua +++ b/levels/selectlv.lua @@ -54,6 +54,14 @@ table.insert(levels, menu:addButton("Level 2", function () currentLevel = 7 end end )) + table.insert(levels, menu:addButton("Level 8", function () + if saveData.levelsBeaten > 6 then + menuLoaded = false + objReset() + gameState = "levelgeneral" + currentLevel = 8 + end + end )) table.insert(levels, menu:addButton("Go Back", function ()