diff --git a/build-linux/MorriCraft b/build-linux/MorriCraft index 783896d..22d1bb6 100755 Binary files a/build-linux/MorriCraft and b/build-linux/MorriCraft differ diff --git a/build-windows/MorriCraft.exe b/build-windows/MorriCraft.exe index 1c8195f..da93fc7 100755 Binary files a/build-windows/MorriCraft.exe and b/build-windows/MorriCraft.exe differ diff --git a/src/main.cpp b/src/main.cpp index b156283..af3f119 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -884,22 +884,26 @@ int main(void) SetMusicVolume(titleMusic, titleLoopFade * masterMusicVolume * (1.0f - crossfade)); - // --- GLOBAL MUSIC VOLUME MANAGEMENT --- + // --- GLOBAL TIME & AUDIO MANAGEMENT --- + float cycleLength = 300.0f; + if (currentState == GAMEPLAY) gameTime += GetFrameTime(); + float timeOfDay = fmodf(gameTime, cycleLength) / cycleLength; float sunAngle = timeOfDay * 2.0f * PI - PI/2.0f; float dayFactor = (sinf(sunAngle) + 1.0f) / 2.0f; float quickMix = (dayFactor - 0.5f) * 5.0f + 0.5f; if (quickMix > 1.0f) quickMix = 1.0f; if (quickMix < 0.0f) quickMix = 0.0f; + SetMusicVolume(titleMusic, titleLoopFade * masterMusicVolume * (1.0f - crossfade)); SetMusicVolume(gameplayMusic, masterMusicVolume * crossfade * quickMix); SetMusicVolume(nightMusic, masterMusicVolume * crossfade * (1.0f - quickMix)); - // Ensure streams are playing when crossfaded in + // Ensure gameplay streams are playing when crossfaded in if (crossfade > 0.01f) { if (!IsMusicStreamPlaying(gameplayMusic)) PlayMusicStream(gameplayMusic); if (!IsMusicStreamPlaying(nightMusic)) PlayMusicStream(nightMusic); } - + // Handle window resize dynamically int currentWidth = GetScreenWidth(); int currentHeight = GetScreenHeight(); @@ -1670,13 +1674,8 @@ int main(void) // Draw Gameplay overlay if we entered gameplay if (currentState == GAMEPLAY || currentState == PAUSE_MENU || currentState == CRAFTING_GUI) { - // ---- Day / Night Cycle Calculations ---- - float cycleLength = 300.0f; // 5 minutes - float timeOfDay = fmodf(gameTime, cycleLength) / cycleLength; - // timeOfDay: 0.0 = Midnight, 0.25 = 6am (Sunrise), 0.5 = Noon, 0.75 = 6pm (Sunset) - float sunAngle = timeOfDay * 2.0f * PI - PI/2.0f; - - float dayFactor = (sinf(sunAngle) + 1.0f) / 2.0f; // 0 (night) to 1 (day) + // ---- Atmospheric Calculations (Previously global) ---- + // lightLevel and blockTint are derived from the global dayFactor float lightLevel = 0.2f + 0.8f * dayFactor; // Ambient light multiplier Color blockTint = { (unsigned char)(255 * lightLevel), (unsigned char)(255 * lightLevel), (unsigned char)(255 * lightLevel), 255 };