Merge pull request #216 from hackgrid/master

mute DecorObjects in main_menu (Fixes #213)
This commit is contained in:
lambertjamesd 2023-08-25 08:39:35 -06:00 committed by GitHub
commit baa8664a2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 9 deletions

View file

@ -181,11 +181,11 @@ int decorObjectUpdate(struct DecorObject* decorObject) {
return 0;
}
if (decorObject->definition->soundClipId != -1 && decorObject->playingSound == SOUND_ID_NONE && decorObject->fizzleTime == 0.0f) {
if (decorObject->definition->soundClipId != -1 && decorObject->playingSound == SOUND_ID_NONE && decorObject->fizzleTime == 0.0f && !(decorObject->definition->flags & DecorObjectFlagsMuted)) {
decorObject->playingSound = soundPlayerPlay(decorObject->definition->soundClipId, 1.0f, 1.0f, &decorObject->rigidBody.transform.position, &decorObject->rigidBody.velocity);
}
dynamicSceneSetRoomFlags(decorObject->dynamicId, ROOM_FLAG_FROM_INDEX(decorObject->rigidBody.currentRoom));
return 1;
}
}

View file

@ -10,6 +10,7 @@ enum DecorObjectFlags {
// important objects respawn at their original
// location if they escape the level
DecorObjectFlagsImportant = (1 << 0),
DecorObjectFlagsMuted = (1 << 1),
};
struct DecorObjectDefinition {
@ -52,4 +53,4 @@ enum FizzleCheckResult {
Gfx* decorBuildFizzleGfx(Gfx* gfxToRender, float fizzleTime, struct RenderState* renderState);
enum FizzleCheckResult decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fizzleTime);
#endif
#endif

View file

@ -33,7 +33,7 @@ void mainMenuPlayAmbientSound() {
}
void mainMenuInit(struct GameMenu* gameMenu) {
sceneInitNoPauseMenu(&gScene);
sceneInitNoPauseMenu(&gScene, 1);
gameMenuInit(gameMenu, gMainMenuOptions, sizeof(gMainMenuOptions) / sizeof(*gMainMenuOptions), 0);

View file

@ -76,7 +76,7 @@ void sceneInitDynamicColliders(struct Scene* scene) {
}
void sceneInit(struct Scene* scene) {
sceneInitNoPauseMenu(scene);
sceneInitNoPauseMenu(scene, 0);
gameMenuInit(&gGameMenu, gPauseMenuOptions, sizeof(gPauseMenuOptions) / sizeof(*gPauseMenuOptions), 1);
@ -95,7 +95,7 @@ void sceneInit(struct Scene* scene) {
gGameMenu.state = GameMenuStateResumeGame;
}
void sceneInitNoPauseMenu(struct Scene* scene) {
void sceneInitNoPauseMenu(struct Scene* scene, int mainMenuMode) {
signalsInit(1);
cameraInit(&scene->camera, 70.0f, DEFAULT_NEAR_PLANE * SCENE_SCALE, DEFAULT_FAR_PLANE * SCENE_SCALE);
@ -149,6 +149,12 @@ void sceneInitNoPauseMenu(struct Scene* scene) {
decorTransform.rotation = decorDef->rotation;
decorTransform.scale = gOneVec;
scene->decor[i] = decorObjectNew(decorObjectDefinitionForId(decorDef->decorId), &decorTransform, decorDef->roomIndex);
if(mainMenuMode == 1) {
scene->decor[i]->definition->flags |= DecorObjectFlagsMuted;
} else {
scene->decor[i]->definition->flags &= ~(DecorObjectFlagsMuted);
}
}
}
@ -901,4 +907,4 @@ void sceneClosePortal(struct Scene* scene, int portalIndex) {
collisionSceneRemoveDynamicObject(&scene->portals[portalIndex].collisionObject);
}
return;
}
}

View file

@ -90,7 +90,7 @@ extern struct Scene gScene;
struct GraphicsTask;
void sceneInit(struct Scene* scene);
void sceneInitNoPauseMenu(struct Scene* scene);
void sceneInitNoPauseMenu(struct Scene* scene, int mainMenuMode);
void sceneRender(struct Scene* scene, struct RenderState* renderState, struct GraphicsTask* task);
void sceneUpdate(struct Scene* scene);
void sceneQueueCheckpoint(struct Scene* scene);
@ -98,4 +98,4 @@ void sceneQueueCheckpoint(struct Scene* scene);
int sceneFirePortal(struct Scene* scene, struct Ray* ray, struct Vector3* playerUp, int portalIndex, int roomIndex, int fromPlayer, int just_checking);
void sceneClosePortal(struct Scene* scene, int portalIndex);
#endif
#endif