diff options
author | mogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2008-08-25 19:46:45 +0000 |
---|---|---|
committer | mogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2008-08-25 19:46:45 +0000 |
commit | 59b053bc8a9e0b52168b73ca86296e6fe890f522 (patch) | |
tree | d5438c7afaf89bd33a52a18d77ad4d929af9cf99 /Game/Code/Screens | |
parent | 8bbb53fffcd1959a29b5a040c867ed371e88483b (diff) | |
download | usdx-59b053bc8a9e0b52168b73ca86296e6fe890f522.tar.gz usdx-59b053bc8a9e0b52168b73ca86296e6fe890f522.tar.xz usdx-59b053bc8a9e0b52168b73ca86296e6fe890f522.zip |
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
Diffstat (limited to 'Game/Code/Screens')
-rw-r--r-- | Game/Code/Screens/UScreenMain.pas | 278 | ||||
-rw-r--r-- | Game/Code/Screens/UScreenOptionsSound.pas | 107 | ||||
-rw-r--r-- | Game/Code/Screens/UScreenScore.pas | 6 | ||||
-rw-r--r-- | Game/Code/Screens/UScreenSong.pas | 7 |
4 files changed, 195 insertions, 203 deletions
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; |