|  |  | @@ -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 | 
		
	
		
			
			|  |  |  | 
 |