Added: Underwater/Above water soundscape, misc sound effects. Reworked player class a bit to contain pointer to the game engine for sound playing.
This commit is contained in:
@@ -27,8 +27,20 @@ Dolphin::~Dolphin() {}
|
|||||||
|
|
||||||
void Dolphin::onInit()
|
void Dolphin::onInit()
|
||||||
{
|
{
|
||||||
|
player.init(engine);
|
||||||
engine->renderer->setCameraDefinitions(&camera.worldView, &camera.position, camera.planes);
|
engine->renderer->setCameraDefinitions(&camera.worldView, &camera.position, camera.planes);
|
||||||
|
|
||||||
|
engine->audio.loadSong("sound/dirediredocks.wav");
|
||||||
|
engine->audio.playSong();
|
||||||
|
engine->audio.setSongVolume(60);
|
||||||
|
|
||||||
|
surfaceAmbient = engine->audio.loadADPCM("sound/surface.sad");
|
||||||
|
underwaterAmbient = engine->audio.loadADPCM("sound/underwater.sad");
|
||||||
|
pickupSound = engine->audio.loadADPCM("sound/pickup.sad");
|
||||||
|
|
||||||
|
engine->audio.playADPCM(surfaceAmbient, 0);
|
||||||
|
engine->audio.playADPCM(underwaterAmbient, 1);
|
||||||
|
|
||||||
texRepo = engine->renderer->getTextureRepository();
|
texRepo = engine->renderer->getTextureRepository();
|
||||||
|
|
||||||
engine->renderer->disableVSync();
|
engine->renderer->disableVSync();
|
||||||
@@ -138,8 +150,9 @@ void Dolphin::onUpdate()
|
|||||||
if (dist < 2.5F && player.isJumping() && oysters[i].isActive())
|
if (dist < 2.5F && player.isJumping() && oysters[i].isActive())
|
||||||
{
|
{
|
||||||
printf("Pickup %d Dist %d\n", i, dist);
|
printf("Pickup %d Dist %d\n", i, dist);
|
||||||
//oysters[i].setActive(false);
|
|
||||||
oysters[i].disappear();
|
oysters[i].disappear();
|
||||||
|
engine->audio.setADPCMVolume(30, 3);
|
||||||
|
engine->audio.playADPCM(pickupSound, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,5 +181,14 @@ void Dolphin::onUpdate()
|
|||||||
}
|
}
|
||||||
engine->renderer->draw(player.mesh);
|
engine->renderer->draw(player.mesh);
|
||||||
if (camera.position.y < WATER_LEVEL)
|
if (camera.position.y < WATER_LEVEL)
|
||||||
|
{
|
||||||
engine->renderer->draw(waterOverlay);
|
engine->renderer->draw(waterOverlay);
|
||||||
|
engine->audio.setADPCMVolume(0, 0); //Surface ambient
|
||||||
|
engine->audio.setADPCMVolume(65, 1); //Underwater ambient
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
engine->audio.setADPCMVolume(50, 0); //Surface ambient
|
||||||
|
engine->audio.setADPCMVolume(0, 1); //Underwater ambient
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ private:
|
|||||||
Mesh water;
|
Mesh water;
|
||||||
Mesh waterbox;
|
Mesh waterbox;
|
||||||
Sprite lifeSprites[3];
|
Sprite lifeSprites[3];
|
||||||
|
audsrv_adpcm_t *underwaterAmbient, *surfaceAmbient;
|
||||||
|
audsrv_adpcm_t *pickupSound;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ Player::~Player()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::init(Engine *t_engine)
|
||||||
|
{
|
||||||
|
pEngine = t_engine;
|
||||||
|
waterImpact = t_engine->audio.loadADPCM("sound/water_impact.sad");
|
||||||
|
}
|
||||||
|
|
||||||
void Player::update(Pad &t_pad)
|
void Player::update(Pad &t_pad)
|
||||||
{
|
{
|
||||||
if (lift > 0.0F)
|
if (lift > 0.0F)
|
||||||
@@ -81,6 +87,19 @@ void Player::update(Pad &t_pad)
|
|||||||
printf("Swim animation\n");
|
printf("Swim animation\n");
|
||||||
mesh.playAnimation(1, 14, 0);
|
mesh.playAnimation(1, 14, 0);
|
||||||
}
|
}
|
||||||
|
if (mesh.getCurrentAnimationFrame() == 42)
|
||||||
|
{
|
||||||
|
if (!bIsImpactingWater)
|
||||||
|
{
|
||||||
|
pEngine->audio.setADPCMVolume(50, 2);
|
||||||
|
pEngine->audio.playADPCM(waterImpact, 2);
|
||||||
|
}
|
||||||
|
bIsImpactingWater = true;
|
||||||
|
}
|
||||||
|
else if (bIsImpactingWater)
|
||||||
|
{
|
||||||
|
bIsImpactingWater = false;
|
||||||
|
}
|
||||||
|
|
||||||
velocity *= 60.0F / Dolphin::engineFPS; //Moving by deltatime of last frame.
|
velocity *= 60.0F / Dolphin::engineFPS; //Moving by deltatime of last frame.
|
||||||
mesh.position.z +=
|
mesh.position.z +=
|
||||||
|
|||||||
@@ -14,9 +14,10 @@
|
|||||||
#define WATER_LEVEL -5.0F
|
#define WATER_LEVEL -5.0F
|
||||||
|
|
||||||
#include "../camera.hpp"
|
#include "../camera.hpp"
|
||||||
|
#include <audsrv.h>
|
||||||
#include <modules/pad.hpp>
|
#include <modules/pad.hpp>
|
||||||
#include <tamtypes.h>
|
#include <tamtypes.h>
|
||||||
|
class Engine;
|
||||||
class Player
|
class Player
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -25,6 +26,7 @@ public:
|
|||||||
Mesh mesh;
|
Mesh mesh;
|
||||||
Player();
|
Player();
|
||||||
~Player();
|
~Player();
|
||||||
|
void init(Engine *t_engine);
|
||||||
void update(Pad &t_pad);
|
void update(Pad &t_pad);
|
||||||
const u8 &isJumping() { return bIsJumping; }
|
const u8 &isJumping() { return bIsJumping; }
|
||||||
const u8 &getLifes() { return lifes; }
|
const u8 &getLifes() { return lifes; }
|
||||||
@@ -33,6 +35,9 @@ private:
|
|||||||
u8 bIsJumping;
|
u8 bIsJumping;
|
||||||
Vector3 playerNextPosition;
|
Vector3 playerNextPosition;
|
||||||
u8 lifes;
|
u8 lifes;
|
||||||
|
audsrv_adpcm_t *waterImpact;
|
||||||
|
Engine *pEngine;
|
||||||
|
u8 bIsImpactingWater;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user