Added All Switch Sounds

- switch has activate sound
- switch has countdown timer sound
- the player now doesnt make the deniedSelect sound when clicking the switch, and makes the select sound instead
- tested on n64 hardware, no issues
This commit is contained in:
Weston Salinas 2023-04-08 17:16:58 -05:00
parent b0a92a4276
commit 18e0b0068b
6 changed files with 28 additions and 1 deletions

View file

@ -0,0 +1 @@
-c 1

View file

@ -47,6 +47,7 @@ unsigned short soundsFastFalling = SOUNDS_FAST_WINDLOOP1;
unsigned short soundsBallCatcher = SOUNDS_ALYX_STUNNER1;
unsigned short soundsPortalOpen2 = SOUNDS_PORTAL_OPEN2;
unsigned short soundsTickTock = SOUNDS_TICKTOCK1;
unsigned short soundsPortalFizzle = SOUNDS_PORTAL_FIZZLE2;

View file

@ -17,6 +17,7 @@ extern unsigned short soundsDoor;
extern unsigned short soundsFastFalling;
extern unsigned short soundsBallCatcher;
extern unsigned short soundsPortalOpen2;
extern unsigned short soundsTickTock;
extern unsigned short soundsPortalFizzle;

View file

@ -316,6 +316,9 @@ void playerUpdateGrabbedObject(struct Player* player) {
player->grabbingThroughPortal = PLAYER_GRABBING_THROUGH_NOTHING;
}
}
else if ((hit.object->body)){
player->flags |= PlayerJustSelect;
}
else{
player->flags |= PlayerJustDeniedSelect;
}

View file

@ -11,6 +11,7 @@
#include "../util/time.h"
#define COLLIDER_HEIGHT 0.7f
#define TICKTOCK_PAUSE_LENGTH 0.25f
struct Vector2 gSwitchCylinderEdgeVectors[] = {
{0.0f, 1.0f},
@ -92,13 +93,15 @@ void switchInit(struct Switch* switchObj, struct SwitchDefinition* definition) {
switchObj->duration = definition->duration;
switchObj->flags = 0;
switchObj->timeLeft = 0.0f;
switchObj->ticktockPauseTimer = 0.0f;
}
void switchActivate(struct Switch* switchObj) {
if (switchObj->timeLeft > 0.0f) {
return;
}
soundPlayerPlay(soundsButton, 1.0f, 0.5f, &switchObj->rigidBody.transform.position, &gZeroVec);
switchObj->ticktockSoundLoopId = soundPlayerPlay(soundsTickTock, 1.0f, 0.5f, NULL, NULL);
switchObj->flags |= SwitchFlagsDepressed;
switchObj->timeLeft = switchObj->duration;
signalsSend(switchObj->signalIndex);
@ -125,9 +128,23 @@ void switchUpdate(struct Switch* switchObj) {
switchObj->timeLeft -= FIXED_DELTA_TIME;
if (switchObj->timeLeft < 0.0f) {
switchObj->timeLeft = 0.0f;
} else {
if (!soundPlayerIsPlaying(switchObj->ticktockSoundLoopId)){
if (switchObj->ticktockPauseTimer < TICKTOCK_PAUSE_LENGTH){
switchObj->ticktockPauseTimer += FIXED_DELTA_TIME;
}else{
switchObj->ticktockPauseTimer = 0;
switchObj->ticktockSoundLoopId = soundPlayerPlay(soundsTickTock, 1.0f, 0.5f, NULL, NULL);
}
}else{
switchObj->ticktockPauseTimer = 0;
}
signalsSend(switchObj->signalIndex);
}
}

View file

@ -4,6 +4,8 @@
#include "../sk64/skelatool_armature.h"
#include "../sk64/skelatool_animator.h"
#include "../physics/collision_object.h"
#include "../audio/soundplayer.h"
#include "../audio/clips.h"
#include "../levels/level_definition.h"
@ -21,6 +23,8 @@ struct Switch {
short flags;
float duration;
float timeLeft;
short ticktockSoundLoopId;
float ticktockPauseTimer;
};
void switchInit(struct Switch* switchObj, struct SwitchDefinition* definition);