aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreddie-0815 <eddie-0815@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-11-08 21:02:07 +0000
committereddie-0815 <eddie-0815@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-11-08 21:02:07 +0000
commita0ff0b75e3562e04f17f11fc41f2e49040d620c5 (patch)
treefb9329f4a10cce9eddbed97e288a28eef13147f8
parent6ca1db26350a589b5bcb3e2eac35a7965d5ab448 (diff)
downloadusdx-a0ff0b75e3562e04f17f11fc41f2e49040d620c5.tar.gz
usdx-a0ff0b75e3562e04f17f11fc41f2e49040d620c5.tar.xz
usdx-a0ff0b75e3562e04f17f11fc41f2e49040d620c5.zip
Added UPlatform.pas. This should be the first step to move the simple platform specific code to one file for each platform to reduce the IFDEFs in the remaining files.
The first available function is a unicode capable DirectoryFindFiles. It is now used in the BrowseDir function in file USongs.pas. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@595 b956fd51-792f-4845-bead-9b4dfca2ff2c
-rw-r--r--Game/Code/Classes/UMain.pas3
-rw-r--r--Game/Code/Classes/UPlatform.pas56
-rw-r--r--Game/Code/Classes/UPlatformLinux.pas66
-rw-r--r--Game/Code/Classes/UPlatformMacOSX.pas66
-rw-r--r--Game/Code/Classes/UPlatformWindows.pas58
-rw-r--r--Game/Code/Classes/USongs.pas222
-rw-r--r--Game/Code/MacOSX/UltraStarDX.pas2
-rw-r--r--Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1171
-rw-r--r--Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser209
-rw-r--r--Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj12
-rw-r--r--Game/Code/UltraStar.dpr9
11 files changed, 470 insertions, 404 deletions
diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas
index f25eaa87..c11b68d9 100644
--- a/Game/Code/Classes/UMain.pas
+++ b/Game/Code/Classes/UMain.pas
@@ -12,9 +12,6 @@ uses
{$IFDEF MSWINDOWS}
Windows,
{$ENDIF}
- {$IFDEF DARWIN} // needed for initialization of cthreads
- cthreads,
- {$ENDIF}
SDL,
UGraphic,
UMusic,
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.
diff --git a/Game/Code/Classes/UPlatformLinux.pas b/Game/Code/Classes/UPlatformLinux.pas
new file mode 100644
index 00000000..1713df1c
--- /dev/null
+++ b/Game/Code/Classes/UPlatformLinux.pas
@@ -0,0 +1,66 @@
+unit UPlatformLinux;
+
+interface
+
+{$IFDEF FPC}
+ {$MODE Delphi}
+{$ENDIF}
+
+{$I switches.inc}
+
+uses Classes, UPlatform;
+
+type
+
+ TPlatform = class(TInterfacedObject, IPlatform)
+ public
+ Function DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+ end;
+
+implementation
+
+uses SysUtils, oldlinux;
+
+Function TPlatform.DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+var
+ i : Integer;
+ TheDir : oldlinux.pdir;
+ ADirent : oldlinux.pDirent;
+ Entry : Longint;
+ info : oldlinux.stat;
+ lAttrib : integer;
+begin
+ i := 0;
+ Filter := LowerCase(Filter);
+
+ TheDir := oldlinux.opendir( Dir );
+ if Assigned(TheDir) then
+ repeat
+ ADirent := oldlinux.ReadDir(TheDir);
+
+ If Assigned(ADirent) and (ADirent^.d_name <> '.') and (ADirent^.d_name <> '..') then
+ begin
+ lAttrib := FileGetAttr(Dir + ADirent^.d_name);
+ if ReturnAllSubDirs and ((lAttrib and faDirectory) <> 0) then
+ begin
+ SetLength( Result, i + 1);
+ Result[i].Name := ADirent^.d_name;
+ Result[i].IsDirectory := true;
+ Result[i].IsFile := false;
+ i := i + 1;
+ end
+ else if (Length(Filter) = 0) or (Pos( Filter, LowerCase(ADirent^.d_name)) > 0) then
+ begin
+ SetLength( Result, i + 1);
+ Result[i].Name := ADirent^.d_name;
+ Result[i].IsDirectory := false;
+ Result[i].IsFile := true;
+ i := i + 1;
+ end;
+ end;
+ Until ADirent = nil;
+
+ oldlinux.CloseDir(TheDir);
+end;
+
+end.
diff --git a/Game/Code/Classes/UPlatformMacOSX.pas b/Game/Code/Classes/UPlatformMacOSX.pas
new file mode 100644
index 00000000..56469299
--- /dev/null
+++ b/Game/Code/Classes/UPlatformMacOSX.pas
@@ -0,0 +1,66 @@
+unit UPlatformMacOSX;
+
+interface
+
+{$IFDEF FPC}
+ {$MODE Delphi}
+{$ENDIF}
+
+{$I switches.inc}
+
+uses Classes, UPlatform;
+
+type
+
+ TPlatform = class(TInterfacedObject, IPlatform)
+ public
+ Function DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+ end;
+
+implementation
+
+uses SysUtils, baseunix;
+
+Function TPlatform.DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+var
+ i : Integer;
+ TheDir : pdir;
+ ADirent : pDirent;
+ Entry : Longint;
+ info : stat;
+ lAttrib : integer;
+begin
+ i := 0;
+ Filter := LowerCase(Filter);
+
+ TheDir := FPOpenDir(Dir);
+ if Assigned(TheDir) then
+ repeat
+ ADirent := FPReadDir(TheDir);
+
+ If Assigned(ADirent) and (ADirent^.d_name <> '.') and (ADirent^.d_name <> '..') then
+ begin
+ lAttrib := FileGetAttr(Dir + ADirent^.d_name);
+ if ReturnAllSubDirs and ((lAttrib and faDirectory) <> 0) then
+ begin
+ SetLength( Result, i + 1);
+ Result[i].Name := ADirent^.d_name;
+ Result[i].IsDirectory := true;
+ Result[i].IsFile := false;
+ i := i + 1;
+ end
+ else if (Length(Filter) = 0) or (Pos( Filter, LowerCase(ADirent^.d_name)) > 0) then
+ begin
+ SetLength( Result, i + 1);
+ Result[i].Name := ADirent^.d_name;
+ Result[i].IsDirectory := false;
+ Result[i].IsFile := true;
+ i := i + 1;
+ end;
+ end;
+ Until ADirent = nil;
+
+ FPCloseDir(TheDir);
+end;
+
+end.
diff --git a/Game/Code/Classes/UPlatformWindows.pas b/Game/Code/Classes/UPlatformWindows.pas
new file mode 100644
index 00000000..eb432335
--- /dev/null
+++ b/Game/Code/Classes/UPlatformWindows.pas
@@ -0,0 +1,58 @@
+unit UPlatformWindows;
+
+interface
+
+{$IFDEF FPC}
+ {$MODE Delphi}
+{$ENDIF}
+
+{$I switches.inc}
+
+uses Classes, UPlatform;
+
+type
+
+ TPlatform = class(TInterfacedObject, IPlatform)
+ public
+ Function DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+ end;
+
+implementation
+
+uses SysUtils, Windows;
+
+Function TPlatform.DirectoryFindFiles(Dir, Filter : WideString; ReturnAllSubDirs : Boolean) : TDirectoryEntryArray;
+var
+ i : Integer;
+ SR : TSearchRecW;
+begin
+ i := 0;
+ Filter := LowerCase(Filter);
+
+ if ReturnAllSubDirs then begin
+ if FindFirstW(Dir + '*', faDirectory, SR) = 0 then
+ repeat
+ if (SR.Name <> '.') and (SR.Name <> '..') then
+ begin
+ SetLength( Result, i + 1);
+ Result[i].Name := SR.Name;
+ Result[i].IsDirectory := true;
+ Result[i].IsFile := false;
+ i := i + 1;
+ end;
+ until FindNextW(SR) <> 0;
+ FindCloseW(SR);
+ end;
+
+ if FindFirstW(Dir + '*' + Filter, 0, SR) = 0 then
+ repeat
+ SetLength( Result, i + 1);
+ Result[i].Name := SR.Name;
+ Result[i].IsDirectory := true;
+ Result[i].IsFile := false;
+ i := i + 1;
+ until FindNextW(SR) <> 0;
+ FindCloseW(SR);
+end;
+
+end.
diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas
index 9b9ab7bb..dcca08bd 100644
--- a/Game/Code/Classes/USongs.pas
+++ b/Game/Code/Classes/USongs.pas
@@ -30,6 +30,7 @@ uses
{$ENDIF}
SysUtils,
Classes,
+ UPlatform,
ULog,
UTexture,
UCommon,
@@ -299,198 +300,51 @@ begin
self.resume;
end;
-// TODO : JB - THis whole function SUX ! and needs refactoring ! :P
procedure TSongs.BrowseDir(Dir: widestring);
var
SLen: integer;
-
- {$ifdef Delphi}
- SR: TSearchRecW; // for parsing Songs Directory
- {$ENDIF}
-
- // eddie: can we merge that? is baseunix working on linux? oldlinux is
- // not available on mac os x.
- {$IFDEF LINUX}
- TheDir : oldlinux.pdir;
- ADirent : oldlinux.pDirent;
- Entry : Longint;
- info : oldlinux.stat;
- {$ENDIF}
- {$IFDEF DARWIN}
- TheDir : pdir;
- ADirent : pDirent;
- Entry : Longint;
- info : stat;
- lAttrib : integer;
- {$ENDIF}
+ i : Integer;
+ Files : TDirectoryEntryArray;
begin
- {$ifdef Delphi}
- if FindFirstW(Dir + '*', faDirectory, SR) = 0 then // JB_Unicode - windows
- begin
- repeat
- if (SR.Name <> '.') and (SR.Name <> '..') then
- begin
- BrowseDir(Dir + Sr.Name + PathDelim);
- end
- until FindNextw(SR) <> 0;
- end; // if
- FindClosew(SR);
-
- if FindFirstW(Dir + '*.txt', 0, SR) = 0 then
- begin
- repeat
- SLen := BrowsePos;
-
- Song[SLen].Path := Dir;
- Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000);
- Song[SLen].Folder := Copy(Song[SLen].Folder, 1, Pos( PathDelim , Song[SLen].Folder)-1);
- Song[SLen].FileName := SR.Name;
-
- if (AnalyseFile(Song[SLen]) = false) then
- Dec(BrowsePos)
- else
- begin
- if Song[SLen].Cover = '' then
- Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
- end;
-
- //Change Length Only every 50 Entrys
- Inc(BrowsePos);
-
- if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then
- begin
- SetLength(Song, Length(Song) + 50);
- end;
-
- until FindNextW(SR) <> 0;
- end; // if FindFirst
- FindCloseW(SR);
- {$ENDIF}
-
- {$IFDEF LINUX}
- // Itterate the Songs Directory... ( With unicode capable functions for linux )
- TheDir := oldlinux.opendir( Dir ); // JB_Unicode - linux
- if TheDir <> nil then
- begin
- repeat
- ADirent := oldlinux.ReadDir(TheDir);
-
- If ADirent<>Nil then
- begin
- With ADirent^ do
- begin
-
- if ( name[0] <> '.') then
- BrowseDir( Dir + name + pathdelim );
-
- end;
- end;
- Until ADirent=Nil;
- end;
-
-
-
- TheDir := oldlinux.opendir( Dir ); // JB_Unicode - linux
- if TheDir <> nil then
- begin
- repeat
- ADirent := oldlinux.ReadDir(TheDir);
-
- if ( ADirent <> Nil ) AND
- ( pos( '.txt', ADirent^.name ) > 0 ) then
- begin
- writeln ('***** FOUND TXT' + ADirent^.name );
-
- SLen := BrowsePos;
-
- Song[SLen].Path := Dir;
- Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000);
- Song[SLen].Folder := Copy(Song[SLen].Folder, 1, Pos( PathDelim , Song[SLen].Folder)-1);
- Song[SLen].FileName := ADirent^.name;
-
- if (AnalyseFile(Song[SLen]) = false) then
- Dec(BrowsePos)
- else
- begin
- if Song[SLen].Cover = '' then
- Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
- end;
-
- //Change Length Only every 50 Entrys
- Inc(BrowsePos);
- if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then
- begin
- SetLength(Song, Length(Song) + 50);
- end;
- end;
-
- Until ADirent=Nil;
- end; // if FindFirst
- {$endif}
-
- {$IFDEF DARWIN}
- // Itterate the Songs Directory... ( With unicode capable functions for linux )
- TheDir := FPOpenDir(Dir); // JB_Unicode - linux
- if TheDir <> nil then
- begin
- repeat
- ADirent := FPReadDir(TheDir);
-
- If assigned(ADirent) and (ADirent^.d_name <> '.') and (ADirent^.d_name <> '..') then
- begin
- lAttrib := FileGetAttr(Dir + ADirent^.d_name);
- if (lAttrib and faDirectory) <> 0 then
- begin
- //Log.LogError('Entering dir "' + Dir + ADirent^.d_name + PathDelim + '" now.');
- BrowseDir(Dir + ADirent^.d_name + PathDelim);
- end
- else if Pos( '.txt', LowerCase(ADirent^.d_name)) > 0 then
- begin
- SLen := BrowsePos;
-
- try
- Song[SLen].Path := Dir;
- Song[SLen].Folder := Copy(String(Dir), Length(String(SongPath))+1, 10000);
- Song[SLen].Folder := Copy(String(Song[SLen].Folder), 1, Pos( PathDelim , Song[SLen].Folder)-1);
- Song[SLen].FileName := ADirent^.d_name;
- //Log.LogError( 'Song: ' + ADirent^.d_name + ', Length(Song) = ' + inttostr(Length(Song)) + ', BrowsePos = ' + IntToStr(BrowsePos) + ', Dir = "' + Dir + '"');
-
- if (AnalyseFile(Song[SLen]) = false) then
- begin
- Log.LogError('AnalyseFile failed for "' + ADirent^.d_name + '".');
- Dec(BrowsePos);
- end
- else
- begin
- if Song[SLen].Cover = '' then
- Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
- end;
- except
- end;
-
- //Change Length Only every 50 Entrys
- Inc(BrowsePos);
-
- if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then
- begin
- SetLength(Song, Length(Song) + 50);
- end;
- end;
- end;
-
- Until ADirent=Nil;
-
- if (FPCloseDir(TheDir) <> 0) then
+ Files := Platform.DirectoryFindFiles( Dir, '.txt', true);
+ for i := 0 to Length(Files)-1 do
+ begin
+ if Files[i].IsDirectory then
+ begin
+ BrowseDir( Dir + Files[i].Name + PathDelim );
+ end
+ else
begin
- Log.LogError('TSongs.BrowseDir: Exception: Error closing dir: "' + Dir + '".')
+ SLen := BrowsePos;
+
+ Song[SLen].Path := Dir;
+ Song[SLen].Folder := Copy(String(Dir), Length(String(SongPath))+1, 10000);
+ Song[SLen].Folder := Copy(String(Song[SLen].Folder), 1, Pos( PathDelim , Song[SLen].Folder)-1);
+ Song[SLen].FileName := Files[i].Name;
+
+ if (AnalyseFile(Song[SLen]) = false) then
+ begin
+ Log.LogError('AnalyseFile failed for "' + Files[i].Name + '".');
+ Dec(BrowsePos);
+ end
+ else
+ begin
+ if Song[SLen].Cover = '' then
+ Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
+ end;
+
+ //Change Length Only every 50 Entrys
+ Inc(BrowsePos);
+
+ if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then
+ begin
+ SetLength(Song, Length(Song) + 50);
+ end;
end;
- end;
+ end;
+ SetLength( Files, 0);
- {$endif}
-
// Log.LogStatus('Parsing directory: ' + Dir + SR.Name, 'LoadSongList');
-
-
end;
procedure TSongs.Sort(Order: integer);
diff --git a/Game/Code/MacOSX/UltraStarDX.pas b/Game/Code/MacOSX/UltraStarDX.pas
index 1b8a3b63..cab748c6 100644
--- a/Game/Code/MacOSX/UltraStarDX.pas
+++ b/Game/Code/MacOSX/UltraStarDX.pas
@@ -1,6 +1,6 @@
program UltraStarDX;
-uses UMain, UMedia_dummy, UAudio_FFMpeg, UAudio_bass, USingNotes, UTextClasses, UVideo;
+uses cthreads, UMain, UMedia_dummy, UAudio_FFMpeg, UAudio_bass, USingNotes, UTextClasses, UVideo;
begin
Main;
diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1
index a847e918..60534b6e 100644
--- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1
+++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1
@@ -190,24 +190,24 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2CEA2B810CE38FB40097A5FF</string>
+ <string>2C89379C0CE3A0CD005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>URecord.pas</string>
+ <string>USongs.pas</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2CEA2B820CE38FB40097A5FF</string>
+ <string>2C89379D0CE3A0CD005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>URecord.pas</string>
+ <string>USongs.pas</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>2CEA2B960CE391870097A5FF</string>
+ <string>2C8938830CE3AFCE005D8A87</string>
<key>history</key>
<array>
- <string>2CEA2B800CE38FA50097A5FF</string>
+ <string>2C8938610CE3A901005D8A87</string>
</array>
</dict>
<key>SplitCount</key>
@@ -223,31 +223,31 @@
<key>PBXModuleWindowStatusBarHidden2</key>
<false/>
<key>RubberWindowFrame</key>
- <string>130 129 797 789 0 0 1680 1028 </string>
+ <string>15 212 797 789 0 0 1680 1028 </string>
</dict>
</dict>
<dict>
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2CEA2B1B0CE38A270097A5FF</string>
+ <string>2C89386D0CE3AD9B005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>PseudoThread.pas</string>
+ <string>UltraStarDX.pas</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2CEA2B1C0CE38A270097A5FF</string>
+ <string>2C89386E0CE3AD9B005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>PseudoThread.pas</string>
+ <string>UltraStarDX.pas</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>2CEA2B970CE391870097A5FF</string>
+ <string>2C8938840CE3AFCE005D8A87</string>
<key>history</key>
<array>
- <string>2CEA2B060CE388ED0097A5FF</string>
+ <string>2C8938690CE3AD88005D8A87</string>
</array>
</dict>
<key>SplitCount</key>
@@ -259,35 +259,35 @@
<key>Geometry</key>
<dict>
<key>Frame</key>
- <string>{{0, 20}, {776, 858}}</string>
+ <string>{{0, 20}, {987, 762}}</string>
<key>PBXModuleWindowStatusBarHidden2</key>
<false/>
<key>RubberWindowFrame</key>
- <string>15 124 776 899 0 0 1680 1028 </string>
+ <string>189 142 987 803 0 0 1680 1028 </string>
</dict>
</dict>
<dict>
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2C82EFB90CDFC4BA00A79F26</string>
+ <string>2C8938710CE3AD9B005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>TextGL.pas</string>
+ <string>UPlatformMacOSX.pas</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>2C82EFBA0CDFC4BA00A79F26</string>
+ <string>2C8938720CE3AD9B005D8A87</string>
<key>PBXProjectModuleLabel</key>
- <string>TextGL.pas</string>
+ <string>UPlatformMacOSX.pas</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>2CEA2B980CE391870097A5FF</string>
+ <string>2C8938850CE3AFCE005D8A87</string>
<key>history</key>
<array>
- <string>2C3366B90CE129A900399210</string>
+ <string>2C8938630CE3AA53005D8A87</string>
</array>
</dict>
<key>SplitCount</key>
@@ -299,51 +299,11 @@
<key>Geometry</key>
<dict>
<key>Frame</key>
- <string>{{0, 20}, {797, 748}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>38 213 797 789 0 0 1680 1028 </string>
- </dict>
- </dict>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>2C82EF8B0CDFB9B300A79F26</string>
- <key>PBXProjectModuleLabel</key>
- <string>MacResources.pas</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>2C82EF8C0CDFB9B300A79F26</string>
- <key>PBXProjectModuleLabel</key>
- <string>MacResources.pas</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>2CEA2B990CE391870097A5FF</string>
- <key>history</key>
- <array>
- <string>2C3366BA0CE129A900399210</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {873, 642}}</string>
+ <string>{{0, 20}, {776, 859}}</string>
<key>PBXModuleWindowStatusBarHidden2</key>
<false/>
<key>RubberWindowFrame</key>
- <string>200 304 873 683 0 0 1680 1028 </string>
+ <string>12 87 776 900 0 0 1680 1028 </string>
</dict>
</dict>
</array>
@@ -380,6 +340,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -423,7 +385,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>17</integer>
+ <integer>22</integer>
<integer>15</integer>
<integer>0</integer>
</array>
@@ -448,7 +410,7 @@
<real>266</real>
</array>
<key>RubberWindowFrame</key>
- <string>760 270 817 753 0 0 1680 1028 </string>
+ <string>759 271 817 753 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -485,7 +447,7 @@
<key>Frame</key>
<string>{{0, 0}, {529, 0}}</string>
<key>RubberWindowFrame</key>
- <string>760 270 817 753 0 0 1680 1028 </string>
+ <string>759 271 817 753 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -493,8 +455,6 @@
<string>0pt</string>
</dict>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -507,7 +467,7 @@
<key>Frame</key>
<string>{{0, 5}, {529, 707}}</string>
<key>RubberWindowFrame</key>
- <string>760 270 817 753 0 0 1680 1028 </string>
+ <string>759 271 817 753 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -531,9 +491,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>2CEA2ACE0CE384040097A5FF</string>
+ <string>2C8937960CE3A0CC005D8A87</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>2CEA2ACF0CE384040097A5FF</string>
+ <string>2C8937970CE3A0CC005D8A87</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -667,22 +627,21 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>2CEA2B280CE38A270097A5FF</string>
- <string>2CEA2B290CE38A270097A5FF</string>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>2C8937D10CE3A1FF005D8A87</string>
+ <string>2C8937D20CE3A1FF005D8A87</string>
<string>2CDD4BFC0CB948FC00549FAC</string>
- <string>2CEA2B260CE38A270097A5FF</string>
<string>2CDD4B730CB935C700549FAC</string>
- <string>1C0AD2B3069F1EA900FABCE6</string>
- <string>2C82EF8B0CDFB9B300A79F26</string>
- <string>2C82EFB90CDFC4BA00A79F26</string>
- <string>2CEA2B1B0CE38A270097A5FF</string>
- <string>1C530D57069F1CE1000CFCEE</string>
- <string>2CEA2B810CE38FB40097A5FF</string>
- <string>/Users/eddie/Projekte/UltraStarDX/trunk/Game/Code/MacOSX/UltraStarDX.xcodeproj</string>
<string>1CD10A99069EF8BA00B06720</string>
+ <string>2C8937230CE3926A005D8A87</string>
+ <string>2C8938710CE3AD9B005D8A87</string>
+ <string>2C89386D0CE3AD9B005D8A87</string>
+ <string>2C89379C0CE3A0CD005D8A87</string>
+ <string>/Users/eddie/Projekte/UltraStarDX/trunk/Game/Code/MacOSX/UltraStarDX.xcodeproj</string>
+ <string>1C0AD2B3069F1EA900FABCE6</string>
</array>
<key>WindowString</key>
- <string>760 270 817 753 0 0 1680 1028 </string>
+ <string>759 271 817 753 0 0 1680 1028 </string>
<key>WindowTools</key>
<array>
<dict>
@@ -698,12 +657,14 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
- <string>URecord.pas</string>
+ <string>UPlatform.pas</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@@ -720,8 +681,6 @@
<string>566pt</string>
</dict>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -761,7 +720,7 @@
<key>TableOfContents</key>
<array>
<string>2CDD4B730CB935C700549FAC</string>
- <string>2CEA2AD90CE384620097A5FF</string>
+ <string>2C89375C0CE396D8005D8A87</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@@ -803,8 +762,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {335, 414}}</string>
- <string>{{335, 0}, {629, 414}}</string>
+ <string>{{0, 0}, {333, 414}}</string>
+ <string>{{333, 0}, {631, 414}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
@@ -844,7 +803,7 @@
<key>Frame</key>
<string>{{0, 0}, {964, 788}}</string>
<key>RubberWindowFrame</key>
- <string>227 161 964 829 0 0 1680 1028 </string>
+ <string>227 162 964 829 0 0 1680 1028 </string>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
@@ -867,23 +826,23 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
- <string>2CEA2B200CE38A270097A5FF</string>
+ <string>2C89371D0CE3926A005D8A87</string>
<string>1C162984064C10D400B95A72</string>
- <string>2CEA2B210CE38A270097A5FF</string>
- <string>2CEA2B220CE38A270097A5FF</string>
- <string>2CEA2B230CE38A270097A5FF</string>
- <string>2CEA2B240CE38A270097A5FF</string>
- <string>2CEA2B250CE38A270097A5FF</string>
- <string>2CEA2B260CE38A270097A5FF</string>
+ <string>2C89371E0CE3926A005D8A87</string>
+ <string>2C89371F0CE3926A005D8A87</string>
+ <string>2C8937200CE3926A005D8A87</string>
+ <string>2C8937210CE3926A005D8A87</string>
+ <string>2C8937220CE3926A005D8A87</string>
+ <string>2C8937230CE3926A005D8A87</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debug</string>
<key>WindowString</key>
- <string>227 161 964 829 0 0 1680 1028 </string>
+ <string>227 162 964 829 0 0 1680 1028 </string>
<key>WindowToolGUID</key>
<string>1CD10A99069EF8BA00B06720</string>
<key>WindowToolIsVisible</key>
- <true/>
+ <false/>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
@@ -908,7 +867,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
- <string>URecord.pas</string>
+ <string>UMusic.pas</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@@ -964,8 +923,8 @@
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
- <string>2CEA2B4B0CE38D340097A5FF</string>
- <string>2CEA2B4C0CE38D340097A5FF</string>
+ <string>2C89383B0CE3A559005D8A87</string>
+ <string>2C89383C0CE3A559005D8A87</string>
<string>1CDD528C0622207200134675</string>
<string>1CD0528E0623707200166675</string>
</array>
@@ -974,7 +933,7 @@
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
- <true/>
+ <false/>
</dict>
<dict>
<key>Identifier</key>
@@ -1028,7 +987,7 @@
<key>TableOfContents</key>
<array>
<string>2CDD4BFC0CB948FC00549FAC</string>
- <string>2CEA2B270CE38A270097A5FF</string>
+ <string>2C8937D00CE3A1FF005D8A87</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>WindowString</key>
@@ -1123,9 +1082,9 @@
<key>TableOfContents</key>
<array>
<string>1C0AD2B3069F1EA900FABCE6</string>
- <string>2CEA2AD30CE384040097A5FF</string>
+ <string>2C8937C80CE3A1ED005D8A87</string>
<string>1CD0528B0623707200166675</string>
- <string>2CEA2AD40CE384040097A5FF</string>
+ <string>2C8937C90CE3A1ED005D8A87</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.run</string>
@@ -1134,7 +1093,7 @@
<key>WindowToolGUID</key>
<string>1C0AD2B3069F1EA900FABCE6</string>
<key>WindowToolIsVisible</key>
- <false/>
+ <true/>
</dict>
<dict>
<key>FirstTimeWindowDisplayed</key>
diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser
index 481f2448..d421585b 100644
--- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser
+++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser
@@ -1,25 +1,5 @@
// !$*UTF8*$!
{
- 2C3366B90CE129A900399210 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2C4D9C620CC9EC8C0031092D /* TextGL.pas */;
- name = "TextGL.pas: 116";
- rLen = 0;
- rLoc = 2871;
- rType = 0;
- vrLen = 1468;
- vrLoc = 10961;
- };
- 2C3366BA0CE129A900399210 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2CF3EF260CDE13BA004F5956 /* MacResources.pas */;
- name = "MacResources.pas: 55";
- rLen = 0;
- rLoc = 1218;
- rType = 0;
- vrLen = 2000;
- vrLoc = 2591;
- };
2C4D9C620CC9EC8C0031092D /* TextGL.pas */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {758, 7840}}";
@@ -31,8 +11,8 @@
2C4D9C630CC9EC8C0031092D /* UAudio_bass.pas */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {884, 9100}}";
- sepNavSelRange = "{6579, 19}";
- sepNavVisRect = "{{0, 2661}, {758, 716}}";
+ sepNavSelRange = "{16714, 12}";
+ sepNavVisRect = "{{0, 8384}, {758, 716}}";
sepNavWindowFrame = "{{15, 178}, {797, 845}}";
};
};
@@ -70,9 +50,9 @@
};
2C4D9C680CC9EC8C0031092D /* UCore.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1305, 7028}}";
- sepNavSelRange = "{12989, 64}";
- sepNavVisRect = "{{0, 6320}, {1305, 534}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1202, 7294}}";
+ sepNavSelRange = "{12520, 0}";
+ sepNavVisRect = "{{0, 844}, {758, 716}}";
sepNavWindowFrame = "{{107, 94}, {797, 845}}";
};
};
@@ -214,17 +194,17 @@
};
2C4D9C7B0CC9EC8C0031092D /* UMain.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {998, 15246}}";
- sepNavSelRange = "{7261, 0}";
- sepNavVisRect = "{{0, 3896}, {923, 342}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1013, 15204}}";
+ sepNavSelRange = "{137, 0}";
+ sepNavVisRect = "{{0, 0}, {1013, 614}}";
sepNavWindowFrame = "{{222, 91}, {1052, 743}}";
};
};
2C4D9C7C0CC9EC8C0031092D /* UMedia_dummy.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {758, 3920}}";
- sepNavSelRange = "{859, 0}";
- sepNavVisRect = "{{0, 3204}, {758, 716}}";
+ sepNavIntBoundsRect = "{{0, 0}, {749, 3920}}";
+ sepNavSelRange = "{4805, 0}";
+ sepNavVisRect = "{{0, 1071}, {749, 470}}";
sepNavWindowFrame = "{{107, 94}, {797, 845}}";
};
};
@@ -239,8 +219,8 @@
2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {749, 4494}}";
- sepNavSelRange = "{5162, 12}";
- sepNavVisRect = "{{0, 2580}, {749, 470}}";
+ sepNavSelRange = "{4994, 0}";
+ sepNavVisRect = "{{0, 4024}, {749, 470}}";
sepNavWindowFrame = "{{153, 52}, {797, 845}}";
};
};
@@ -278,9 +258,9 @@
};
2C4D9C840CC9EC8C0031092D /* URecord.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {749, 5194}}";
- sepNavSelRange = "{7313, 19}";
- sepNavVisRect = "{{0, 4333}, {749, 470}}";
+ sepNavIntBoundsRect = "{{0, 0}, {758, 5194}}";
+ sepNavSelRange = "{7340, 0}";
+ sepNavVisRect = "{{0, 4312}, {758, 716}}";
sepNavWindowFrame = "{{130, 73}, {797, 845}}";
};
};
@@ -318,9 +298,9 @@
};
2C4D9C890CC9EC8C0031092D /* USongs.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1052, 14952}}";
- sepNavSelRange = "{9556, 0}";
- sepNavVisRect = "{{0, 5665}, {758, 716}}";
+ sepNavIntBoundsRect = "{{0, 0}, {950, 12908}}";
+ sepNavSelRange = "{8059, 0}";
+ sepNavVisRect = "{{0, 4142}, {758, 716}}";
sepNavWindowFrame = "{{15, 156}, {797, 845}}";
};
};
@@ -507,6 +487,70 @@
sepNavWindowFrame = "{{15, 282}, {616, 741}}";
};
};
+ 2C8937290CE393FB005D8A87 /* UPlatform.pas */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {737, 826}}";
+ sepNavSelRange = "{654, 0}";
+ sepNavVisRect = "{{0, 0}, {737, 826}}";
+ sepNavWindowFrame = "{{200, 62}, {776, 955}}";
+ };
+ };
+ 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {737, 938}}";
+ sepNavSelRange = "{1158, 0}";
+ sepNavVisRect = "{{0, 111}, {737, 827}}";
+ sepNavWindowFrame = "{{12, 31}, {776, 956}}";
+ };
+ };
+ 2C8938610CE3A901005D8A87 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2C4D9C890CC9EC8C0031092D /* USongs.pas */;
+ name = "USongs.pas: 467";
+ rLen = 0;
+ rLoc = 8854;
+ rType = 0;
+ vrLen = 1589;
+ vrLoc = 12291;
+ };
+ 2C8938630CE3AA53005D8A87 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */;
+ };
+ 2C8938690CE3AD88005D8A87 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = DDC6851B09F57195004E4BFF /* UltraStarDX.pas */;
+ };
+ 2C8938830CE3AFCE005D8A87 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2C4D9C890CC9EC8C0031092D /* USongs.pas */;
+ name = "USongs.pas: 315";
+ rLen = 0;
+ rLoc = 8059;
+ rType = 0;
+ vrLen = 1284;
+ vrLoc = 7645;
+ };
+ 2C8938840CE3AFCE005D8A87 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = DDC6851B09F57195004E4BFF /* UltraStarDX.pas */;
+ name = "UltraStarDX.pas: 3";
+ rLen = 0;
+ rLoc = 37;
+ rType = 0;
+ vrLen = 141;
+ vrLoc = 0;
+ };
+ 2C8938850CE3AFCE005D8A87 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */;
+ name = "UPlatformMacOSX.pas: 52";
+ rLen = 0;
+ rLoc = 1158;
+ rType = 0;
+ vrLen = 1411;
+ vrLoc = 80;
+ };
2CDC716B0CDB9CB70018F966 /* StrUtils.pas */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1013, 1022}}";
@@ -580,7 +624,8 @@
fileReference = 2CDD439C0CBBE92D00F364DE /* UMain.pas */;
hitCount = 1;
lineNumber = 293;
- modificationTime = 216240504.343527;
+ location = UltraStarDX;
+ modificationTime = 216245614.79797;
state = 1;
};
2CEA2AF00CE3868E0097A5FF /* PseudoThread.pas */ = {
@@ -591,58 +636,6 @@
sepNavWindowFrame = "{{15, 68}, {776, 955}}";
};
};
- 2CEA2B060CE388ED0097A5FF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- comments = "error:column 30 - Only virtual methods can be abstract";
- fRef = 2CEA2AF00CE3868E0097A5FF /* PseudoThread.pas */;
- rLen = 1;
- rLoc = 19;
- rType = 1;
- };
- 2CEA2B800CE38FA50097A5FF /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 2C4D9C840CC9EC8C0031092D /* URecord.pas */;
- };
- 2CEA2B960CE391870097A5FF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2C4D9C840CC9EC8C0031092D /* URecord.pas */;
- name = "URecord.pas: 325";
- rLen = 0;
- rLoc = 7340;
- rType = 0;
- vrLen = 1261;
- vrLoc = 6977;
- };
- 2CEA2B970CE391870097A5FF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2CEA2AF00CE3868E0097A5FF /* PseudoThread.pas */;
- name = "PseudoThread.pas: 23";
- rLen = 0;
- rLoc = 415;
- rType = 0;
- vrLen = 764;
- vrLoc = 0;
- };
- 2CEA2B980CE391870097A5FF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2C4D9C620CC9EC8C0031092D /* TextGL.pas */;
- name = "TextGL.pas: 116";
- rLen = 0;
- rLoc = 2871;
- rType = 0;
- vrLen = 1468;
- vrLoc = 10961;
- };
- 2CEA2B990CE391870097A5FF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2CF3EF260CDE13BA004F5956 /* MacResources.pas */;
- name = "MacResources.pas: 55";
- rLen = 0;
- rLoc = 1218;
- rType = 0;
- vrLen = 2000;
- vrLoc = 2591;
- };
2CF3EF210CDE13A0004F5956 /* Messages.pas */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1013, 614}}";
@@ -957,10 +950,10 @@
};
2CF551A70CDA356800627463 /* UltraStar.dpr */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1031, 2338}}";
- sepNavSelRange = "{6767, 0}";
- sepNavVisRect = "{{0, 1498}, {1031, 840}}";
- sepNavWindowFrame = "{{15, 54}, {1070, 969}}";
+ sepNavIntBoundsRect = "{{0, 0}, {914, 2674}}";
+ sepNavSelRange = "{4560, 0}";
+ sepNavVisRect = "{{0, 990}, {737, 827}}";
+ sepNavWindowFrame = "{{15, 67}, {776, 956}}";
};
};
2CF552110CDA3D1400627463 /* UPluginDefs.pas */ = {
@@ -1153,18 +1146,16 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 216237043;
- PBXWorkspaceStateSaveDate = 216237043;
+ PBXPerProjectTemplateStateSaveDate = 216240742;
+ PBXWorkspaceStateSaveDate = 216240742;
};
perUserProjectItems = {
- 2C3366B90CE129A900399210 /* PBXTextBookmark */ = 2C3366B90CE129A900399210 /* PBXTextBookmark */;
- 2C3366BA0CE129A900399210 /* PBXTextBookmark */ = 2C3366BA0CE129A900399210 /* PBXTextBookmark */;
- 2CEA2B060CE388ED0097A5FF /* PBXTextBookmark */ = 2CEA2B060CE388ED0097A5FF /* PBXTextBookmark */;
- 2CEA2B800CE38FA50097A5FF /* PBXBookmark */ = 2CEA2B800CE38FA50097A5FF /* PBXBookmark */;
- 2CEA2B960CE391870097A5FF /* PBXTextBookmark */ = 2CEA2B960CE391870097A5FF /* PBXTextBookmark */;
- 2CEA2B970CE391870097A5FF /* PBXTextBookmark */ = 2CEA2B970CE391870097A5FF /* PBXTextBookmark */;
- 2CEA2B980CE391870097A5FF /* PBXTextBookmark */ = 2CEA2B980CE391870097A5FF /* PBXTextBookmark */;
- 2CEA2B990CE391870097A5FF /* PBXTextBookmark */ = 2CEA2B990CE391870097A5FF /* PBXTextBookmark */;
+ 2C8938610CE3A901005D8A87 /* PBXTextBookmark */ = 2C8938610CE3A901005D8A87 /* PBXTextBookmark */;
+ 2C8938630CE3AA53005D8A87 /* PBXBookmark */ = 2C8938630CE3AA53005D8A87 /* PBXBookmark */;
+ 2C8938690CE3AD88005D8A87 /* PBXBookmark */ = 2C8938690CE3AD88005D8A87 /* PBXBookmark */;
+ 2C8938830CE3AFCE005D8A87 /* PBXTextBookmark */ = 2C8938830CE3AFCE005D8A87 /* PBXTextBookmark */;
+ 2C8938840CE3AFCE005D8A87 /* PBXTextBookmark */ = 2C8938840CE3AFCE005D8A87 /* PBXTextBookmark */;
+ 2C8938850CE3AFCE005D8A87 /* PBXTextBookmark */ = 2C8938850CE3AFCE005D8A87 /* PBXTextBookmark */;
};
sourceControlManager = 2CDD4B690CB9357000549FAC /* Source Control */;
userBuildSettings = {
@@ -1172,9 +1163,9 @@
};
DDC6851B09F57195004E4BFF /* UltraStarDX.pas */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {923, 342}}";
- sepNavSelRange = "{117, 0}";
- sepNavVisRect = "{{0, 0}, {923, 342}}";
+ sepNavIntBoundsRect = "{{0, 0}, {948, 730}}";
+ sepNavSelRange = "{37, 0}";
+ sepNavVisRect = "{{0, 0}, {948, 730}}";
sepNavWindowFrame = "{{189, 86}, {987, 859}}";
};
};
diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj b/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj
index a1515214..c1ce71ee 100644
--- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj
+++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj
@@ -136,6 +136,10 @@
2C4D9E450CC9F0ED0031092D /* switches.inc in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E440CC9F0ED0031092D /* switches.inc */; };
2C4D9E460CC9F0ED0031092D /* switches.inc in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E440CC9F0ED0031092D /* switches.inc */; };
2C4FA2A80CDBAD1E002CC3B0 /* ustar-icon_v01.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2C4FA2A70CDBAD1E002CC3B0 /* ustar-icon_v01.icns */; };
+ 2C89372A0CE393FB005D8A87 /* UPlatform.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C8937290CE393FB005D8A87 /* UPlatform.pas */; };
+ 2C89372B0CE393FB005D8A87 /* UPlatform.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C8937290CE393FB005D8A87 /* UPlatform.pas */; };
+ 2C8937340CE395CE005D8A87 /* UPlatformMacOSX.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */; };
+ 2C8937370CE395CE005D8A87 /* UPlatformMacOSX.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */; };
2CDC716C0CDB9CB70018F966 /* StrUtils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CDC716B0CDB9CB70018F966 /* StrUtils.pas */; };
2CDC716D0CDB9CB70018F966 /* StrUtils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CDC716B0CDB9CB70018F966 /* StrUtils.pas */; };
2CDD4BDE0CB947A400549FAC /* sdl.pas in Sources */ = {isa = PBXBuildFile; fileRef = 98B8BE5C0B1F974F00162019 /* sdl.pas */; };
@@ -430,6 +434,8 @@
2C4D9E090CC9EF840031092D /* Windows.pas */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 2; lastKnownFileType = sourcecode.pascal; name = Windows.pas; path = Wrapper/Windows.pas; sourceTree = "<group>"; tabWidth = 2; };
2C4D9E440CC9F0ED0031092D /* switches.inc */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 2; lastKnownFileType = sourcecode.pascal; name = switches.inc; path = ../switches.inc; sourceTree = SOURCE_ROOT; tabWidth = 2; };
2C4FA2A70CDBAD1E002CC3B0 /* ustar-icon_v01.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "ustar-icon_v01.icns"; path = "../../Graphics/ustar-icon_v01.icns"; sourceTree = SOURCE_ROOT; };
+ 2C8937290CE393FB005D8A87 /* UPlatform.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UPlatform.pas; path = ../Classes/UPlatform.pas; sourceTree = SOURCE_ROOT; };
+ 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 2; lastKnownFileType = sourcecode.pascal; lineEnding = 0; name = UPlatformMacOSX.pas; path = ../Classes/UPlatformMacOSX.pas; sourceTree = SOURCE_ROOT; tabWidth = 2; };
2CDC716B0CDB9CB70018F966 /* StrUtils.pas */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 2; lastKnownFileType = sourcecode.pascal; name = StrUtils.pas; path = ../../../Modis/SDK/StrUtils.pas; sourceTree = SOURCE_ROOT; tabWidth = 2; };
2CDEA4F60CBD725B0096994C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
2CEA2ADE0CE385190097A5FF /* Graphics.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = Graphics.pas; path = Wrapper/Graphics.pas; sourceTree = "<group>"; };
@@ -562,6 +568,8 @@
2CDD43820CBBE8D400F364DE /* Classes */ = {
isa = PBXGroup;
children = (
+ 2C8937310CE395CE005D8A87 /* UPlatformMacOSX.pas */,
+ 2C8937290CE393FB005D8A87 /* UPlatform.pas */,
2C4D9C620CC9EC8C0031092D /* TextGL.pas */,
2C4D9C630CC9EC8C0031092D /* UAudio_bass.pas */,
2C4D9C640CC9EC8C0031092D /* UAudio_FFMpeg.pas */,
@@ -1083,6 +1091,8 @@
2CEA2AE00CE385190097A5FF /* Graphics.pas in Sources */,
2CEA2AE10CE385190097A5FF /* JPEG.pas in Sources */,
2CEA2AF10CE3868E0097A5FF /* PseudoThread.pas in Sources */,
+ 2C89372A0CE393FB005D8A87 /* UPlatform.pas in Sources */,
+ 2C8937340CE395CE005D8A87 /* UPlatformMacOSX.pas in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1206,6 +1216,8 @@
2CEA2AE20CE385190097A5FF /* Graphics.pas in Sources */,
2CEA2AE30CE385190097A5FF /* JPEG.pas in Sources */,
2CEA2AF20CE3868E0097A5FF /* PseudoThread.pas in Sources */,
+ 2C89372B0CE393FB005D8A87 /* UPlatform.pas in Sources */,
+ 2C8937370CE395CE005D8A87 /* UPlatformMacOSX.pas in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr
index 0ab28cb6..fcc56d33 100644
--- a/Game/Code/UltraStar.dpr
+++ b/Game/Code/UltraStar.dpr
@@ -101,9 +101,16 @@ uses
uPluginLoader in 'Classes\uPluginLoader.pas', //New Plugin Loader Module
UParty in 'Classes\UParty.pas', // to - do : rewrite Party Manager as Module, reomplent ability to offer party Mody by Plugin
+ UPlatform in 'Classes\UPlatform.pas',
+{$IFDEF WIN32}
+ UPlatformWindows in 'Classes\UPlatformWindows.pas',
+{$ENDIF}
+{$IFDEF LINUX}
+ UPlatformLinux in 'Classes\UPlatformLinux.pas',
+{$ENDIF}
{$IFDEF FPC}
- ulazjpeg in 'Classes\Ulazjpeg.pas',
+ ulazjpeg in 'Classes\Ulazjpeg.pas',
{$ENDIF}