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; 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); 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)); dynamicSceneSetRoomFlags(decorObject->dynamicId, ROOM_FLAG_FROM_INDEX(decorObject->rigidBody.currentRoom));
return 1; return 1;
} }

View file

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

View file

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

View file

@ -76,7 +76,7 @@ void sceneInitDynamicColliders(struct Scene* scene) {
} }
void sceneInit(struct Scene* scene) { void sceneInit(struct Scene* scene) {
sceneInitNoPauseMenu(scene); sceneInitNoPauseMenu(scene, 0);
gameMenuInit(&gGameMenu, gPauseMenuOptions, sizeof(gPauseMenuOptions) / sizeof(*gPauseMenuOptions), 1); gameMenuInit(&gGameMenu, gPauseMenuOptions, sizeof(gPauseMenuOptions) / sizeof(*gPauseMenuOptions), 1);
@ -95,7 +95,7 @@ void sceneInit(struct Scene* scene) {
gGameMenu.state = GameMenuStateResumeGame; gGameMenu.state = GameMenuStateResumeGame;
} }
void sceneInitNoPauseMenu(struct Scene* scene) { void sceneInitNoPauseMenu(struct Scene* scene, int mainMenuMode) {
signalsInit(1); signalsInit(1);
cameraInit(&scene->camera, 70.0f, DEFAULT_NEAR_PLANE * SCENE_SCALE, DEFAULT_FAR_PLANE * SCENE_SCALE); 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.rotation = decorDef->rotation;
decorTransform.scale = gOneVec; decorTransform.scale = gOneVec;
scene->decor[i] = decorObjectNew(decorObjectDefinitionForId(decorDef->decorId), &decorTransform, decorDef->roomIndex); 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); collisionSceneRemoveDynamicObject(&scene->portals[portalIndex].collisionObject);
} }
return; return;
} }

View file

@ -90,7 +90,7 @@ extern struct Scene gScene;
struct GraphicsTask; struct GraphicsTask;
void sceneInit(struct Scene* scene); 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 sceneRender(struct Scene* scene, struct RenderState* renderState, struct GraphicsTask* task);
void sceneUpdate(struct Scene* scene); void sceneUpdate(struct Scene* scene);
void sceneQueueCheckpoint(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); 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); void sceneClosePortal(struct Scene* scene, int portalIndex);
#endif #endif