aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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}