diff options
Diffstat (limited to 'Game/Code/Classes/USong_TextFile.pas')
-rw-r--r-- | Game/Code/Classes/USong_TextFile.pas | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Game/Code/Classes/USong_TextFile.pas b/Game/Code/Classes/USong_TextFile.pas new file mode 100644 index 00000000..a3e605de --- /dev/null +++ b/Game/Code/Classes/USong_TextFile.pas @@ -0,0 +1,86 @@ +unit USong_TextFile; + +interface + +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + +{$I switches.inc} + +uses + Classes, + SysUtils, + USong; + +type + {******************* + Child of the new TSong class. + implements filehandling to load a song from a text file + *******************} + TSong_TextFile = class(TSong) + protected + SongFile: TextFile; + + Function OpenSongFile: Boolean; + Function IsDataAvailable: Boolean; + Function GetNextLine(): String; + Procedure CloseSongFile; + end; + +implementation + +uses + ULog; + +//-------- +// Open the SongFile +//-------- +Function TSong_TextFile.OpenSongFile: Boolean; +begin + Result := False; + + if not FileExists(FilePath + FileName) then + Log.LogError('File does not exsist', FilePath + FileName) + else + begin + try + AssignFile(SongFile, FilePath + FileName); + Reset(SongFile); + Result := True; + except + Log.LogError('Faild to open file', FilePath + FileName) + end; + end; +end; + +//-------- +// More data in songfile available? +//-------- +Function TSong_TextFile.IsDataAvailable: Boolean; +begin + Result := not eof(SongFile); +end; + +//-------- +// Returns the next line from the SongFile +//-------- +Function TSong_TextFile.GetNextLine(): String; +begin + ReadLn(SongFile, Result); + Result := Trim(Result); +end; + +//-------- +// Close the SongFile +//-------- +Procedure TSong_TextFile.CloseSongFile; +begin + try + CloseFile(SongFile); + except + Log.LogError('Error closing file', FilePath + FileName); + end; +end; + +end.
\ No newline at end of file |