Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

level6.lua 3.0 KiB

3 lat temu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. level6 = Class{}
  2. local levelLoaded = false
  3. local M = {}
  4. function level6.load()
  5. shipsleft = 1
  6. local planetImage = love.graphics.newImage("entities/planet/planet" .. math.random(1, 18) .. ".png")
  7. planetsleft = 3
  8. gameStatus = "setup"
  9. playbutts = {}
  10. thrusterMax = 0
  11. firstShip.fuel = 0
  12. guibutts = {}
  13. VCAM.x, VCAM.y = WINDOW_WIDTH/2, WINDOW_HEIGHT/2
  14. explosions = {}
  15. shipIsHit = false
  16. guimenu = mainMenu()
  17. reachedGoal = false
  18. lvlbase = base(1600, 400)
  19. levelLoaded = true
  20. attackTimer = 5
  21. table.insert(playbutts, menu:addButton("Return to setup", function()
  22. gameStatus = "setup"
  23. levelgeneral.reset()
  24. end ))
  25. table.insert(guibutts, menu:addButton("Release brake!", function ()
  26. if shipsleft == 0 then
  27. selectedItem = "none"
  28. gameStatus = "play"
  29. end
  30. end
  31. ))
  32. table.insert(guibutts, menu:addButton("To menu", function ()
  33. levelgeneral.goBack()
  34. end))
  35. table.insert(cannons, enemy(10000, 400, false, 3))
  36. table.insert(planets, planet(1600, 250, 50, 0.3, asteroidImage, "nodelete"))
  37. table.insert(planets, planet(1600, 550, 50, 0.3, asteroidImage, "nodelete"))
  38. end
  39. function level6.hint()
  40. GUIDraw("left")
  41. love.graphics.setFont(tinyfont)
  42. if (VCAM.x > WINDOW_WIDTH/2) then
  43. if love.keyboard.isDown('a') then
  44. love.graphics.setColor(1,0,0,1)
  45. end
  46. love.graphics.print("←[A]",10,50)
  47. love.graphics.setColor(1,1,1,1)
  48. end
  49. if (VCAM.x < WINDOW_WIDTH*2) then
  50. if love.keyboard.isDown('d') then
  51. love.graphics.setColor(1,0,0,1)
  52. end
  53. love.graphics.print("[D]→",100,50)
  54. love.graphics.setColor(1,1,1,1)
  55. end
  56. end
  57. function level6.reset()
  58. firstShip:reset()
  59. local planetImage = love.graphics.newImage("entities/planet/planet" .. math.random(1, 18) .. ".png")
  60. shipsleft = 1
  61. projectiles = {}
  62. cannons[1].x = 100000
  63. cannons[1].destX = 100000
  64. firstShip.fuel = 0
  65. shipIsHit = false
  66. attackTimer = 5
  67. cannons[1].appeared = false
  68. end
  69. function level6.bonusUpdate(dt)
  70. if not reachedGoal then
  71. if attackTimer >= 0 then
  72. attackTimer = attackTimer - dt
  73. else
  74. cannons[1].destX = 1200
  75. cannons[1]:update(dt)
  76. if not cannons[1].appeared then
  77. sounds["appear"]:stop()
  78. sounds["appear"]:play()
  79. if #explosions == 0 then
  80. table.insert(explosions, explosion(1400, 400, 100, {1,40/255,40/255,1}))
  81. explosions[1].type = 1
  82. end
  83. cannons[1].appeared = true
  84. end
  85. end
  86. for i in ipairs(projectiles) do
  87. projectiles[i]:update(dt)
  88. end
  89. cannons[1].x = cannons[1].x - (math.abs(cannons[1].destX-cannons[1].x)/5)
  90. end
  91. end
  92. function level6.GUIControl()
  93. if (love.keyboard.isDown('a') and VCAM.x > WINDOW_WIDTH/2) then
  94. VCAM.x = VCAM.x - 10
  95. end
  96. if (love.keyboard.isDown('d')) then
  97. VCAM.x = VCAM.x + 10
  98. end
  99. end
  100. function level6.goBack()
  101. levelgeneral.goBack()
  102. end
  103. return level6