unit UScreenOptions; interface uses UMenu, SDL, SysUtils, UDisplay, UMusic, UPliki, UIni, UThemes; type TScreenOptions = class(TMenu) public TextDescription: integer; constructor Create(Back: String); override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure InteractNext; override; procedure InteractPrev; override; procedure SetAnimationProgress(Progress: real); override; end; implementation uses UGraphic; function TScreenOptions.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down case PressedKey of SDLK_Q: begin Result := false; end; SDLK_ESCAPE: begin Ini.Save; Music.PlayBack; FadeTo(@ScreenMain); end; SDLK_RETURN: begin if SelInteraction = 0 then begin Music.PlayStart; FadeTo(@ScreenOptionsGame); end; if SelInteraction = 1 then begin Music.PlayStart; FadeTo(@ScreenOptionsGraphics); end; if SelInteraction = 2 then begin Music.PlayStart; FadeTo(@ScreenOptionsSound); end; if SelInteraction = 3 then begin Music.PlayStart; FadeTo(@ScreenOptionsLyrics); end; if SelInteraction = 4 then begin Music.PlayStart; FadeTo(@ScreenOptionsThemes); end; if SelInteraction = 5 then begin Music.PlayStart; FadeTo(@ScreenOptionsRecord); end; if SelInteraction = 6 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenMain); end; end; SDLK_LEFT: begin {case SelInteraction of 0: InteractCustom(+2); 1: InteractCustom(-1); 2: InteractCustom(-1); 3: InteractCustom(+2); 4: InteractCustom(-1); 5: InteractCustom(-1); end;} InteractPrev; end; SDLK_RIGHT: begin {case SelInteraction of 0: InteractCustom(+1); 1: InteractCustom(+1); 2: InteractCustom(-2); 3: InteractCustom(+1); 4: InteractCustom(+1); 5: InteractCustom(-2); end;} InteractNext; end; SDLK_UP: begin InteractPrev; {case SelInteraction of 0: InteractCustom(+3); 1: InteractCustom(+3); 2: InteractCustom(+3); 3: InteractCustom(-3); 4: InteractCustom(-3); 5: InteractCustom(-3); end; } end; SDLK_DOWN: begin {case SelInteraction of 0: InteractCustom(+3); 1: InteractCustom(+3); 2: InteractCustom(+3); 3: InteractCustom(-3); 4: InteractCustom(-3); 5: InteractCustom(-3); end; } InteractNext; end; end; end; end; constructor TScreenOptions.Create(Back: String); var I: integer; begin inherited Create(Back); // Game { AddButton(225, 100 + 0*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); AddButtonText(11, 10, 'Game');} // Graphics { AddButton(225, 100 + 1*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); AddButtonText(11, 10, 'Graphics'); // Sound AddButton(225, 100 + 2*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); AddButtonText(11, 10, 'Sound'); // Lyrics AddButton(225, 100 + 3*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); AddButtonText(11, 10, 'Lyrics'); // Themes AddButton(225, 100 + 4*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); AddButtonText(11, 10, 'Themes'); // Exit AddButton(225, 100 + 6*60, 350, 50, Skin.Exit);} AddBackground(Theme.Options.Background.Tex); AddButton(Theme.Options.ButtonGame); AddButtonText(14, 20, Theme.Options.Description[0]); AddButton(Theme.Options.ButtonGraphics); AddButtonText(14, 20, Theme.Options.Description[1]); AddButton(Theme.Options.ButtonSound); AddButtonText(14, 20, Theme.Options.Description[2]); AddButton(Theme.Options.ButtonLyrics); AddButtonText(14, 20, Theme.Options.Description[3]); AddButton(Theme.Options.ButtonThemes); AddButtonText(14, 20, Theme.Options.Description[4]); AddButton(Theme.Options.ButtonRecord); AddButtonText(14, 20, Theme.Options.Description[5]); AddButton(Theme.Options.ButtonExit); AddButtonText(14, 20, Theme.Options.Description[6]); for I := 0 to High(Theme.Options.Static) do AddStatic(Theme.Options.Static[I]); for I := 0 to High(Theme.Options.Text) do AddText(Theme.Options.Text[I]); TextDescription := AddText(Theme.Options.TextDescription); Interaction := 0; end; procedure TScreenOptions.onShow; begin // end; procedure TScreenOptions.InteractNext; begin inherited InteractNext; Text[TextDescription].Text := Theme.Options.Description[Interaction]; end; procedure TScreenOptions.InteractPrev; begin inherited InteractPrev; Text[TextDescription].Text := Theme.Options.Description[Interaction]; end; procedure TScreenOptions.SetAnimationProgress(Progress: real); begin Button[0].Texture.ScaleW := Progress; Button[1].Texture.ScaleW := Progress; Button[2].Texture.ScaleW := Progress; Button[3].Texture.ScaleW := Progress; Button[4].Texture.ScaleW := Progress; Button[5].Texture.ScaleW := Progress; end; end.