From a0ff0b75e3562e04f17f11fc41f2e49040d620c5 Mon Sep 17 00:00:00 2001 From: eddie-0815 Date: Thu, 8 Nov 2007 21:02:07 +0000 Subject: 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 --- Game/Code/Classes/UMain.pas | 3 - Game/Code/Classes/UPlatform.pas | 56 ++++++ Game/Code/Classes/UPlatformLinux.pas | 66 ++++++ Game/Code/Classes/UPlatformMacOSX.pas | 66 ++++++ Game/Code/Classes/UPlatformWindows.pas | 58 ++++++ Game/Code/Classes/USongs.pas | 222 ++++----------------- Game/Code/MacOSX/UltraStarDX.pas | 2 +- Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 | 171 ++++++---------- .../MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser | 209 ++++++++++--------- .../MacOSX/UltraStarDX.xcodeproj/project.pbxproj | 12 ++ Game/Code/UltraStar.dpr | 9 +- 11 files changed, 470 insertions(+), 404 deletions(-) create mode 100644 Game/Code/Classes/UPlatform.pas create mode 100644 Game/Code/Classes/UPlatformLinux.pas create mode 100644 Game/Code/Classes/UPlatformMacOSX.pas create mode 100644 Game/Code/Classes/UPlatformWindows.pas 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 @@ Content PBXProjectModuleGUID - 2CEA2B810CE38FB40097A5FF + 2C89379C0CE3A0CD005D8A87 PBXProjectModuleLabel - URecord.pas + USongs.pas PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID - 2CEA2B820CE38FB40097A5FF + 2C89379D0CE3A0CD005D8A87 PBXProjectModuleLabel - URecord.pas + USongs.pas _historyCapacity 0 bookmark - 2CEA2B960CE391870097A5FF + 2C8938830CE3AFCE005D8A87 history - 2CEA2B800CE38FA50097A5FF + 2C8938610CE3A901005D8A87 SplitCount @@ -223,31 +223,31 @@ PBXModuleWindowStatusBarHidden2 RubberWindowFrame - 130 129 797 789 0 0 1680 1028 + 15 212 797 789 0 0 1680 1028 Content PBXProjectModuleGUID - 2CEA2B1B0CE38A270097A5FF + 2C89386D0CE3AD9B005D8A87 PBXProjectModuleLabel - PseudoThread.pas + UltraStarDX.pas PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID - 2CEA2B1C0CE38A270097A5FF + 2C89386E0CE3AD9B005D8A87 PBXProjectModuleLabel - PseudoThread.pas + UltraStarDX.pas _historyCapacity 0 bookmark - 2CEA2B970CE391870097A5FF + 2C8938840CE3AFCE005D8A87 history - 2CEA2B060CE388ED0097A5FF + 2C8938690CE3AD88005D8A87 SplitCount @@ -259,35 +259,35 @@ Geometry Frame - {{0, 20}, {776, 858}} + {{0, 20}, {987, 762}} PBXModuleWindowStatusBarHidden2 RubberWindowFrame - 15 124 776 899 0 0 1680 1028 + 189 142 987 803 0 0 1680 1028 Content PBXProjectModuleGUID - 2C82EFB90CDFC4BA00A79F26 + 2C8938710CE3AD9B005D8A87 PBXProjectModuleLabel - TextGL.pas + UPlatformMacOSX.pas PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID - 2C82EFBA0CDFC4BA00A79F26 + 2C8938720CE3AD9B005D8A87 PBXProjectModuleLabel - TextGL.pas + UPlatformMacOSX.pas _historyCapacity 0 bookmark - 2CEA2B980CE391870097A5FF + 2C8938850CE3AFCE005D8A87 history - 2C3366B90CE129A900399210 + 2C8938630CE3AA53005D8A87 SplitCount @@ -299,51 +299,11 @@ Geometry Frame - {{0, 20}, {797, 748}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 38 213 797 789 0 0 1680 1028 - - - - Content - - PBXProjectModuleGUID - 2C82EF8B0CDFB9B300A79F26 - PBXProjectModuleLabel - MacResources.pas - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 2C82EF8C0CDFB9B300A79F26 - PBXProjectModuleLabel - MacResources.pas - _historyCapacity - 0 - bookmark - 2CEA2B990CE391870097A5FF - history - - 2C3366BA0CE129A900399210 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {873, 642}} + {{0, 20}, {776, 859}} PBXModuleWindowStatusBarHidden2 RubberWindowFrame - 200 304 873 683 0 0 1680 1028 + 12 87 776 900 0 0 1680 1028 @@ -380,6 +340,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -423,7 +385,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 17 + 22 15 0 @@ -448,7 +410,7 @@ 266 RubberWindowFrame - 760 270 817 753 0 0 1680 1028 + 759 271 817 753 0 0 1680 1028 Module PBXSmartGroupTreeModule @@ -485,7 +447,7 @@ Frame {{0, 0}, {529, 0}} RubberWindowFrame - 760 270 817 753 0 0 1680 1028 + 759 271 817 753 0 0 1680 1028 Module PBXNavigatorGroup @@ -493,8 +455,6 @@ 0pt - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -507,7 +467,7 @@ Frame {{0, 5}, {529, 707}} RubberWindowFrame - 760 270 817 753 0 0 1680 1028 + 759 271 817 753 0 0 1680 1028 Module XCDetailModule @@ -531,9 +491,9 @@ TableOfContents - 2CEA2ACE0CE384040097A5FF + 2C8937960CE3A0CC005D8A87 1CE0B1FE06471DED0097A5F4 - 2CEA2ACF0CE384040097A5FF + 2C8937970CE3A0CC005D8A87 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -667,22 +627,21 @@ 5 WindowOrderList - 2CEA2B280CE38A270097A5FF - 2CEA2B290CE38A270097A5FF + 1C530D57069F1CE1000CFCEE + 2C8937D10CE3A1FF005D8A87 + 2C8937D20CE3A1FF005D8A87 2CDD4BFC0CB948FC00549FAC - 2CEA2B260CE38A270097A5FF 2CDD4B730CB935C700549FAC - 1C0AD2B3069F1EA900FABCE6 - 2C82EF8B0CDFB9B300A79F26 - 2C82EFB90CDFC4BA00A79F26 - 2CEA2B1B0CE38A270097A5FF - 1C530D57069F1CE1000CFCEE - 2CEA2B810CE38FB40097A5FF - /Users/eddie/Projekte/UltraStarDX/trunk/Game/Code/MacOSX/UltraStarDX.xcodeproj 1CD10A99069EF8BA00B06720 + 2C8937230CE3926A005D8A87 + 2C8938710CE3AD9B005D8A87 + 2C89386D0CE3AD9B005D8A87 + 2C89379C0CE3A0CD005D8A87 + /Users/eddie/Projekte/UltraStarDX/trunk/Game/Code/MacOSX/UltraStarDX.xcodeproj + 1C0AD2B3069F1EA900FABCE6 WindowString - 760 270 817 753 0 0 1680 1028 + 759 271 817 753 0 0 1680 1028 WindowTools @@ -698,12 +657,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - URecord.pas + UPlatform.pas StatusBarVisibility @@ -720,8 +681,6 @@ 566pt - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -761,7 +720,7 @@ TableOfContents 2CDD4B730CB935C700549FAC - 2CEA2AD90CE384620097A5FF + 2C89375C0CE396D8005D8A87 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID @@ -803,8 +762,8 @@ yes sizes - {{0, 0}, {335, 414}} - {{335, 0}, {629, 414}} + {{0, 0}, {333, 414}} + {{333, 0}, {631, 414}} VerticalSplitView @@ -844,7 +803,7 @@ Frame {{0, 0}, {964, 788}} RubberWindowFrame - 227 161 964 829 0 0 1680 1028 + 227 162 964 829 0 0 1680 1028 Module PBXDebugSessionModule @@ -867,23 +826,23 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 2CEA2B200CE38A270097A5FF + 2C89371D0CE3926A005D8A87 1C162984064C10D400B95A72 - 2CEA2B210CE38A270097A5FF - 2CEA2B220CE38A270097A5FF - 2CEA2B230CE38A270097A5FF - 2CEA2B240CE38A270097A5FF - 2CEA2B250CE38A270097A5FF - 2CEA2B260CE38A270097A5FF + 2C89371E0CE3926A005D8A87 + 2C89371F0CE3926A005D8A87 + 2C8937200CE3926A005D8A87 + 2C8937210CE3926A005D8A87 + 2C8937220CE3926A005D8A87 + 2C8937230CE3926A005D8A87 ToolbarConfiguration xcode.toolbar.config.debug WindowString - 227 161 964 829 0 0 1680 1028 + 227 162 964 829 0 0 1680 1028 WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible - + FirstTimeWindowDisplayed @@ -908,7 +867,7 @@ PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel - URecord.pas + UMusic.pas StatusBarVisibility @@ -964,8 +923,8 @@ TableOfContents 1C530D57069F1CE1000CFCEE - 2CEA2B4B0CE38D340097A5FF - 2CEA2B4C0CE38D340097A5FF + 2C89383B0CE3A559005D8A87 + 2C89383C0CE3A559005D8A87 1CDD528C0622207200134675 1CD0528E0623707200166675 @@ -974,7 +933,7 @@ WindowToolGUID 1C530D57069F1CE1000CFCEE WindowToolIsVisible - + Identifier @@ -1028,7 +987,7 @@ TableOfContents 2CDD4BFC0CB948FC00549FAC - 2CEA2B270CE38A270097A5FF + 2C8937D00CE3A1FF005D8A87 1C78EAAC065D492600B07095 WindowString @@ -1123,9 +1082,9 @@ TableOfContents 1C0AD2B3069F1EA900FABCE6 - 2CEA2AD30CE384040097A5FF + 2C8937C80CE3A1ED005D8A87 1CD0528B0623707200166675 - 2CEA2AD40CE384040097A5FF + 2C8937C90CE3A1ED005D8A87 ToolbarConfiguration xcode.toolbar.config.run @@ -1134,7 +1093,7 @@ WindowToolGUID 1C0AD2B3069F1EA900FABCE6 WindowToolIsVisible - + FirstTimeWindowDisplayed 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 = ""; 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 = ""; }; 2CEA2ADE0CE385190097A5FF /* Graphics.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = Graphics.pas; path = Wrapper/Graphics.pas; sourceTree = ""; }; @@ -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} -- cgit v1.2.3