aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Classes/UPlatform.pas
diff options
context:
space:
mode:
Diffstat (limited to 'Game/Code/Classes/UPlatform.pas')
-rw-r--r--Game/Code/Classes/UPlatform.pas56
1 files changed, 56 insertions, 0 deletions
diff --git a/Game/Code/Classes/UPlatform.pas b/Game/Code/Classes/UPlatform.pas
new file mode 100644
index 00000000..cc971bed
--- /dev/null
+++ b/Game/Code/Classes/UPlatform.pas
@@ -0,0 +1,56 @@
+unit UPlatform;
+
+// Comment by Eddie:
+// This unit defines an interface for platform specific utility functions.
+// The Interface is implemented in separate files for each platform:
+// UPlatformWindows, UPlatformLinux and UPlatformWindows.
+
+interface
+
+{$IFDEF FPC}
+ {$MODE Delphi}
+{$ENDIF}
+
+{$I switches.inc}
+
+uses Classes;
+
+type
+
+ TDirectoryEntry = Record
+ Name : WideString;
+ IsDirectory : Boolean;
+ IsFile : Boolean;
+ end;
+
+ TDirectoryEntryArray = Array of TDirectoryEntry;
+
+ IPlatform = interface
+
+ // DirectoryFindFiles returns all files matching the filter. Do not use '*' in the filter.
+ // If you set ReturnAllSubDirs = true all directories will be returned, if yout set it to false
+ // directories are completely ignored.
+ Function DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+ end;
+
+var
+ Platform : IPlatform;
+
+implementation
+
+uses
+ {$IFDEF MSWINDOWS}
+ UPlatformWindows;
+ {$ENDIF}
+ {$IFDEF LINUX}
+ UPlatformLinux;
+ {$ENDIF}
+ {$IFDEF DARWIN}
+ UPlatformMacOSX;
+ {$ENDIF}
+
+initialization
+
+ Platform := TPlatform.Create;
+
+end.