Skip to content

Commit

Permalink
Remove fixed theme song
Browse files Browse the repository at this point in the history
  • Loading branch information
HelloYeew committed Jan 21, 2025
1 parent 36acbd4 commit 3cfa4ea
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 122 deletions.
77 changes: 9 additions & 68 deletions Renako.Game/Audio/RenakoAudioManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
using osu.Framework.Audio;
using osu.Framework.Audio.Track;
using osu.Framework.Graphics.Containers;
using osu.Framework.Logging;
using osu.Framework.Platform;
using osu.Framework.Screens;
using Renako.Game.Beatmaps;
using Renako.Game.Graphics.Screens;
using Renako.Game.Graphics.ScreenStacks;
Expand Down Expand Up @@ -35,70 +33,12 @@ public partial class RenakoAudioManager : CompositeDrawable
[BackgroundDependencyLoader]
private void load(AudioManager audioManagerSource)
{
mainScreenStack.BindableCurrentScreen.BindValueChanged(e => changeTrackOnScreenChanged(e.OldValue, e.NewValue));
workingBeatmap.BindableWorkingBeatmapSet.BindValueChanged(e => changeTrackOnBeatmapSetChanged(e.OldValue, e.NewValue));
workingBeatmap.BindableWorkingBeatmapSet.BindValueChanged(e => changeTrackOnBeatmapSetChanged(e.OldValue, e.NewValue), true);

trackStore = audioManagerSource.Tracks;
Track = trackStore.Get("theme/main-theme.mp3");
audioManager = audioManagerSource;

foreach (var source in trackStore.GetAvailableResources())
{
Logger.Log("track :" + source, LoggingTarget.Runtime, LogLevel.Debug);
}
}

/// <summary>
/// Change the track when the screen changed.
/// </summary>
/// <param name="oldScreen">The old <see cref="IScreen"/> before change.</param>
/// <param name="newScreen">The new <see cref="IScreen"/> that will be changed.</param>
private void changeTrackOnScreenChanged(IScreen oldScreen, IScreen newScreen)
{
// Case specifically for starting the game.
if (oldScreen is WarningScreen && newScreen is StartScreen)
{
Track?.Dispose();
Track = trackStore.Get("theme/main-theme.mp3");
Track.Looping = true;
Track.Start();
}
else if (oldScreen is StartScreen && newScreen is MainMenuScreen)
{
return;
}

// Record the duration of the main theme if old screen is StartScreen or MainMenuScreen.
if (oldScreen is MainMenuScreen or StartScreen)
{
mainThemeDuration = Track.CurrentTime;
}

if (newScreen is MainMenuScreen)
{
Track?.Stop();
Track?.Dispose();
Track = trackStore.Get("theme/main-theme.mp3");
Track.Looping = true;
Track.Seek(mainThemeDuration);
Track.Start();
}
else if (newScreen is PlayMenuScreen)
{
Track?.Stop();
Track?.Dispose();
Track = trackStore.Get("theme/play-theme.mp3");
Track.Looping = true;
Track.Start();
}
else if (newScreen is SongSelectionScreen)
{
changeTrackOnBeatmapSetChanged(null, workingBeatmap.BeatmapSet);
}
else if (newScreen is PlayerLoadingScreen)
{
Track?.Stop();
}
changeTrackOnBeatmapSetChanged(null, workingBeatmap.BeatmapSet);
}

/// <summary>
Expand All @@ -111,10 +51,6 @@ private void changeTrackOnBeatmapSetChanged(BeatmapSet oldBeatmapSet, BeatmapSet
if (newBeatmapSet == null || Equals(oldBeatmapSet, newBeatmapSet))
return;

// We don't want to change the track if the screen is not SongSelectionScreen.
if (mainScreenStack.CurrentScreen is not SongSelectionScreen)
return;

Track?.Stop();
Track?.Dispose();

Expand All @@ -124,8 +60,13 @@ private void changeTrackOnBeatmapSetChanged(BeatmapSet oldBeatmapSet, BeatmapSet
return;

Track.Looping = true;
Track.Seek(newBeatmapSet.PreviewTime);
Track.RestartPoint = newBeatmapSet.PreviewTime;

if (mainScreenStack.CurrentScreen is SongSelectionScreen)
{
Track.Seek(newBeatmapSet.PreviewTime);
Track.RestartPoint = newBeatmapSet.PreviewTime;
}

Track.Start();
}

Expand Down
49 changes: 4 additions & 45 deletions Renako.Game/Graphics/ScreenStacks/RenakoBackgroundScreenStack.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
using Renako.Game.Beatmaps;
using Renako.Game.Configurations;
using Renako.Game.Graphics.Drawables;
using Renako.Game.Graphics.Screens;
using Renako.Game.Utilities;

namespace Renako.Game.Graphics.ScreenStacks;
Expand All @@ -25,8 +24,6 @@ public partial class RenakoBackgroundScreenStack : ScreenStack
public Sprite ImageSpriteUp;
public Sprite ImageSpriteDown;

private Texture mainBackgroundTexture;
private Texture playMenuBackgroundTexture;
private Texture fallbackBeatmapBackground;
private Container backgroundContainer;
private Box maskBox;
Expand All @@ -48,8 +45,6 @@ private void load(TextureStore textureStore, RenakoConfigManager configManager)
{
this.textureStore = textureStore;

mainBackgroundTexture = textureStore.Get("Screen/main-background.jpeg");
playMenuBackgroundTexture = textureStore.Get("Screen/play-background.jpg");
// TODO: Change this to a real fallback background and delete the fallback-beatmap-background.jpg
fallbackBeatmapBackground = textureStore.Get("Screen/main-background.jpeg");

Expand Down Expand Up @@ -93,44 +88,7 @@ private void load(TextureStore textureStore, RenakoConfigManager configManager)
Alpha = 0
});

mainScreenStack.BindableCurrentScreen.BindValueChanged((e) => changeBackgroundByMainScreen(e.OldValue, e.NewValue));
workingBeatmap.BindableWorkingBeatmapSet.BindValueChanged((e) => changeBackgroundByBeatmapSet(e.OldValue, e.NewValue));
}

/// <summary>
/// Change background by main screen.
/// </summary>
/// <param name="oldScreen">The old screen before change.</param>
/// <param name="newScreen">The new screen that will be changed.</param>
private void changeBackgroundByMainScreen(IScreen oldScreen, IScreen newScreen)
{
// Start game event
if (oldScreen is WarningScreen && newScreen is StartScreen)
{
ImageSpriteUp.Delay(250).FadeTo(1, 750, Easing.OutCubic);
}

switch (newScreen)
{
case (MainMenuScreen):
// Don't do background transition again between MainMenuScreen and StartScreen
if (oldScreen is StartScreen) break;

ChangeBackground(mainBackgroundTexture);
break;

case (StartScreen):
ChangeBackground(mainBackgroundTexture);
break;

case (PlayMenuScreen):
ChangeBackground(playMenuBackgroundTexture);
break;

case (SongSelectionScreen or PlayablePlayfieldScreen):
changeBackgroundByBeatmapSet(null, workingBeatmap.BeatmapSet);
break;
}
workingBeatmap.BindableWorkingBeatmapSet.BindValueChanged((e) => changeBackgroundByBeatmapSet(e.OldValue, e.NewValue), true);
}

/// <summary>
Expand All @@ -146,9 +104,10 @@ private void changeBackgroundByBeatmapSet(BeatmapSet oldBeatmapSet, BeatmapSet n
return;
}

if (Equals(oldBeatmapSet, newBeatmapSet)) return;
if (Equals(oldBeatmapSet, newBeatmapSet) && ImageSpriteDown.Texture != null)
return;

if (mainScreenStack.CurrentScreen is not SongSelectionScreen) return;
// if (mainScreenStack.CurrentScreen is not SongSelectionScreen) return;

Texture newBackgroundTexture;

Expand Down
7 changes: 4 additions & 3 deletions Renako.Game/Graphics/Screens/SongSelectionScreen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -962,6 +962,8 @@ private void load(TextureStore textureStore, RenakoConfigManager config, AudioMa
{
if (item.NewValue == null) return;

if (Equals(item.NewValue, item.OldValue)) return;

beatmapSwiper.BeatmapList = beatmapsCollection.GetBeatmapsFromBeatmapSet(item.NewValue).ToList();
beatmapSwiper.SetTexture(textureStore.Get(item.NewValue.CoverPath));
beatmapSwiper.SetIndex(0);
Expand Down Expand Up @@ -1054,6 +1056,8 @@ private void load(TextureStore textureStore, RenakoConfigManager config, AudioMa
{
if (item.NewValue == null) return;

if (Equals(item.NewValue, item.OldValue)) return;

Scheduler.Add(() =>
{
beatmapInfoBox.FadeColour(RenakoColour.ForDifficultyLevel(item.NewValue.DifficultyRating), 500, Easing.OutQuart);
Expand Down Expand Up @@ -1250,8 +1254,6 @@ public override bool OnExiting(ScreenExitEvent e)
songTitleContainer.MoveToX(-600, 500, Easing.OutQuart);
songListContainer.MoveToY(600, 750, Easing.OutQuart);

backgroundScreenStack.HideBackgroundVideo(true);

return base.OnExiting(e);
}

Expand All @@ -1271,7 +1273,6 @@ public override void OnResuming(ScreenTransitionEvent e)
if (backgroundScreenStack.HaveBackgroundVideo())
{
backgroundScreenStack.ShowBackgroundVideo();
backgroundScreenStack.SeekBackgroundVideo(workingBeatmap.BeatmapSet.PreviewTime);
}
}

Expand Down
7 changes: 1 addition & 6 deletions Renako.Game/Graphics/Screens/StartScreen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
using osu.Framework.Input.Events;
using osu.Framework.Screens;
using osuTK;
using Renako.Game.Audio;
using Renako.Game.Graphics.ScreenStacks;

namespace Renako.Game.Graphics.Screens;
Expand All @@ -28,11 +26,8 @@ public partial class StartScreen : RenakoScreen
[Resolved]
private LogoScreenStack logoScreenStack { get; set; }

[Resolved]
private RenakoAudioManager audioManager { get; set; }

[BackgroundDependencyLoader]
private void load(TextureStore textureStore)
private void load()
{
InternalChildren = new Drawable[]
{
Expand Down
3 changes: 3 additions & 0 deletions Renako.Game/RenakoGame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ protected override void LoadComplete()
beatmapCollectionReader.Read();
BeatmapsCollection.SortBeatmapSetsByID();

backgroundScreenStack.AdjustMaskAlpha(1);
Scheduler.AddDelayed(() => backgroundScreenStack.ResetMaskAlpha(250), 3500);

mainScreenStack.Push(new WarningScreen());
}

Expand Down

0 comments on commit 3cfa4ea

Please sign in to comment.