From 46bb010ca7c5eb04551c030105f9999ca80e472f Mon Sep 17 00:00:00 2001 From: tobigun Date: Sun, 8 Jun 2008 15:33:48 +0000 Subject: - set svn:eol-style to native - removed some svn:executable properties from non-executable files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1144 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenStatDetail.pas | 514 ++++++++++++++++---------------- 1 file changed, 257 insertions(+), 257 deletions(-) (limited to 'Game/Code/Screens/UScreenStatDetail.pas') diff --git a/Game/Code/Screens/UScreenStatDetail.pas b/Game/Code/Screens/UScreenStatDetail.pas index c5c8245f..98faed03 100644 --- a/Game/Code/Screens/UScreenStatDetail.pas +++ b/Game/Code/Screens/UScreenStatDetail.pas @@ -1,257 +1,257 @@ -unit UScreenStatDetail; - -interface - -{$I switches.inc} - -uses - UMenu, SDL, SysUtils, UDisplay, UMusic, UIni, UThemes; - -type - TScreenStatDetail = class(TMenu) - public - Typ: Byte; - Page: CardinaL; - Count: Byte; - Reversed: Boolean; - - TotEntrys: Cardinal; - TotPages: Cardinal; - - - constructor Create; override; - function ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; override; - procedure onShow; override; - procedure SetAnimationProgress(Progress: real); override; - - procedure SetTitle; - Procedure SetPage(NewPage: Cardinal); - end; - -implementation - -{Stat Screens: - 0 - Best Scores - 1 - Best Singers - 2 - Most sung Songs - 3 - Most popular Band -} - -uses UGraphic, UDataBase, ULanguage, math, ULog; - -function TScreenStatDetail.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; -begin - Result := true; - If (PressedDown) Then - begin // Key Down - // check normal keys - case WideCharUpperCase(CharCode)[1] of - 'Q': - begin - Result := false; - Exit; - end; - end; - - // check special keys - case PressedKey of - SDLK_ESCAPE, - SDLK_BACKSPACE : - begin - AudioPlayback.PlaySound(SoundLib.Back); - FadeTo(@ScreenStatMain); - end; - SDLK_RETURN: - begin - if Interaction = 0 then begin - //Next Page - SetPage(Page+1); - end; - - if Interaction = 1 then begin - //Previous Page - if (Page > 0) then - SetPage(Page-1); - end; - - if Interaction = 2 then begin - //Reverse Order - Reversed := not Reversed; - SetPage(Page); - end; - - if Interaction = 3 then begin - AudioPlayback.PlaySound(SoundLib.Back); - FadeTo(@ScreenStatMain); - end; - end; - SDLK_LEFT: - begin - InteractPrev; - end; - SDLK_RIGHT: - begin - InteractNext; - end; - SDLK_UP: - begin - InteractPrev; - end; - SDLK_DOWN: - begin - InteractNext; - end; - end; - end; -end; - -constructor TScreenStatDetail.Create; -var - I: integer; -begin - inherited Create; - - for I := 0 to High(Theme.StatDetail.TextList) do - AddText(Theme.StatDetail.TextList[I]); - - Count := Length(Theme.StatDetail.TextList); - - AddText(Theme.StatDetail.TextDescription); - AddText(Theme.StatDetail.TextPage); - - LoadFromTheme(Theme.StatDetail); - - AddButton(Theme.StatDetail.ButtonNext); - if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Language.Translate('STAT_NEXT')); - - AddButton(Theme.StatDetail.ButtonPrev); - if (Length(Button[1].Text)=0) then - AddButtonText(14, 20, Language.Translate('STAT_PREV')); - - AddButton(Theme.StatDetail.ButtonReverse); - if (Length(Button[2].Text)=0) then - AddButtonText(14, 20, Language.Translate('STAT_REVERSE')); - - AddButton(Theme.StatDetail.ButtonExit); - if (Length(Button[3].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[7]); - - Interaction := 0; - Typ := 0; -end; - -procedure TScreenStatDetail.onShow; -begin - inherited; - - //Set Tot Entrys and PAges - TotEntrys := DataBase.GetTotalEntrys(Typ); - TotPages := Ceil(TotEntrys / Count); - //Show correct Title - SetTitle; - //Show First Page - Reversed := False; - SetPage(0); -end; - -procedure TScreenStatDetail.SetTitle; -begin - //Set Title - Case Reversed of - True: Text[Count].Text := Theme.StatDetail.DescriptionR[Typ]; - False: Text[Count].Text := Theme.StatDetail.Description[Typ]; - end; -end; - -Procedure TScreenStatDetail.SetPage(NewPage: Cardinal); -var - Result: AStatResult; - I: Integer; - FormatStr: String; - PerPage: Byte; -begin - SetLength(Result, Count); - if (Database.GetStats(Result, Typ, Count, NewPage, Reversed)) then - begin - Page := NewPage; - - FormatStr := Theme.StatDetail.FormatStr[Typ]; - - //refresh Texts - For I := 0 to Count-1 do - begin - try - case Typ of - 0:begin //Best Scores - //Set Texts - if (Result[I].Score>0) then - Text[I].Text := Format(FormatStr, [Result[I].Singer, - Result[I].Score, - Theme.ILevel[Result[I].Difficulty], - Result[I].SongArtist, - Result[I].SongTitle]) - else - Text[I].Text := ''; - end; - - 1:begin //Best Singers - //Set Texts - if (Result[I].AverageScore>0) then - Text[I].Text := Format(FormatStr, [Result[I].Player, - Result[I].AverageScore]) - else - Text[I].Text := ''; - end; - - 2:begin //Popular Songs - //Set Texts - if (Result[I].Artist<>'') then - Text[I].Text := Format(FormatStr, [Result[I].Artist, - Result[I].Title, - Result[I].TimesSung]) - else - Text[I].Text := ''; - end; - - 3:begin //Popular Bands - //Set Texts - if (Result[I].ArtistName<>'') then - Text[I].Text := Format(FormatStr, [Result[I].ArtistName, - Result[I].TimesSungtot]) - else - Text[I].Text := ''; - end; - end; - except - on E: EConvertError do - Log.LogError('Error Parsing FormatString in UScreenStatDetail: ' + E.Message); - end; - end; - - if (Page + 1 = TotPages) AND (TotEntrys Mod Count <> 0) then - PerPage := (TotEntrys Mod Count) - else - PerPage := Count; - - Text[Count+1].Text := Format(Theme.StatDetail.PageStr, [Page + 1, - TotPages, - PerPage, - TotEntrys]); - - //Show correct Title - SetTitle; - - end; - -end; - - -procedure TScreenStatDetail.SetAnimationProgress(Progress: real); -var I: Integer; -begin - For I := 0 to high(Button) do - Button[I].Texture.ScaleW := Progress; -end; - -end. +unit UScreenStatDetail; + +interface + +{$I switches.inc} + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, UIni, UThemes; + +type + TScreenStatDetail = class(TMenu) + public + Typ: Byte; + Page: CardinaL; + Count: Byte; + Reversed: Boolean; + + TotEntrys: Cardinal; + TotPages: Cardinal; + + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + + procedure SetTitle; + Procedure SetPage(NewPage: Cardinal); + end; + +implementation + +{Stat Screens: + 0 - Best Scores + 1 - Best Singers + 2 - Most sung Songs + 3 - Most popular Band +} + +uses UGraphic, UDataBase, ULanguage, math, ULog; + +function TScreenStatDetail.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + // check normal keys + case WideCharUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys + case PressedKey of + SDLK_ESCAPE, + SDLK_BACKSPACE : + begin + AudioPlayback.PlaySound(SoundLib.Back); + FadeTo(@ScreenStatMain); + end; + SDLK_RETURN: + begin + if Interaction = 0 then begin + //Next Page + SetPage(Page+1); + end; + + if Interaction = 1 then begin + //Previous Page + if (Page > 0) then + SetPage(Page-1); + end; + + if Interaction = 2 then begin + //Reverse Order + Reversed := not Reversed; + SetPage(Page); + end; + + if Interaction = 3 then begin + AudioPlayback.PlaySound(SoundLib.Back); + FadeTo(@ScreenStatMain); + end; + end; + SDLK_LEFT: + begin + InteractPrev; + end; + SDLK_RIGHT: + begin + InteractNext; + end; + SDLK_UP: + begin + InteractPrev; + end; + SDLK_DOWN: + begin + InteractNext; + end; + end; + end; +end; + +constructor TScreenStatDetail.Create; +var + I: integer; +begin + inherited Create; + + for I := 0 to High(Theme.StatDetail.TextList) do + AddText(Theme.StatDetail.TextList[I]); + + Count := Length(Theme.StatDetail.TextList); + + AddText(Theme.StatDetail.TextDescription); + AddText(Theme.StatDetail.TextPage); + + LoadFromTheme(Theme.StatDetail); + + AddButton(Theme.StatDetail.ButtonNext); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_NEXT')); + + AddButton(Theme.StatDetail.ButtonPrev); + if (Length(Button[1].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_PREV')); + + AddButton(Theme.StatDetail.ButtonReverse); + if (Length(Button[2].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_REVERSE')); + + AddButton(Theme.StatDetail.ButtonExit); + if (Length(Button[3].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[7]); + + Interaction := 0; + Typ := 0; +end; + +procedure TScreenStatDetail.onShow; +begin + inherited; + + //Set Tot Entrys and PAges + TotEntrys := DataBase.GetTotalEntrys(Typ); + TotPages := Ceil(TotEntrys / Count); + //Show correct Title + SetTitle; + //Show First Page + Reversed := False; + SetPage(0); +end; + +procedure TScreenStatDetail.SetTitle; +begin + //Set Title + Case Reversed of + True: Text[Count].Text := Theme.StatDetail.DescriptionR[Typ]; + False: Text[Count].Text := Theme.StatDetail.Description[Typ]; + end; +end; + +Procedure TScreenStatDetail.SetPage(NewPage: Cardinal); +var + Result: AStatResult; + I: Integer; + FormatStr: String; + PerPage: Byte; +begin + SetLength(Result, Count); + if (Database.GetStats(Result, Typ, Count, NewPage, Reversed)) then + begin + Page := NewPage; + + FormatStr := Theme.StatDetail.FormatStr[Typ]; + + //refresh Texts + For I := 0 to Count-1 do + begin + try + case Typ of + 0:begin //Best Scores + //Set Texts + if (Result[I].Score>0) then + Text[I].Text := Format(FormatStr, [Result[I].Singer, + Result[I].Score, + Theme.ILevel[Result[I].Difficulty], + Result[I].SongArtist, + Result[I].SongTitle]) + else + Text[I].Text := ''; + end; + + 1:begin //Best Singers + //Set Texts + if (Result[I].AverageScore>0) then + Text[I].Text := Format(FormatStr, [Result[I].Player, + Result[I].AverageScore]) + else + Text[I].Text := ''; + end; + + 2:begin //Popular Songs + //Set Texts + if (Result[I].Artist<>'') then + Text[I].Text := Format(FormatStr, [Result[I].Artist, + Result[I].Title, + Result[I].TimesSung]) + else + Text[I].Text := ''; + end; + + 3:begin //Popular Bands + //Set Texts + if (Result[I].ArtistName<>'') then + Text[I].Text := Format(FormatStr, [Result[I].ArtistName, + Result[I].TimesSungtot]) + else + Text[I].Text := ''; + end; + end; + except + on E: EConvertError do + Log.LogError('Error Parsing FormatString in UScreenStatDetail: ' + E.Message); + end; + end; + + if (Page + 1 = TotPages) AND (TotEntrys Mod Count <> 0) then + PerPage := (TotEntrys Mod Count) + else + PerPage := Count; + + Text[Count+1].Text := Format(Theme.StatDetail.PageStr, [Page + 1, + TotPages, + PerPage, + TotEntrys]); + + //Show correct Title + SetTitle; + + end; + +end; + + +procedure TScreenStatDetail.SetAnimationProgress(Progress: real); +var I: Integer; +begin + For I := 0 to high(Button) do + Button[I].Texture.ScaleW := Progress; +end; + +end. -- cgit v1.2.3