This commit is contained in:
assada 2024-06-01 22:46:36 +03:00
parent 29a5ed2f62
commit f19610e458
Signed by: assada
GPG Key ID: D4860A938E541F06
12 changed files with 543 additions and 451 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -17,6 +17,7 @@ import "scripts/player"
import "scripts/groundSprite"
import "scripts/balebaSprite"
import "scripts/dangerSprite"
import "scripts/tankSprite"
import "scenes/BaseScene"
import 'scenes/Menu'
@ -35,4 +36,4 @@ playdate.display.setRefreshRate(50)
Noble.showFPS = true
Noble.new(Menu)
Noble.new(Game)

View File

@ -28,6 +28,8 @@ function scene:setValues()
scene.t = playdate.timer.new(10000)
scene.t.repeats = true
scene.tankTimer = playdate.timer.new(1000)
scene.fp = playdate.sound.fileplayer.new( "assets/audio/war" )
scene.fp:setVolume(0.7)
scene.hello = playdate.sound.fileplayer.new( "assets/audio/hello" )
@ -68,7 +70,7 @@ function scene:enter()
end
local k = #scene.balebas+1
scene.balebas[k] = scene:spawnBaleba()
--scene.balebas[k] = scene:spawnBaleba()
end
for i=1, 3 do
@ -80,6 +82,11 @@ function scene:enter()
if musicEnabled then
scene.fp:play(0)
end
scene.tankTimer.timerEndedCallback = function()
scene.tank = Tank(550, 190, scene.player, scene.ground)
scene.tank:add()
end
end
function scene:update()
@ -90,15 +97,13 @@ function scene:update()
return
end
if scene.player.isDead() then
if not scene.telemLostSoundPlayed then
scene.telemLostSound:play(1)
scene.telemLostSoundPlayed = true
screenShake(500, 5)
end
if scene.player.isDead() and not scene.telemLostSoundPlayed then
scene.telemLostSound:play(1)
scene.telemLostSoundPlayed = true
screenShake(500, 5)
scene:destroyPlayer()
local et = playdate.timer.new(2000)
local et = playdate.timer.new(6000)
et.timerEndedCallback = function()
Noble.transition(Menu)
end
@ -126,6 +131,9 @@ function scene:exit()
scene.ground:remove()
scene.ground = nil
scene.tank:remove()
scene.ground = nil
for i=1, #scene.balebas do
scene.balebas[i]:destroy()
scene.balebas[i] = nil
@ -139,6 +147,9 @@ function scene:exit()
scene.t:remove()
scene.t = nil
scene.tankTimer:remove()
scene.tankTimer = nil
Noble.showFPS = false
end

View File

@ -1,7 +1,7 @@
Ground = {}
class("Ground").extends(Graphics.sprite)
local groundImage = playdate.graphics.image.new("assets/sprites/groundFin")
local groundImage = Graphics.image.new("assets/sprites/groundFin")
function Ground:init(x, y, player)
Ground.super.init(self, groundImage)
@ -24,6 +24,12 @@ function Ground:setMoveSpeed(speed)
end
function Ground:update()
-- Stop ground
if Ground.moveSpeed == 0 then
return
end
-- Speedup when player is moving right
if Ground.player.isMovingRight() == false then
Ground.moveSpeed = 0.2

View File

@ -99,6 +99,24 @@ function Player:changeToRunState(direction)
end
end
function Player:boom(collisionObject)
Player.dead = true
self:changeState("boom")
local particleB = ParticlePoly(self.x, self.y)
particleB:setThickness(2)
particleB:setAngular(-15, 15)
particleB:setSize(1, 2)
particleB:setSpeed(1, 3)
particleB:setMode(Particles.modes.STAY)
particleB:setBounds(0, 0, 400, 240)
particleB:setColour(Graphics.kColorXOR)
particleB:add(20)
if collisionObject then
collisionObject:remove()
end
end
function Player:handleMovementAndCollisions()
if Player.dead then
return
@ -134,23 +152,24 @@ function Player:handleMovementAndCollisions()
end
if collisionTag == 3 then -- Ground
Player.dead = true
self:changeState("boom")
self:boom()
return
elseif collisionTag == 154 then -- Baleba
Player.dead = true
self:changeState("boom")
-- self:boom(collisionObject)
return
elseif collisionTag == 2 then -- Tank
self:boom()
local particleB = ParticlePoly(self.x, self.y)
particleB:setThickness(2)
particleB:setAngular(-15, 15)
particleB:setSize(1, 2)
particleB:setSpeed(1, 3)
particleB:setMode(Particles.modes.STAY)
particleB:setBounds(0, 0, 400, 240)
particleB:setColour(Graphics.kColorXOR)
particleB:add(20)
collisionObject:remove()
local particleC = ParticlePoly(collisionObject.x, collisionObject.y)
particleC:setThickness(5)
particleC:setAngular(-15, 15)
particleC:setSize(1, 5)
particleC:setSpeed(1, 3)
particleC:setMode(Particles.modes.STAY)
particleC:setBounds(0, 0, 400, 240)
particleC:setColour(Graphics.kColorXOR)
particleC:add(50)
collisionObject:fadeout()
return
end
end

View File

@ -0,0 +1,55 @@
Tank = {}
class("Tank").extends(Graphics.sprite)
function Tank:init(x, y, player, ground)
self.tankImage = Graphics.image.new("assets/sprites/tank")
self.tankImageD = Graphics.image.new("assets/sprites/tankD")
Tank.super.init(self)
local width, height = self.tankImage:getSize()
self.faded_image = Graphics.image.new(width, height, Graphics.kColorClear)
Graphics.pushContext(self.faded_image)
self.tankImageD:drawBlurred(0, 0, 2, 2, Graphics.image.kDitherTypeFloydSteinberg)
Graphics.popContext()
-- Collision properties
self:setZIndex(99)
self:setTag(2)
self:setCollideRect(4, 56, 147, 65)
-- Main properties
Tank.moveSpeed = 2
Tank.player = player
Tank.ground = ground
self:fadein()
self:moveTo(x, y)
end
function Tank:fadein()
self:setImage(self.tankImage)
end
function Tank:fadeout()
self:setImage(self.faded_image)
end
function Tank:update()
if self.x <= 330 then
Tank.ground:setMoveSpeed(0)
return
end
-- Speedup when player is moving right
if Tank.player.isMovingRight() == false then
Tank.moveSpeed = 0.2
else
Tank.moveSpeed = 1
end
self:moveTo(self.x-Tank.moveSpeed, self.y)
end