redesign music and drone selection

This commit is contained in:
2024-06-12 01:22:12 +03:00
parent 43512c90c7
commit 025880c358
21 changed files with 198 additions and 15 deletions

View File

@@ -8,6 +8,9 @@ local fontMed = Graphics.font.new('assets/fonts/onyx_9')
local allButtons = { "A", "B", "DOWN", "LEFT", "RIGHT", "UP" }
function scene:popCode(button)
if #scene.code == 0 then
return
end
scene.menuConfirmSound:stop()
if scene.tickTimer.paused then
scene.droneParts = scene:loadDrone(1, #scene.code)
@@ -35,7 +38,14 @@ function scene:popCode(button)
end
scene.inputHandler = {
AButtonDown = function() scene:popCode("A") end,
AButtonDown = function()
if #scene.code == 0 then
scene.menuConfirmSound:play(1)
Noble.transition(Game, nil, Noble.Transition.SpotlightMask)
else
scene:popCode("A")
end
end,
BButtonDown = function() scene:popCode("B") end,
downButtonDown = function() scene:popCode("DOWN") end,
leftButtonDown = function() scene:popCode("LEFT") end,
@@ -95,6 +105,11 @@ function scene:setValues()
scene.menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm")
self.aKey = Graphics.image.new("assets/sprites/buttons/A")
scene.musicEnabled = Noble.Settings.get("music")
scene.levelAudio = playdate.sound.fileplayer.new("assets/audio/assemble")
scene.levelAudio:setVolume(0.7)
end
function scene:init()
@@ -120,11 +135,19 @@ function scene:start()
scene.super.start(self)
self.optionsMenu:addMenuItem("Main Menu", function() Noble.transition(Menu) end)
Noble.showFPS = true
Noble.showFPS = false
end
function scene:enter()
scene.super.enter(self)
scene.buttonTimeout = 100
Noble.Input.setHandler(scene.inputHandler)
if scene.musicEnabled then
scene.levelAudio:play(0)
end
end
function round(number)
@@ -155,13 +178,6 @@ function scene:update()
yEnd = 100,
invert = false
})
scene.inputHandler = {
AButtonDown = function()
Noble.transition(Game, nil, Noble.Transition.SpotlightMask)
scene.menuConfirmSound:play(1)
end
}
Noble.Input.setHandler(scene.inputHandler)
self.aKey:draw(200, 170 + dy)
Noble.Text.draw("Start Mission", 218, 175, Noble.Text.ALIGN_LEFT, false, fontMed)
self.progressBar:remove()
@@ -210,7 +226,7 @@ end
function scene:exit()
scene.super.exit(self)
scene.levelAudio:stop()
Noble.showFPS = false
end

View File

@@ -0,0 +1,115 @@
DroneCardSelector = {}
class("DroneCardSelector").extends(BaseScene)
local scene = DroneCardSelector
local fontMed = Graphics.font.new('assets/fonts/onyx_9')
local elapsedTime = 0
scene.inputHandler = {
AButtonDown = function()
scene.menuConfirmSound:play(1)
Noble.transition(Assemble)
end,
BButtonDown = function() end,
downButtonDown = function()
end,
leftButtonDown = function()
if scene.menuIndex <= 1 then
return
end
scene.menuSelSound:play(1)
scene.targetX = scene.targetX + 355
scene.menuIndex = scene.menuIndex - 1
scene.paginator:set(scene.menuIndex)
end,
rightButtonDown = function()
if scene.menuIndex >= 4 then
return
end
scene.menuSelSound:play(1)
scene.targetX = scene.targetX - 355
scene.menuIndex = scene.menuIndex + 1
scene.paginator:set(scene.menuIndex)
end,
upButtonDown = function()
end,
}
function scene:setValues()
self.menuIndex = 1
self.aKey = Graphics.image.new("assets/sprites/buttons/A")
scene.menuConfirmSound = playdate.sound.fileplayer.new("assets/audio/confirm")
scene.menuSelSound = playdate.sound.fileplayer.new("assets/audio/menu_select")
scene.menuSelSound:setVolume(0.5)
scene.currentX = 0
scene.targetX = 0
end
function scene:init()
scene.super.init(self)
scene:setValues()
end
function scene:start()
scene.super.start(self)
self.optionsMenu:addMenuItem("Main Menu", function() Noble.transition(Menu) end)
Noble.showFPS = false
end
function scene:enter()
scene.super.enter(self)
scene.cards = {
DroneCard(0, 0, Drones[1]),
DroneCard(0, 0, Drones[2]),
DroneCard(0, 0, Drones[3]),
DroneCard(0, 0, Drones[4]),
}
scene.paginator = PageSprite(200, 207)
end
function scene:update()
scene.super.update(self)
if scene.cards == nil then
print("scene.cards is nil")
return
end
elapsedTime = elapsedTime + 1 / playdate.display.getRefreshRate()
local dy = 2 * math.sin(20 * elapsedTime)
local speed = 40
if math.abs(scene.targetX - scene.currentX) < speed then
scene.currentX = scene.targetX
else
scene.currentX = scene.currentX + speed * ((scene.targetX > scene.currentX) and 1 or -1)
end
local x = 0
for i = 1, 4 do
x = 29 + (339 + 16) * (i - 1)
scene.cards[i]:moveTo(x + scene.currentX, 25)
end
if Drones[scene.menuIndex].locked == false then
self.aKey:draw(315, 207 + dy)
Noble.Text.draw("Assemble", 333, 210, Noble.Text.ALIGN_LEFT, false, fontMed)
end
scene.paginator:moveTo(200, 207)
end
function scene:exit()
scene.super.exit(self)
for i = 1, 4 do
scene.cards[i]:remove()
end
Noble.showFPS = false
end
function scene:finish()
scene.super.finish(self)
playdate.display.setScale(1)
end

View File

@@ -48,7 +48,7 @@ function scene:setValues()
scene.balebaSpawner = playdate.timer.new(10000)
scene.balebaSpawner.repeats = true
scene.levelAudio = playdate.sound.fileplayer.new("assets/audio/war")
scene.levelAudio = playdate.sound.fileplayer.new("assets/audio/game")
scene.levelAudio:setVolume(0.7)
scene.helloAudio = playdate.sound.fileplayer.new("assets/audio/hello")
@@ -68,7 +68,7 @@ function scene:start()
playdate.ui.crankIndicator:draw() -- not sure why this is not working
self.optionsMenu:addMenuItem("Main Menu", function() Noble.transition(Menu) end)
Noble.showFPS = true
Noble.showFPS = false
end
function scene:spawnBaleba()

View File

@@ -16,6 +16,11 @@ function scene:setValues()
self.menuYFrom = -50
self.menuY = 15
self.menuYTo = 240
scene.musicEnabled = Noble.Settings.get("music")
scene.levelAudio = playdate.sound.fileplayer.new("assets/audio/menu")
scene.levelAudio:setVolume(0.7)
end
function scene:init()
@@ -66,6 +71,10 @@ end
function scene:enter()
scene.super.enter(self)
self.sequence = Sequence.new():from(self.menuYFrom):to(self.menuY, 1.5, Ease.outBounce):start()
if scene.musicEnabled then
scene.levelAudio:play(0)
end
end
function scene:start()
@@ -97,12 +106,13 @@ end
function scene:exit()
scene.super.exit(self)
scene.levelAudio:stop()
self.sequence = Sequence.new():from(self.menuY):to(self.menuYTo, 0.5, Ease.inSine)
self.sequence:start();
self.sequence:start()
end
function scene:setupMenu(__menu)
__menu:addItem("Start", function() Noble.transition(DroneSelection, nil, Noble.Transition.DipToWhite) end)
__menu:addItem("Start", function() Noble.transition(DroneCardSelector, nil, Noble.Transition.DipToWhite) end)
__menu:addItem("Tutorial", function() return end)
__menu:addItem("Credits", function() return end)
__menu:select("Start")