diff --git a/sonic-radiance.love/assets/sfx/fall.wav b/sonic-radiance.love/assets/sfx/fall.wav new file mode 100644 index 0000000..dd238f4 Binary files /dev/null and b/sonic-radiance.love/assets/sfx/fall.wav differ diff --git a/sonic-radiance.love/assets/sfx/splash.wav b/sonic-radiance.love/assets/sfx/splash.wav new file mode 100644 index 0000000..518af5e Binary files /dev/null and b/sonic-radiance.love/assets/sfx/splash.wav differ diff --git a/sonic-radiance.love/datas/gamedata/maps/terrains.lua b/sonic-radiance.love/datas/gamedata/maps/terrains.lua index fca97ca..d33f2f2 100644 --- a/sonic-radiance.love/datas/gamedata/maps/terrains.lua +++ b/sonic-radiance.love/datas/gamedata/maps/terrains.lua @@ -25,6 +25,7 @@ return { fallDamage = 10, speedFactor = 0, canJump = false, + sound = "splash" }, { forceAction = nil, @@ -35,6 +36,7 @@ return { speedFactor = 0.5, canJump = true, damage = 0, + sound = "splash" }, { forceAction = nil, @@ -54,6 +56,7 @@ return { fallDamage = 10, speedFactor = 0, canJump = false, + sound = "fall" }, }, lava = { @@ -63,6 +66,7 @@ return { fallDamage = 20, speedFactor = 0, canJump = false, + sound = "splash" }, }, swamp = { diff --git a/sonic-radiance.love/scenes/overworld/actors/player/health.lua b/sonic-radiance.love/scenes/overworld/actors/player/health.lua index 22f3080..5e07775 100644 --- a/sonic-radiance.love/scenes/overworld/actors/player/health.lua +++ b/sonic-radiance.love/scenes/overworld/actors/player/health.lua @@ -9,6 +9,7 @@ function PlayerHealth:initHealth() self.hpbar:setColorForeground(248/255, 160/255, 0, 1) self.hpbar:setColorBackground(112/255, 0, 0) self.fallDamage = 0 + self.fallSound = "" end function PlayerHealth:drawHealth(x, y) diff --git a/sonic-radiance.love/scenes/overworld/actors/player/init.lua b/sonic-radiance.love/scenes/overworld/actors/player/init.lua index f0770c8..ba17c93 100644 --- a/sonic-radiance.love/scenes/overworld/actors/player/init.lua +++ b/sonic-radiance.love/scenes/overworld/actors/player/init.lua @@ -82,6 +82,9 @@ function Player:checkGround() self.x = self.lastPos.x self.y = self.lastPos.y self:takeDamage(self.fallDamage) + if (not utils.string.isEmpty(self.fallSound)) then + self.assets:playSFX(self.fallSound) + end end end end diff --git a/sonic-radiance.love/scenes/overworld/actors/player/interactions.lua b/sonic-radiance.love/scenes/overworld/actors/player/interactions.lua index e2325d4..e040968 100644 --- a/sonic-radiance.love/scenes/overworld/actors/player/interactions.lua +++ b/sonic-radiance.love/scenes/overworld/actors/player/interactions.lua @@ -20,6 +20,7 @@ function PlayerInteractions:initInteractions() self.terrain = {} self.terrain.name = "" self.terrain.data = {} + self.terrain.new = false self.lastPos = {} self.lastPos.x = self.x self.lastPos.y = self.y @@ -73,6 +74,9 @@ end function PlayerInteractions:updateTerrain() local newTerrain = self:getCurrentTerrain() + if (newTerrain ~= self.terrain.name) then + self.terrain.new = true + end self.terrain.name = newTerrain self:updateTerrainData() if (newTerrain == "non-solid") then @@ -132,7 +136,14 @@ function PlayerInteractions:setTerrainData(data) self.canAct = data.canAct ~= false self.forceAction = data.forceAction end + if (self.terrain.new and (self.z < 0)) then + self.terrain.new = false + if (not utils.string.isEmpty(data.sound)) then + self.assets:playSFX(data.sound) + end + end self.fallDamage = data.fallDamage or 0 + self.fallSound = data.fallSound or "" self.terrain.data = data end diff --git a/sonic-radiance.love/scenes/overworld/assets.lua b/sonic-radiance.love/scenes/overworld/assets.lua index 9158537..b4f7b27 100644 --- a/sonic-radiance.love/scenes/overworld/assets.lua +++ b/sonic-radiance.love/scenes/overworld/assets.lua @@ -54,6 +54,8 @@ return { {"spinrelease", "assets/sfx/spinrelease.wav"}, {"ring", "assets/sfx/ring.wav"}, {"pop", "assets/sfx/pop.wav"}, + {"fall", "assets/sfx/fall.wav"}, + {"splash", "assets/sfx/splash.wav"}, {"mBack", "assets/sfx/menus/back.wav"}, {"mBeep", "assets/sfx/menus/beep.wav"},