From 59b053bc8a9e0b52168b73ca86296e6fe890f522 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 25 Aug 2008 19:46:45 +0000 Subject: Added: Option for background music in sound options (affects UIni too) Added: New language string SING_OPTIONS_SOUND_BACKGROUNDMUSIC Added: CC licensed music loop Improved: Options positions via Deluxe theme (first pass, next will follow) Improved: Code beautified in UScreenMain git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1290 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 26 +- Game/Code/Classes/UMusic.pas | 31 +- Game/Code/Classes/UThemes.pas | 2 + Game/Code/Screens/UScreenMain.pas | 278 +++++------ Game/Code/Screens/UScreenOptionsSound.pas | 107 +++-- Game/Code/Screens/UScreenScore.pas | 6 + Game/Code/Screens/UScreenSong.pas | 7 +- Languages/English.ini | 1 + Languages/German.ini | 1 + Sounds/Bebeto_-_Loop010.mp3 | Bin 0 -> 157920 bytes Themes/Deluxe.ini | 762 +++++++++++++++--------------- 11 files changed, 629 insertions(+), 592 deletions(-) create mode 100644 Sounds/Bebeto_-_Loop010.mp3 diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index c66a10c7..b286c917 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -41,8 +41,8 @@ type //Options - TVisualizerOption = (voOff, voWhenNoVideo, voOn); - + TVisualizerOption = (voOff, voWhenNoVideo, voOn); + TBackgroundMusicOption = (bmoOff, bmoOn); TIni = class private function RemoveFileExt(FullName: string): string; @@ -113,7 +113,8 @@ type Theme: integer; SkinNo: integer; Color: integer; - + BackgroundMusicOption:integer; + // Record InputDeviceConfig: array of TInputDeviceConfig; @@ -168,6 +169,9 @@ const IDepth: array[0..1] of string = ('16 bit', '32 bit'); IVisualizer: array[0..2] of string = ('Off', 'WhenNoVideo','On'); + IBackgroundMusic: array[0..1] of string = ('Off', 'On'); + + ITextureSize: array[0..2] of string = ('128', '256', '512'); ITextureSizeVals: array[0..2] of integer = ( 128, 256, 512); @@ -716,6 +720,11 @@ begin // || VisualizerOption := TVisualizerOption(GetArrayIndex(IVisualizer, IniFile.ReadString('Graphics', 'Visualization', 'Off'))); VisualizerOption := GetArrayIndex(IVisualizer, IniFile.ReadString('Graphics', 'Visualization', 'Off')); +{** + * Background music + *} + BackgroundMusicOption := GetArrayIndex(IBackgroundMusic, IniFile.ReadString('Sound', 'BackgroundMusic', 'Off')); + // EffectSing EffectSing := GetArrayIndex(IEffectSing, IniFile.ReadString('Advanced', 'EffectSing', 'On')); @@ -811,6 +820,9 @@ begin // AudioOutputBufferSize IniFile.WriteString('Sound', 'AudioOutputBufferSize', IAudioOutputBufferSize[AudioOutputBufferSizeIndex]); + // Background music + IniFile.WriteString('Sound', 'BackgroundMusic', IBackgroundMusic[BackgroundMusicOption]); + // Song Preview IniFile.WriteString('Sound', 'PreviewVolume', IPreviewVolume[PreviewVolume]); @@ -820,11 +832,11 @@ begin // SavePlayback IniFile.WriteString('Sound', 'SavePlayback', ISavePlayback[SavePlayback]); - // VoicePasstrough - IniFile.WriteString('Sound', 'VoicePassthrough', IVoicePassthrough[VoicePassthrough]); + // VoicePasstrough + IniFile.WriteString('Sound', 'VoicePassthrough', IVoicePassthrough[VoicePassthrough]); - // Lyrics Font - IniFile.WriteString('Lyrics', 'LyricsFont', ILyricsFont[LyricsFont]); + // Lyrics Font + IniFile.WriteString('Lyrics', 'LyricsFont', ILyricsFont[LyricsFont]); // Lyrics Effect IniFile.WriteString('Lyrics', 'LyricsEffect', ILyricsEffect[LyricsEffect]); diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index f3474e30..4090bd2f 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -503,6 +503,8 @@ type procedure LoadSounds(); procedure UnloadSounds(); + procedure StartBgMusic(); + procedure PauseBgMusic(); // TODO //function AddSound(Filename: string): integer; //procedure RemoveSound(ID: integer); @@ -536,6 +538,7 @@ implementation uses sysutils, math, + UIni, UMain, UCommandLine, URecord, @@ -709,7 +712,6 @@ begin // Load in-game sounds SoundLib := TSoundLibrary.Create; - AudioPlayback.PlaySound(SoundLib.BGMusic); end; procedure InitializeVideo(); @@ -860,9 +862,6 @@ end; procedure TSoundLibrary.LoadSounds(); begin - //Log.LogStatus('Loading Sounds', 'Music Initialize'); - //Log.BenchmarkStart(4); - UnloadSounds(); Start := AudioPlayback.OpenSound(SoundPath + 'Common start.mp3'); @@ -872,11 +871,10 @@ begin Option := AudioPlayback.OpenSound(SoundPath + 'option change col.mp3'); Click := AudioPlayback.OpenSound(SoundPath + 'rimshot022b.mp3'); - //BGMusic := AudioPlayback.OpenSound(SoundPath + '18982__bebeto__Loop010_ambient.mp3'); - //BGMusic.SetLoop(true); + BGMusic := AudioPlayback.OpenSound(SoundPath + 'Bebeto_-_Loop010.mp3'); - //Log.BenchmarkEnd(4); - //Log.LogBenchmark('--> Loading Sounds', 4); + if (BGMusic <> nil) then + BGMusic.Loop := True; end; procedure TSoundLibrary.UnloadSounds(); @@ -900,6 +898,23 @@ begin end; *) +procedure TSoundLibrary.StartBgMusic(); +begin + if (TBackgroundMusicOption(Ini.BackgroundMusicOption) = bmoOn) and + (Soundlib.BGMusic <> nil) and not (Soundlib.BGMusic.Status = ssPlaying) then + begin + AudioPlayback.PlaySound(Soundlib.BGMusic); + end; +end; + +procedure TSoundLibrary.PauseBgMusic(); +begin + If (Soundlib.BGMusic <> nil) then + begin + Soundlib.BGMusic.Pause; + end; +end; + { TVoiceRemoval } procedure TVoiceRemoval.Callback(Buffer: PChar; BufSize: integer); diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 46327b7c..8a31b21a 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -408,6 +408,7 @@ type TThemeOptionsSound = class(TThemeBasic) SelectMicBoost: TThemeSelectSlide; + SelectBackgroundMusic: TThemeSelectSlide; SelectClickAssist: TThemeSelectSlide; SelectBeatClick: TThemeSelectSlide; SelectThreshold: TThemeSelectSlide; @@ -1159,6 +1160,7 @@ begin // Options Sound ThemeLoadBasic(OptionsSound, 'OptionsSound'); + ThemeLoadSelectSlide(OptionsSound.SelectBackgroundMusic, 'OptionsSoundSelectBackgroundMusic'); ThemeLoadSelectSlide(OptionsSound.SelectMicBoost, 'OptionsSoundSelectMicBoost'); ThemeLoadSelectSlide(OptionsSound.SelectClickAssist, 'OptionsSoundSelectClickAssist'); ThemeLoadSelectSlide(OptionsSound.SelectBeatClick, 'OptionsSoundSelectBeatClick'); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 108f811c..4dbdaaa1 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -16,25 +16,22 @@ uses UFiles, SysUtils, UThemes; - //ULCD, //TODO: maybe LCD Support as Plugin? - //ULight //TODO: maybe Light Support as Plugin? type TScreenMain = class(TMenu) - public - TextDescription: integer; - TextDescriptionLong: integer; - - constructor Create; override; - function ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; override; - procedure onShow; override; - procedure InteractNext; override; - procedure InteractPrev; override; - procedure InteractInc; override; - procedure InteractDec; override; - //procedure UpdateLCD; //TODO: maybe LCD Support as Plugin? - procedure SetAnimationProgress(Progress: real); override; - //function Draw: boolean; override; + public + TextDescription: integer; + TextDescriptionLong: integer; + + constructor Create; override; + function ParseInput(PressedKey: cardinal; CharCode: widechar; + PressedDown: boolean): boolean; override; + procedure onShow; override; + procedure InteractNext; override; + procedure InteractPrev; override; + procedure InteractInc; override; + procedure InteractDec; override; + procedure SetAnimationProgress(Progress: real); override; end; implementation @@ -46,170 +43,158 @@ uses UTexture, USongs, Textgl, - //opengl, ULanguage, UParty, UDLLManager, UScreenCredits, USkins; - -function TScreenMain.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; +function TScreenMain.ParseInput(PressedKey: cardinal; CharCode: widechar; + PressedDown: boolean): boolean; var - SDL_ModState: Word; + SDL_ModState: word; begin - Result := true; - - SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT - + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + Result := True; - //Deactivate Credits when Key is pressed -// if Credits_Visible then -// begin -// Credits_Visible := False; -// exit; -// end; + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); - If (PressedDown) Then + if (PressedDown) then begin // Key Down - // check normal keys + // check normal keys case WideCharUpperCase(CharCode)[1] of 'Q': - begin - Result := false; - Exit; - end; + begin + Result := False; + Exit; + end; 'C': + begin + if (SDL_ModState = KMOD_LALT) then begin - if (SDL_ModState = KMOD_LALT) then - begin - //Credits_Y := 600; - //Credits_Alpha := 0; - //Credits_Visible := True; - FadeTo(@ScreenCredits , SoundLib.Start ); - Exit; - end; + FadeTo(@ScreenCredits, SoundLib.Start); + Exit; end; + end; 'M': + begin + if (Ini.Players >= 1) and (Length(DLLMan.Plugins) >= 1) then begin - if (Ini.Players >= 1) AND (Length(DLLMan.Plugins)>=1) then - begin - FadeTo(@ScreenPartyOptions, SoundLib.Start); - Exit; - end; + FadeTo(@ScreenPartyOptions, SoundLib.Start); + Exit; end; + end; 'S': - begin - FadeTo(@ScreenStatMain, SoundLib.Start); - Exit; - end; + begin + FadeTo(@ScreenStatMain, SoundLib.Start); + Exit; + end; 'E': - begin - FadeTo(@ScreenEdit, SoundLib.Start); - Exit; - end; + begin + FadeTo(@ScreenEdit, SoundLib.Start); + Exit; + end; end; // check special keys case PressedKey of SDLK_ESCAPE, - SDLK_BACKSPACE : - begin - Result := False; - end; + SDLK_BACKSPACE: + begin + Result := False; + end; SDLK_RETURN: + begin + //Solo + if (Interaction = 0) then begin - //Solo - if (Interaction = 0) then + if (Songs.SongList.Count >= 1) then begin - if (Songs.SongList.Count >= 1) then - begin - if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; - if (Ini.Players = 4) then PlayersPlay := 6; - - ScreenName.Goto_SingScreen := False; - FadeTo(@ScreenName, SoundLib.Start); - end - else //show error message - ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); - end; + if (Ini.Players >= 0) and (Ini.Players <= 3) then + PlayersPlay := Ini.Players + 1; + if (Ini.Players = 4) then + PlayersPlay := 6; + + ScreenName.Goto_SingScreen := False; + FadeTo(@ScreenName, SoundLib.Start); + end + else //show error message + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); + end; - //Multi - if Interaction = 1 then + //Multi + if Interaction = 1 then + begin + if (Songs.SongList.Count >= 1) then begin - if (Songs.SongList.Count >= 1) then + if (Length(DLLMan.Plugins) >= 1) then begin - if (Length(DLLMan.Plugins)>=1) then - begin - FadeTo(@ScreenPartyOptions, SoundLib.Start); - end - else //show error message, No Plugins Loaded - ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_PLUGINS')); + FadeTo(@ScreenPartyOptions, SoundLib.Start); end - else //show error message, No Songs Loaded - ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); - end; + else //show error message, No Plugins Loaded + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_PLUGINS')); + end + else //show error message, No Songs Loaded + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); + end; - //Stats - if Interaction = 2 then - begin - FadeTo(@ScreenStatMain, SoundLib.Start); - end; + //Stats + if Interaction = 2 then + begin + FadeTo(@ScreenStatMain, SoundLib.Start); + end; - //Editor - if Interaction = 3 then - begin - FadeTo(@ScreenEdit, SoundLib.Start); - end; + //Editor + if Interaction = 3 then + begin + FadeTo(@ScreenEdit, SoundLib.Start); + end; - //Options - if Interaction = 4 then - begin - FadeTo(@ScreenOptions, SoundLib.Start); - end; + //Options + if Interaction = 4 then + begin + FadeTo(@ScreenOptions, SoundLib.Start); + end; - //Exit - if Interaction = 5 then - begin - Result := false; - end; + //Exit + if Interaction = 5 then + begin + Result := False; end; - // Up and Down could be done at the same time, - // but I don't want to declare variables inside - // functions like this one, called so many times - SDLK_DOWN: InteractInc; - SDLK_UP: InteractDec; - SDLK_RIGHT: InteractNext; - SDLK_LEFT: InteractPrev; + end; + {** + * Up and Down could be done at the same time, + * but I don't want to declare variables inside + * functions like this one, called so many times + *} + SDLK_DOWN: InteractInc; + SDLK_UP: InteractDec; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; end; end else // Key Up case PressedKey of - SDLK_RETURN : - begin - end; + SDLK_RETURN: + begin + end; end; end; constructor TScreenMain.Create; -var - I: integer; begin inherited Create; - - //---------------- - //Attention ^^: - //New Creation Order needed because of LoadFromTheme - //and Button Collections. - //At First Custom Texts and Statics - //Then LoadFromTheme - //after LoadFromTheme the Buttons and Selects - //---------------- - - +{** + * Attention ^^: + * New Creation Order needed because of LoadFromTheme + * and Button Collections. + * At First Custom Texts and Statics + * Then LoadFromTheme + * after LoadFromTheme the Buttons and Selects + *} TextDescription := AddText(Theme.Main.TextDescription); TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); @@ -225,13 +210,13 @@ begin Interaction := 0; end; -procedure TScreenMain.onShow; //TODO: maybe LCD Support as Plugin? +procedure TScreenMain.onShow; begin inherited; - (* - LCD.WriteText(1, ' Choose mode: '); - UpdateLCD; - *) +{** + * Start background music + *} + SoundLib.StartBgMusic; end; procedure TScreenMain.InteractNext; @@ -239,8 +224,6 @@ begin inherited InteractNext; Text[TextDescription].Text := Theme.Main.Description[Interaction]; Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; - //UpdateLCD; - //Light.LightOne(1, 200); end; procedure TScreenMain.InteractPrev; @@ -248,8 +231,6 @@ begin inherited InteractPrev; Text[TextDescription].Text := Theme.Main.Description[Interaction]; Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; - //UpdateLCD; - //Light.LightOne(0, 200); end; procedure TScreenMain.InteractDec; @@ -257,36 +238,19 @@ begin inherited InteractDec; Text[TextDescription].Text := Theme.Main.Description[Interaction]; Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; - //UpdateLCD; - //Light.LightOne(0, 200); end; procedure TScreenMain.InteractInc; begin inherited InteractInc; - Text[TextDescription].Text := Theme.Main.Description[Interaction]; + Text[TextDescription].Text := Theme.Main.Description[Interaction]; Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; - //UpdateLCD; - //Light.LightOne(1, 200); end; -(* -procedure TScreenMain.UpdateLCD; //TODO: maybe LCD Support as Plugin? -begin - - case Interaction of - 0: LCD.WriteText(2, ' sing '); - 1: LCD.WriteText(2, ' editor '); - 2: LCD.WriteText(2, ' options '); - 3: LCD.WriteText(2, ' exit '); - end - -end; -*) - procedure TScreenMain.SetAnimationProgress(Progress: real); begin Static[0].Texture.ScaleW := Progress; Static[0].Texture.ScaleH := Progress; end; + end. diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index 3a457b7a..9c602788 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -13,90 +13,112 @@ uses type TScreenOptionsSound = class(TMenu) - public - constructor Create; override; - function ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; override; - procedure onShow; override; + public + constructor Create; override; + function ParseInput(PressedKey: cardinal; CharCode: widechar; + PressedDown: boolean): boolean; override; + procedure onShow; override; end; implementation uses UGraphic, SysUtils; -function TScreenOptionsSound.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; +function TScreenOptionsSound.ParseInput(PressedKey: cardinal; + CharCode: widechar; PressedDown: boolean): boolean; begin - Result := true; - If (PressedDown) Then + Result := True; + if (PressedDown) then begin // Key Down - // check normal keys + // check normal keys case WideCharUpperCase(CharCode)[1] of 'Q': - begin - Result := false; - Exit; - end; + begin + Result := False; + Exit; + end; end; - + // check special keys case PressedKey of SDLK_ESCAPE, - SDLK_BACKSPACE : + SDLK_BACKSPACE: + begin + // Escape -> save nothing - just leave this screen + AudioPlayback.PlaySound(SoundLib.Back); + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 8 then begin - // Escape -> save nothing - just leave this screen - + Ini.Save; AudioPlayback.PlaySound(SoundLib.Back); FadeTo(@ScreenOptions); end; - SDLK_RETURN: - begin - if SelInteraction = 7 then begin - Ini.Save; - AudioPlayback.PlaySound(SoundLib.Back); - FadeTo(@ScreenOptions); - end; - end; + end; SDLK_DOWN: InteractNext; - SDLK_UP : + SDLK_UP: InteractPrev; SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction < 8) then begin - if (SelInteraction >= 0) and (SelInteraction <= 7) then begin - AudioPlayback.PlaySound(SoundLib.Option); - InteractInc; - end; + AudioPlayback.PlaySound(SoundLib.Option); + InteractInc; end; + end; SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction < 8) then begin - if (SelInteraction >= 0) and (SelInteraction <= 7) then begin - AudioPlayback.PlaySound(SoundLib.Option); - InteractDec; - end; + AudioPlayback.PlaySound(SoundLib.Option); + InteractDec; end; + end; end; end; + +{** + * Actually this one isn't pretty - but it does the trick of + * turning the background music on/off in "real time" + * bgm = background music + * TODO: - Fetching the SelectInteraction via something more descriptive + * - Obtaining the current value of a select is imho ugly + *} + if (SelInteraction = 1) then + begin + if TBackgroundMusicOption(SelectsS[1].SelectedOption) = bmoOn then + SoundLib.StartBgMusic + else + SoundLib.PauseBgMusic; + end; + end; constructor TScreenOptionsSound.Create; -//var -// I: integer; // Auto Removed, Unused Variable begin inherited Create; LoadFromTheme(Theme.OptionsSound); - AddSelectSlide(Theme.OptionsSound.SelectSlideVoicePassthrough, Ini.VoicePassthrough, IVoicePassthrough); - - AddSelectSlide(Theme.OptionsSound.SelectMicBoost, Ini.MicBoost, IMicBoost); // TODO - This need moving to ScreenOptionsRecord + AddSelectSlide(Theme.OptionsSound.SelectSlideVoicePassthrough, + Ini.VoicePassthrough, IVoicePassthrough); + AddSelectSlide(Theme.OptionsSound.SelectBackgroundMusic, + Ini.BackgroundMusicOption, IBackgroundMusic); + AddSelectSlide(Theme.OptionsSound.SelectMicBoost, Ini.MicBoost, IMicBoost); + // TODO: - MicBoost needs to be moved to ScreenOptionsRecord AddSelectSlide(Theme.OptionsSound.SelectClickAssist, Ini.ClickAssist, IClickAssist); AddSelectSlide(Theme.OptionsSound.SelectBeatClick, Ini.BeatClick, IBeatClick); AddSelectSlide(Theme.OptionsSound.SelectThreshold, Ini.ThresholdIndex, IThreshold); - //Song Preview - AddSelectSlide(Theme.OptionsSound.SelectSlidePreviewVolume, Ini.PreviewVolume, IPreviewVolume); - AddSelectSlide(Theme.OptionsSound.SelectSlidePreviewFading, Ini.PreviewFading, IPreviewFading); + AddSelectSlide(Theme.OptionsSound.SelectSlidePreviewVolume, + Ini.PreviewVolume, IPreviewVolume); + AddSelectSlide(Theme.OptionsSound.SelectSlidePreviewFading, + Ini.PreviewFading, IPreviewFading); AddButton(Theme.OptionsSound.ButtonExit); - if (Length(Button[0].Text)=0) then + if (Length(Button[0].Text) = 0) then AddButtonText(14, 20, Theme.Options.Description[7]); Interaction := 0; @@ -105,7 +127,6 @@ end; procedure TScreenOptionsSound.onShow; begin inherited; - Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 57c37283..ab6c020d 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -236,6 +236,12 @@ var V: array[1..6] of boolean; // visibility array begin + +{** + * Turn backgroundmusic on + *} + SoundLib.StartBgMusic; + inherited; // all statics / texts are loaded at start - so that we have them all even if we change the amount of players diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 5e374568..be1320f2 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -23,8 +23,6 @@ uses UThemes, UTexture, ULanguage, - //ULCD, //TODO: maybe LCD Support as Plugin? - //ULight, //TODO: maybe Light Support as Plugin? USong, UIni; @@ -792,7 +790,6 @@ end; procedure TScreenSong.GenerateThumbnails(); var I: Integer; - OldTextureLimit: integer; CoverButtonIndex: integer; CoverButton: TButton; CoverName: string; @@ -1340,6 +1337,10 @@ end; procedure TScreenSong.onShow; begin inherited; +{** + * Pause background music, so we can play it again on scorescreen + *} + SoundLib.PauseBgMusic; AudioPlayback.Stop; diff --git a/Languages/English.ini b/Languages/English.ini index 62b85eb6..3ab987fd 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -57,6 +57,7 @@ SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size SING_OPTIONS_SOUND_WHEREAMI=Options Sound SING_OPTIONS_SOUND_DESC=sound settings SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback +SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music SING_OPTIONS_SOUND_MIC_BOOST=Mic boost SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist SING_OPTIONS_SOUND_BEAT_CLICK=Beat click diff --git a/Languages/German.ini b/Languages/German.ini index 167f6d32..1db702dc 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -57,6 +57,7 @@ SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videogr SING_OPTIONS_SOUND_WHEREAMI=Optionen Sound SING_OPTIONS_SOUND_DESC=Einstellungen für den Sound SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofon Wiedergabe +SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hintergrundmusik SING_OPTIONS_SOUND_MIC_BOOST=Mic-Anhebung SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click diff --git a/Sounds/Bebeto_-_Loop010.mp3 b/Sounds/Bebeto_-_Loop010.mp3 new file mode 100644 index 00000000..18c2fcd6 Binary files /dev/null and b/Sounds/Bebeto_-_Loop010.mp3 differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 4a10fa04..e1edbd04 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -2457,7 +2457,7 @@ Tex = IconOption Type = Colorized [OptionsText1] -X = 93 +X = 95 Y = 135 Color = White Font = 0 @@ -2466,7 +2466,7 @@ Text = SING_OPTIONS Align = 0 [OptionsText2] -X = 93 +X = 95 Y = 175 Color = ColorLightest Font = 0 @@ -2475,7 +2475,7 @@ Align = 0 Text = SING_OPTIONS_DESC [OptionsTextDescription] -X = 93 +X = 95 Y = 195 Color = White Font = 0 @@ -2787,11 +2787,32 @@ Tex = OptionsBG [OptionsGameStatic1] X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsGameText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsGameText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_GAME_DESC + +[OptionsGameText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_GAME_WHEREAMI [OptionsGameStatic2] X = 0 @@ -2817,66 +2838,44 @@ ReflectionSpacing = 2 [OptionsGameStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsGameText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 +Text = SING_LEGEND_NAVIGATE [OptionsGameStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsGameText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsGameText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_GAME_WHEREAMI - -[OptionsGameText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_GAME_DESC - -[OptionsGameText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsGameText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 Text = SING_LEGEND_ESC [OptionsGameSelectPlayers] @@ -3024,13 +3023,34 @@ Texts = 5 Tex = OptionsBG [OptionsGraphicsStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsGraphicsText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsGraphicsText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_GRAPHICS_DESC + +[OptionsGraphicsText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_GRAPHICS_WHEREAMI [OptionsGraphicsStatic2] X = 0 @@ -3056,67 +3076,46 @@ ReflectionSpacing = 2 [OptionsGraphicsStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsGraphicsText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 20 [OptionsGraphicsStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 +Z = 0.5 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsGraphicsText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsGraphicsText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_GRAPHICS_WHEREAMI - -[OptionsGraphicsText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_GRAPHICS_DESC - -[OptionsGraphicsText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsGraphicsText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 Text = SING_LEGEND_ESC +Reflection = 1 +ReflectionSpacing = 20 [OptionsGraphicsSelectSlideResolution] Text = SING_OPTIONS_GRAPHICS_RESOLUTION @@ -3263,13 +3262,34 @@ Texts = 5 Tex = OptionsBG [OptionsSoundStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsSoundText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsSoundText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_SOUND_DESC + +[OptionsSoundText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_SOUND_WHEREAMI [OptionsSoundStatic2] X = 0 @@ -3295,67 +3315,45 @@ ReflectionSpacing = 2 [OptionsSoundStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsSoundText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 20 [OptionsSoundStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsSoundText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsSoundText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_SOUND_WHEREAMI - -[OptionsSoundText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_SOUND_DESC - -[OptionsSoundText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsSoundText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 Text = SING_LEGEND_ESC +Reflection = 1 +ReflectionSpacing = 20 [OptionsSoundSelectVoicePassthrough] Tex = MainBar @@ -3377,12 +3375,32 @@ SBGDColor = Gray STColor = White STDColor = GrayDark +[OptionsSoundSelectBackgroundMusic] +Tex = MainBar +TexSBG = SelectBG +Text = SING_OPTIONS_SOUND_BACKGROUNDMUSIC +X = 70 +Y = 135 +W = 230 +H = 40 +SkipX = 10 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + [OptionsSoundSelectMicBoost] Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_MIC_BOOST X = 70 -Y = 135 +Y = 185 W = 230 H = 40 SkipX = 10 @@ -3402,7 +3420,7 @@ Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_CLICK_ASSIST X = 70 -Y = 185 +Y = 235 W = 230 H = 40 SkipX = 10 @@ -3422,7 +3440,7 @@ Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_BEAT_CLICK X = 70 -Y = 235 +Y = 285 W = 230 H = 40 SkipX = 10 @@ -3442,7 +3460,7 @@ Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_THRESHOLD X = 70 -Y = 285 +Y = 335 W = 230 H = 40 SkipX = 10 @@ -3462,7 +3480,7 @@ Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_PREVIEWVOLUME X = 70 -Y = 335 +Y = 385 W = 230 H = 40 SkipX = 10 @@ -3482,7 +3500,7 @@ Tex = MainBar TexSBG = SelectBG Text = SING_OPTIONS_SOUND_PREVIEWFADING X = 70 -Y = 385 +Y = 435 W = 230 H = 40 SkipX = 10 @@ -3499,9 +3517,9 @@ STDColor = GrayDark [OptionsSoundButtonExit] X = 40 -Y = 415 +Y = 465 W = 230 -H = 70 +H = 50 Tex = Button Color = ColorLight DColor = ColorDark @@ -3516,13 +3534,34 @@ Texts = 1 Tex = OptionsBG [OptionsLyricsStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsLyricsText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsLyricsText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_LYRICS_DESC + +[OptionsLyricsText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_LYRICS_WHEREAMI [OptionsLyricsStatic2] X = 0 @@ -3548,67 +3587,45 @@ ReflectionSpacing = 2 [OptionsLyricsStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsLyricsText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 20 [OptionsLyricsStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsLyricsText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsLyricsText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_LYRICS_WHEREAMI - -[OptionsLyricsText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_LYRICS_DESC - -[OptionsLyricsText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsLyricsText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 Text = SING_LEGEND_ESC +Reflection = 1 +ReflectionSpacing = 20 [OptionsLyricsSelectLyricsFont] Tex = MainBar @@ -3689,13 +3706,34 @@ Texts = 5 Tex = OptionsBG [OptionsThemesStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsThemesText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsThemesText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_THEMES_DESC + +[OptionsThemesText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_THEMES_WHEREAMI [OptionsThemesStatic2] X = 0 @@ -3721,66 +3759,44 @@ ReflectionSpacing = 2 [OptionsThemesStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsThemesText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 +Text = SING_LEGEND_NAVIGATE [OptionsThemesStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsThemesText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsThemesText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_THEMES_WHEREAMI - -[OptionsThemesText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_THEMES_DESC - -[OptionsThemesText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsThemesText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 Text = SING_LEGEND_ESC [OptionsThemesSelectTheme] @@ -3862,13 +3878,34 @@ Texts = 5 Tex = OptionsBG [OptionsRecordStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsRecordText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsRecordText2] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_RECORD_DESC + +[OptionsRecordText3] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_RECORD_WHEREAMI [OptionsRecordStatic2] X = 0 @@ -3894,66 +3931,44 @@ ReflectionSpacing = 2 [OptionsRecordStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsRecordText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 +Text = SING_LEGEND_NAVIGATE [OptionsRecordStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsRecordText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsRecordText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_RECORD_WHEREAMI - -[OptionsRecordText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_RECORD_DESC - -[OptionsRecordText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsRecordText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 Text = SING_LEGEND_ESC [OptionsRecordSelectSlideCard] @@ -4035,13 +4050,34 @@ Texts = 5 Tex = OptionsBG [OptionsAdvancedStatic1] -X = 40 +X = 65 Y = 22 -W = 27 -H = 27 +W = 25 +H = 23 Color = White Tex = IconOption -Type = Colorized +Type = Transparent + +[OptionsAdvancedText1] +X = 95 +Y = 5 +Color = White +Size = 18 +Text = SING_OPTIONS + +[OptionsAdvancedText3] +X = 95 +Y = 45 +Color = ColorLightest +Size = 10 +Text = SING_OPTIONS_ADVANCED_DESC + +[OptionsAdvancedText2] +X = 95 +Y = 65 +Color = White +Size = 10 +Text = SING_OPTIONS_ADVANCED_WHEREAMI [OptionsAdvancedStatic2] X = 0 @@ -4067,66 +4103,44 @@ ReflectionSpacing = 2 [OptionsAdvancedStatic4] X = 260 -Y = 552 -W = 24 -H = 23 +Y = 545 +W = 32 +H = 30 Tex = ButtonNavi Color = White Type = Transparent -Style = 5 +Reflection = 1 +ReflectionSpacing = 2 + +[OptionsAdvancedText4] +X = 300 +Y = 548 +Z = 0.5 +Color = Black +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 +Text = SING_LEGEND_NAVIGATE [OptionsAdvancedStatic5] -X = 388 -Y = 552 +X = 400 +Y = 545 W = 32 -H = 23 +H = 30 Tex = ButtonEsc Color = White Type = Transparent - -[OptionsAdvancedText1] -X = 70 -Y = 6 -Color = White -Font = 0 -Size = 20 -Text = SING_OPTIONS -Align = 0 - -[OptionsAdvancedText2] -X = 238 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 2 -Text = SING_OPTIONS_ADVANCED_WHEREAMI - -[OptionsAdvancedText3] -X = 70 -Y = 53 -Color = White -Font = 0 -Size = 10 -Align = 0 -Text = SING_OPTIONS_ADVANCED_DESC - -[OptionsAdvancedText4] -X = 294 -Y = 552 -Color = Black -Font = 0 -Size = 7 -Align = 0 -Text = SING_LEGEND_NAVIGATE +Reflection = 1 +ReflectionSpacing = 2 [OptionsAdvancedText5] -X = 418 -Y = 552 +X = 440 +Y = 548 +Z = 0.5 Color = Black -Font = 0 -Size = 7 -Align = 0 +Size = 8 +Reflection = 1 +ReflectionSpacing = 20 Text = SING_LEGEND_ESC #########unused at the moment######### -- cgit v1.2.3