hudupgrades.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. local tween = require 'lib/deps/tween/tween'
  2. HudUpgrades = class()
  3. function HudUpgrades:init()
  4. self.active = false
  5. self.lastPress = 0
  6. self.time = 0
  7. self.prevTime = self.time
  8. self.maxTime = .45
  9. self.factor = {value = 0}
  10. self.tween = tween.new(self.maxTime, self.factor, {value = 1}, 'inOutBack')
  11. end
  12. function HudUpgrades:update()
  13. self.prevTime = self.time
  14. local p = ctx.player
  15. if not p:atShrine() or p.dead then self.active = false end
  16. if self.active then self.time = math.min(self.time + ls.tickrate, self.maxTime)
  17. else self.time = math.max(self.time - ls.tickrate, 0) end
  18. end
  19. function HudUpgrades:keypressed(key)
  20. if not ctx.tutorial:shouldAllowUpgradeToggling() then return end
  21. if key == 'tab' or key == 'e' then
  22. self.lastPress = tick
  23. self.active = not self.active
  24. if not ctx.player:atShrine() then self.active = false end
  25. end
  26. end
  27. function HudUpgrades:keyreleased(key)
  28. if not ctx.tutorial:shouldAllowUpgradeToggling() then return end
  29. if key == 'tab' or key == 'e' or key == 'escape' then
  30. if (tick - self.lastPress) * ls.tickrate > self.maxTime then
  31. self.active = false
  32. end
  33. end
  34. end
  35. function HudUpgrades:gamepadpressed(gamepad, button)
  36. if button == 'x' then
  37. self:keypressed('tab')
  38. end
  39. end
  40. function HudUpgrades:gamepadreleased(gamepad, button)
  41. if button == 'x' then
  42. self:keyreleased('tab')
  43. end
  44. end
  45. function HudUpgrades:getFactor()
  46. local t = math.lerp(self.prevTime, self.time, ls.accum / ls.tickrate)
  47. self.tween:set(t)
  48. return self.factor.value, t
  49. end