diff options
Diffstat (limited to 'Game/Code/Classes')
-rw-r--r-- | Game/Code/Classes/UFiles.pas | 328 |
1 files changed, 1 insertions, 327 deletions
diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index d3e4729b..b65dcbf2 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -13,21 +13,9 @@ uses SysUtils, USongs, USong; -//procedure InitializePaths; //Function sets All Absolute Paths eg. for Songs -//function ReadTXTHeader(var Song: TSong): boolean; //Reads Standard TXT Header -//function AnalyseFile(var Song: TSong): boolean; //Analyse Song File and Read Header -//procedure ClearSong(var Song: TSong); //Clears Song Header values - -//Methodes Loading and Saving Songfiles procedure ResetSingTemp; -//procedure ParseNote(NrCzesci: integer; TypeP: char; StartP, DurationP, NoteP: integer; LyricS: string); -//procedure NewSentence(NrCzesciP: integer; Param1, Param2: integer); - -//function LoadSong(Name: string): boolean; function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; - - var SongFile: TextFile; // all procedures in this unit operates on this file FileLineNo: integer; //Line which is readed at Last, for error reporting @@ -44,321 +32,7 @@ uses TextGL, UIni, UPlatform, UMain; - -(* -//-------------------- -<<<<<<< .mine -======= -// Clears Song Header values -//-------------------- -procedure ClearSong(var Song: TSong); -begin - //Main Information - Song.Title := ''; - Song.Artist := ''; - - //Sortings: - Song.Genre := 'Unknown'; - Song.Edition := 'Unknown'; - Song.Language := 'Unknown'; //Language Patch - - //Required Information - Song.Mp3 := ''; - {$IFDEF FPC} - setlength( Song.BPM, 0 ); - {$ELSE} - Song.BPM := 0; - {$ENDIF} - - Song.GAP := 0; - Song.Start := 0; - Song.Finish := 0; - - //Additional Information - Song.Background := ''; - Song.Cover := ''; - Song.Video := ''; - Song.VideoGAP := 0; - Song.NotesGAP := 0; - Song.Resolution := 4; - Song.Creator := ''; -end; - -//-------------------- -// Reads Standard TXT Header -//-------------------- -function ReadTXTHeader(var Song: TSong): boolean; -var - Line, Identifier, Value: String; - Temp: word; - Done: byte; -begin - Result := true; - Done := 0; - - //Read first Line - ReadLn (SongFile, Line); - - if (Length(Line)<=0) then - begin - Log.LogError('File Starts with Empty Line: ' + Song.FileName); - Result := False; - Exit; - end; - - //Read Lines while Line starts with # - While (Length(Line) = 0) OR (Line[1] = '#') do - begin - //Increase Line Number - Inc (FileLineNo); - Temp := Pos(':', Line); - - //Line has a Seperator-> Headerline - if (Temp <> 0) then - begin - //Read Identifier and Value - Identifier := Uppercase(Trim(Copy(Line, 2, Temp - 2))); //Uppercase is for Case Insensitive Checks - Value := Trim(Copy(Line, Temp + 1,Length(Line) - Temp)); - - //Check the Identifier (If Value is given) - if (Length(Value) <> 0) then - begin - - {$IFDEF DARWIN} - if ((Identifier = 'MP3') or (Identifier = 'COVER') or (Identifier = 'BACKGROUND') or (Identifier = 'VIDEO')) then - begin - // Filenames on OS X must be UTF8: - Value := Utf8Encode(Value); - end; - {$ENDIF} - - - //----------- - //Required Attributes - //----------- - - //Title - if (Identifier = 'TITLE') then - begin - Song.Title := Value; - - //Add Title Flag to Done - Done := Done or 1; - end - - //Artist - else if (Identifier = 'ARTIST') then - begin - Song.Artist := Value; - - //Add Artist Flag to Done - Done := Done or 2; - end - - //MP3 File //Test if Exists - else if (Identifier = 'MP3') AND (FileExists(Song.Path + Value)) then - begin - Song.Mp3 := Value; - - //Add Mp3 Flag to Done - Done := Done or 4; - end - - //Beats per Minute - else if (Identifier = 'BPM') then - begin - // Replace . with , - if (Pos('.', Value) <> 0) then - Value[Pos('.', Value)] := ','; - - SetLength(Song.BPM, 1); - Song.BPM[0].StartBeat := 0; - - Song.BPM[0].BPM := StrtoFloatDef(Value, 0) * Mult * MultBPM; - - if Song.BPM[0].BPM <> 0 then - begin - //Add BPM Flag to Done - Done := Done or 8; - end; - end - - //--------- - //Additional Header Information - //--------- - - // Video Gap - else if (Identifier = 'GAP') then - begin - // Replace . with , - if (Pos('.', Value) <> 0) then - Value[Pos('.', Value)] := ','; - - Song.GAP := StrtoFloatDef (Value, 0); - end - - //Cover Picture - else if (Identifier = 'COVER') then - begin - Song.Cover := Value; - end - - //Background Picture - else if (Identifier = 'BACKGROUND') then - begin - Song.Background := Value; - end - - // Video File - else if (Identifier = 'VIDEO') then - begin - if (FileExists(Song.Path + Value)) then - Song.Video := Value - else - Log.LogError('Can''t find Video File in Song: ' + Song.Path + Song.FileName); - end - - // Video Gap - else if (Identifier = 'VIDEOGAP') then - begin - // Replace . with , - if (Pos('.', Value) <> 0) then - Value[Pos('.', Value)] := ','; - - Song.VideoGAP := StrtoFloatDef (Value, 0); - end - - //Genre Sorting - else if (Identifier = 'GENRE') then - begin - Song.Genre := Value; - end - - //Edition Sorting - else if (Identifier = 'EDITION') then - begin - Song.Edition := Value; - end - - //Creator Tag - else if (Identifier = 'CREATOR') then - begin - Song.Creator := Value; - end - - //Language Sorting - else if (Identifier = 'LANGUAGE') then - begin - Song.Language := Value; - end - - // Song Start - else if (Identifier = 'START') then - begin - // Replace . with , - if (Pos('.', Value) <> 0) then - Value[Pos('.', Value)] := ','; - - Song.Start := StrtoFloatDef(Value, 0); - end - - // Song Ending - else if (Identifier = 'END') then - begin - TryStrtoInt(Value, Song.Finish); - end - - // Resolution - else if (Identifier = 'RESOLUTION') then - begin - TryStrtoInt(Value, Song.Resolution); - end - - // Notes Gap - else if (Identifier = 'NOTESGAP') then - begin - TryStrtoInt(Value, Song.NotesGAP); - end - - // Relative Notes - else if (Identifier = 'RELATIVE') AND (uppercase(Value) = 'YES') then - begin - Song.Relative := True; - end; - - end; - end; - - if not EOf(SongFile) then - ReadLn (SongFile, Line) - else - begin - Result := False; - Log.LogError('File Incomplete or not Ultrastar TxT (A): ' + Song.FileName); - break; - end; - - {//End on first empty Line - if (Length(Line) = 0) then - break;} - end; - - //Check if all Required Values are given - if (Done <> 15) then - begin - Result := False; - if (Done and 8) = 0 then //No BPM Flag - Log.LogError('BPM Tag Missing: ' + Song.FileName) - else if (Done and 4) = 0 then //No MP3 Flag - Log.LogError('MP3 Tag/File Missing: ' + Song.FileName) - else if (Done and 2) = 0 then //No Artist Flag - Log.LogError('Artist Tag Missing: ' + Song.FileName) - else if (Done and 1) = 0 then //No Title Flag - Log.LogError('Title Tag Missing: ' + Song.FileName) - else //unknown Error - Log.LogError('File Incomplete or not Ultrastar TxT (B - '+ inttostr(Done) +'): ' + Song.FileName); - end; - -end; - -//-------------------- -// Analyse Song File and Read Header -//-------------------- -function AnalyseFile(var Song: TSong): boolean; -begin -Result := False; -{try } - //Reset LineNo - FileLineNo := 0; - - //Open File and set File Pointer to the beginning - AssignFile(SongFile, Song.Path + Song.FileName); - -// if assinged( SongFile ) then - begin - try - Reset(SongFile); - - //Clear old Song Header - ClearSong(Song); - - //Read Header - Result := ReadTxTHeader(Song); - - //And Close File - finally - CloseFile(SongFile); - end; - end; -{except - CloseFile(SongFile); - - Result := False; - //Error Reporting - Log.LogError('An Error occured reading Line ' + inttostr(FileLineNo) + ' from SongHeader: ' + Song.FileName); -end;} -end; - *) + //-------------------- // Resets the temporary Sentence Arrays for each Player and some other Variables //-------------------- |