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/Screens/UScreenMain.pas | 278 +++++++++++++++++--------------------- 1 file changed, 121 insertions(+), 157 deletions(-) (limited to 'Game/Code/Screens/UScreenMain.pas') 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. -- cgit v1.2.3