diff options
Diffstat (limited to 'src/MacOSX/Wrapper')
-rw-r--r-- | src/MacOSX/Wrapper/MacResources.pas | 124 | ||||
-rw-r--r-- | src/MacOSX/Wrapper/PseudoThread.pas | 48 | ||||
-rw-r--r-- | src/MacOSX/Wrapper/Windows.pas | 167 |
3 files changed, 339 insertions, 0 deletions
diff --git a/src/MacOSX/Wrapper/MacResources.pas b/src/MacOSX/Wrapper/MacResources.pas new file mode 100644 index 00000000..a97fb565 --- /dev/null +++ b/src/MacOSX/Wrapper/MacResources.pas @@ -0,0 +1,124 @@ +unit MacResources; + +{$I switches.inc} + +interface + +uses + Classes, Windows, SysUtils; + +type + + TResourceStream = class(TFileStream) + private + public + constructor Create(Instance: THandle; const ResName: string; ResType: PChar); + end; + + Function FindResource( hInstance : THandle; pcIdentifier : PChar; pcResType : PChar) : THandle; + +implementation + +Function FindResource( hInstance : THandle; pcIdentifier : PChar; pcResType : PChar) : THandle; +begin + Result := 1; +end; + +Function GetResourcesPath : String; +var + x, + i : integer; +begin + Result := ExtractFilePath(ParamStr(0)); + for x := 0 to 2 do begin + i := Length(Result); + repeat + Delete( Result, i, 1); + i := Length(Result); + until (i = 0) or (Result[i] = '/'); + end; +end; + +{ TResourceStream } + +constructor TResourceStream.Create(Instance: THandle; const ResName: string; ResType: PChar); +var + sResNameLower : string; + sFileName : String; +begin + sResNameLower := LowerCase(string(ResName)); + + if ResType = 'TEX' then begin + if sResNameLower = 'font' then + sFileName := GetResourcesPath + 'Fonts/Normal/eurostar_regular.png' + else if sResNameLower = 'fontb' then + sFileName := GetResourcesPath + 'Fonts/Bold/eurostar_regular_bold.png' + else if sResNameLower = 'fonto' then + sFileName := GetResourcesPath + 'Fonts/Outline 1/Outline 1.png' + else if sResNameLower = 'fonto2' then + sFileName := GetResourcesPath + 'Fonts/Outline 2/Outline 2.png' + else if sResNameLower = 'crdts_bg' then + sFileName := GetResourcesPath + 'Graphics/credits_v5_bg.png' + else if sResNameLower = 'crdts_ovl' then + sFileName := GetResourcesPath + 'Graphics/credits_v5_overlay.png' + else if sResNameLower = 'crdts_blindguard' then + sFileName := GetResourcesPath + 'Graphics/names_blindguard.png' + else if sResNameLower = 'crdts_blindy' then + sFileName := GetResourcesPath + 'Graphics/names_blindy.png' + else if sResNameLower = 'crdts_canni' then + sFileName := GetResourcesPath + 'Graphics/names_canni.png' + else if sResNameLower = 'crdts_commandio' then + sFileName := GetResourcesPath + 'Graphics/names_commandio.png' + else if sResNameLower = 'crdts_lazyjoker' then + sFileName := GetResourcesPath + 'Graphics/names_lazyjoker.png' + else if sResNameLower = 'crdts_mog' then + sFileName := GetResourcesPath + 'Graphics/names_mog.png' + else if sResNameLower = 'crdts_mota' then + sFileName := GetResourcesPath + 'Graphics/names_mota.png' + else if sResNameLower = 'crdts_skillmaster' then + sFileName := GetResourcesPath + 'Graphics/names_skillmaster.png' + else if sResNameLower = 'crdts_whiteshark' then + sFileName := GetResourcesPath + 'Graphics/names_whiteshark.png' + else if sResNameLower = 'intro_l01' then + sFileName := GetResourcesPath + 'Graphics/intro-l-01.png' + else if sResNameLower = 'intro_l02' then + sFileName := GetResourcesPath + 'Graphics/intro-l-02.png' + else if sResNameLower = 'intro_l03' then + sFileName := GetResourcesPath + 'Graphics/intro-l-03.png' + else if sResNameLower = 'intro_l04' then + sFileName := GetResourcesPath + 'Graphics/intro-l-04.png' + else if sResNameLower = 'intro_l05' then + sFileName := GetResourcesPath + 'Graphics/intro-l-05.png' + else if sResNameLower = 'intro_l06' then + sFileName := GetResourcesPath + 'Graphics/intro-l-06.png' + else if sResNameLower = 'intro_l07' then + sFileName := GetResourcesPath + 'Graphics/intro-l-07.png' + else if sResNameLower = 'intro_l08' then + sFileName := GetResourcesPath + 'Graphics/intro-l-08.png' + else if sResNameLower = 'intro_l09' then + sFileName := GetResourcesPath + 'Graphics/intro-l-09.png' + else if sResNameLower = 'outro_bg' then + sFileName := GetResourcesPath + 'Graphics/outro-bg.png' + else if sResNameLower = 'outro_esc' then + sFileName := GetResourcesPath + 'Graphics/outro-esc.png' + else if sResNameLower = 'outro_exd' then + sFileName := GetResourcesPath + 'Graphics/outro-exit-dark.png'; + end + else if ResType = 'FNT' then begin + if sResNameLower = 'font' then + sFileName := GetResourcesPath + 'Fonts/Normal/eurostar_regular.dat' + else if sResNameLower = 'fontb' then + sFileName := GetResourcesPath + 'Fonts/Bold/eurostar_regular_bold.dat' + else if sResNameLower = 'fonto' then + sFileName := GetResourcesPath + 'Fonts/Outline 1/Outline 1.dat' + else if sResNameLower = 'fonto2' then + sFileName := GetResourcesPath + 'Fonts/Outline 2/Outline 2.dat'; + end; + + if FileExists(sFileName) then + inherited Create( sFileName, fmOpenReadWrite) + else + raise Exception.Create('MacResources.TResourceStream.Create: File "' + sFileName + '" not found.'); +end; + +end. diff --git a/src/MacOSX/Wrapper/PseudoThread.pas b/src/MacOSX/Wrapper/PseudoThread.pas new file mode 100644 index 00000000..16157646 --- /dev/null +++ b/src/MacOSX/Wrapper/PseudoThread.pas @@ -0,0 +1,48 @@ +unit PseudoThread; + +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + +{$I switches.inc} + +interface + +type + +// Debugging threads with XCode doesn't seem to work. +// We use PseudoThread in Debug mode to get proper debugging. +TPseudoThread = class(TObject) + private + protected + Terminated, + FreeOnTerminate : Boolean; + procedure Execute; virtual; abstract; + procedure Resume; + procedure Suspend; + public + constructor Create(const suspended : Boolean); +end; + +implementation + +{ TPseudoThread } + +constructor TPseudoThread.Create(const suspended : Boolean); +begin + if not suspended then begin + Execute; + end; +end; + +procedure TPseudoThread.Resume; +begin + Execute; +end; + +procedure TPseudoThread.Suspend; +begin +end; + +end. + diff --git a/src/MacOSX/Wrapper/Windows.pas b/src/MacOSX/Wrapper/Windows.pas new file mode 100644 index 00000000..cee75591 --- /dev/null +++ b/src/MacOSX/Wrapper/Windows.pas @@ -0,0 +1,167 @@ +unit Windows; + +{$I switches.inc} + +interface + +uses Types; + +const + opengl32 = 'OpenGL'; + MAX_PATH = 260; + +type + + DWORD = Types.DWORD; + {$EXTERNALSYM DWORD} + BOOL = LongBool; + {$EXTERNALSYM BOOL} + PBOOL = ^BOOL; + {$EXTERNALSYM PBOOL} + PByte = Types.PByte; + PINT = ^Integer; + {$EXTERNALSYM PINT} + PSingle = ^Single; + PWORD = ^Word; + {$EXTERNALSYM PWORD} + PDWORD = ^DWORD; + {$EXTERNALSYM PDWORD} + LPDWORD = PDWORD; + {$EXTERNALSYM LPDWORD} + HDC = type LongWord; + {$EXTERNALSYM HDC} + HGLRC = type LongWord; + {$EXTERNALSYM HGLRC} + TLargeInteger = Int64; + HFONT = type LongWord; + {$EXTERNALSYM HFONT} + HWND = type LongWord; + {$EXTERNALSYM HWND} + + PPaletteEntry = ^TPaletteEntry; + {$EXTERNALSYM tagPALETTEENTRY} + tagPALETTEENTRY = packed record + peRed: Byte; + peGreen: Byte; + peBlue: Byte; + peFlags: Byte; + end; + TPaletteEntry = tagPALETTEENTRY; + {$EXTERNALSYM PALETTEENTRY} + PALETTEENTRY = tagPALETTEENTRY; + + PRGBQuad = ^TRGBQuad; + {$EXTERNALSYM tagRGBQUAD} + tagRGBQUAD = packed record + rgbBlue: Byte; + rgbGreen: Byte; + rgbRed: Byte; + rgbReserved: Byte; + end; + TRGBQuad = tagRGBQUAD; + {$EXTERNALSYM RGBQUAD} + RGBQUAD = tagRGBQUAD; + + PBitmapInfoHeader = ^TBitmapInfoHeader; + {$EXTERNALSYM tagBITMAPINFOHEADER} + tagBITMAPINFOHEADER = packed record + biSize: DWORD; + biWidth: Longint; + biHeight: Longint; + biPlanes: Word; + biBitCount: Word; + biCompression: DWORD; + biSizeImage: DWORD; + biXPelsPerMeter: Longint; + biYPelsPerMeter: Longint; + biClrUsed: DWORD; + biClrImportant: DWORD; + end; + TBitmapInfoHeader = tagBITMAPINFOHEADER; + {$EXTERNALSYM BITMAPINFOHEADER} + BITMAPINFOHEADER = tagBITMAPINFOHEADER; + + PBitmapInfo = ^TBitmapInfo; + {$EXTERNALSYM tagBITMAPINFO} + tagBITMAPINFO = packed record + bmiHeader: TBitmapInfoHeader; + bmiColors: array[0..0] of TRGBQuad; + end; + TBitmapInfo = tagBITMAPINFO; + {$EXTERNALSYM BITMAPINFO} + BITMAPINFO = tagBITMAPINFO; + + PBitmapFileHeader = ^TBitmapFileHeader; + {$EXTERNALSYM tagBITMAPFILEHEADER} + tagBITMAPFILEHEADER = packed record + bfType: Word; + bfSize: DWORD; + bfReserved1: Word; + bfReserved2: Word; + bfOffBits: DWORD; + end; + TBitmapFileHeader = tagBITMAPFILEHEADER; + {$EXTERNALSYM BITMAPFILEHEADER} + BITMAPFILEHEADER = tagBITMAPFILEHEADER; + + + function MakeLong(a, b: Word): Longint; + procedure ZeroMemory(Destination: Pointer; Length: DWORD); + function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; + function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; + function GetTickCount : Cardinal; + Procedure ShowMessage(msg : string); + procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); + +implementation + +uses SDL; + +procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); +begin + Move(Source^, Destination^, Length); +end; + +Procedure ShowMessage(msg : string); +begin + // to be implemented +end; + +function MakeLong(A, B: Word): Longint; +begin + Result := (LongInt(B) shl 16) + A; +end; + +procedure ZeroMemory(Destination: Pointer; Length: DWORD); +begin + FillChar( Destination^, Length, 0); +end; + +function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; +begin +{$IFDEF MSWINDOWS} + Result := Windows.QueryPerformanceFrequency(lpFrequency); +{$ENDIF} +{$IFDEF MACOS} + Result := true; + lpFrequency := 1000; +{$ENDIF} +end; + +function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; +begin +{$IFDEF MSWINDOWS} + Result := Windows.QueryPerformanceCounter(lpPerformanceCount); +{$ENDIF} +{$IFDEF MACOS} + Result := true; + lpPerformanceCount := SDL_GetTicks; +{$ENDIF} +end; + +function GetTickCount : Cardinal; +begin + Result := SDL_GetTicks; +end; + +end. |