From 9792c8c1af8dc0733e3851a2f094897590b25605 Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Sat, 20 Nov 2010 13:02:32 +0000 Subject: added sorting by year (decade) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2744 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/USongs.pas | 50 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) (limited to 'Game/Code/Classes/USongs.pas') diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 330b8a9e..f21deb69 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -55,7 +55,7 @@ type Genre: array of string; Edition: array of string; Language: string; // 0.5.0: new - Year: string; + Year: integer; Title: string; Artist: string; @@ -180,6 +180,10 @@ begin sRandom: if (Random(2) = 0) then Result := true; + + sYear: //by Year + Result := (TempSongArr[TempIndex].Year <= Songs.SongSort[SourceIndex].Year); + end; // case end; @@ -343,13 +347,7 @@ end; procedure TSongs.Sort(Order: integer); var - S: integer; - S2: integer; - - I: integer; - //TempSong: TSong; MergeSort: TMergeSorter; - //TempSongArr: array of TSong; begin @@ -385,6 +383,7 @@ var Order: integer; // number used for ordernum Letter2: char; // CatNumber:integer; // Number of Song in Category + tempstr: string; procedure CheckEdition(SongNr: integer); var @@ -511,6 +510,12 @@ begin begin Songs.Sort(sRandom); end; + sYear: + begin + Songs.Sort(sTitle); + Songs.Sort(sArtist); + Songs.Sort(sYear); + end; end; // case Log.BenchmarkEnd(3); @@ -767,6 +772,37 @@ begin end; CatSongs.Song[CatLen].Visible := true; + end else if (Ini.Sorting = sYear) then + begin + I := Songs.SongSort[S].Year; + if (I <> -1) then + tempstr := IntToStr(Round(I/10)*10) + '-' + IntToStr(Round(I/10)*10+9) + else + tempstr := 'undefined'; + + if (tempstr <> SS) then + begin + Inc(Order); + SS := tempstr; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := SS; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; + CatSongs.Song[CatLen].OrderNum := Order; + + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, SS); + + //CatNumber Patch + if (SS <> '') then + begin + if (CatLen - CatNumber - 1>=0) then + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end; end; end; -- cgit v1.2.3