aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Classes/USong_TextFile.pas
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Game/Code/Classes/USong_TextFile.pas86
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