hedgewars/uMisc.pas
author unC0Rr
Thu, 18 Nov 2010 11:45:31 +0300
changeset 4375 ae5507ddb989
parent 4374 bcefeeabaa33
child 4376 9654205a9424
permissions -rw-r--r--
Introduce uTextures
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
     1
(*
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     2
* Hedgewars, a free turn based strategy game
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     3
* Copyright (c) 2004-2008 Andrey Korotaev <unC0Rr@gmail.com>
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     4
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     5
* This program is free software; you can redistribute it and/or modify
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     6
* it under the terms of the GNU General Public License as published by
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     7
* the Free Software Foundation; version 2 of the License
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     8
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
     9
* This program is distributed in the hope that it will be useful,
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    12
* GNU General Public License for more details.
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    13
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    14
* You should have received a copy of the GNU General Public License
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    15
* along with this program; if not, write to the Free Software
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
    17
*)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    18
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2622
diff changeset
    19
{$INCLUDE "options.inc"}
079ef82eac75 revamped file access and debug display
koda
parents: 2622
diff changeset
    20
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    21
unit uMisc;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    22
interface
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2622
diff changeset
    23
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4371
diff changeset
    24
uses    SDLh, uConsts, GLunit, uTypes;
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2693
diff changeset
    25
3611
ed00aa2b339e interpret parameters before initializing everything
koda
parents: 3599
diff changeset
    26
3169
c8c6ac44f51b prophylactic removal of some Integer references, raise a few of the template islands up a bit so they work inverted without triggering border
nemo
parents: 3165
diff changeset
    27
procedure movecursor(dx, dy: LongInt);
3929
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    28
(*
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    29
procedure AdjustColor(var Color: Longword);
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
    30
procedure SetKB(n: Longword);
3929
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    31
*)
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
    32
procedure SendKB;
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 304
diff changeset
    33
procedure SendStat(sit: TStatInfoType; s: shortstring);
2670
1b327b7515ed regression, powerpc colors working again
koda
parents: 2666
diff changeset
    34
function  doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface;
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4371
diff changeset
    35
procedure OutError(Msg: shortstring; isFatalError: boolean);
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4371
diff changeset
    36
procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline;
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4371
diff changeset
    37
procedure SDLTry(Assert: boolean; isFatal: boolean);
2735
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
    38
procedure MakeScreenshot(filename: shortstring);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    39
4359
83ef50815535 Move variables from uMisc to uVariables
unC0Rr
parents: 4357
diff changeset
    40
procedure initModule;
83ef50815535 Move variables from uMisc to uVariables
unC0Rr
parents: 4357
diff changeset
    41
procedure freeModule;
83ef50815535 Move variables from uMisc to uVariables
unC0Rr
parents: 4357
diff changeset
    42
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    43
implementation
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4371
diff changeset
    44
uses uConsole, uIO, typinfo, sysutils, uVariables, uUtils;
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
    45
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
    46
var KBnum: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    47
3756
d42571e2e6c9 lua function SetEffect to set and remove THogEffects
burp
parents: 3709
diff changeset
    48
3169
c8c6ac44f51b prophylactic removal of some Integer references, raise a few of the template islands up a bit so they work inverted without triggering border
nemo
parents: 3165
diff changeset
    49
procedure movecursor(dx, dy: LongInt);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    50
var x, y: LongInt;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    51
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    52
if (dx = 0) and (dy = 0) then exit;
2671
7e0f88013fe8 smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents: 2670
diff changeset
    53
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    54
SDL_GetMouseState(@x, @y);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    55
Inc(x, dx);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    56
Inc(y, dy);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    57
SDL_WarpMouse(x, y);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    58
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2392
diff changeset
    59
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    60
2905
f3c79f7193a9 Engine:
smxx
parents: 2882
diff changeset
    61
procedure OutError(Msg: shortstring; isFatalError: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    62
begin
3407
dcc129c4352e Engine:
smxx
parents: 3381
diff changeset
    63
// obsolete? written in WriteLnToConsole() anyway
dcc129c4352e Engine:
smxx
parents: 3381
diff changeset
    64
// {$IFDEF DEBUGFILE}AddFileLog(Msg);{$ENDIF}
4046
cfdbddc4b385 making indentation consistent (noticed while debugging)
nemo
parents: 4003
diff changeset
    65
WriteLnToConsole(Msg);
cfdbddc4b385 making indentation consistent (noticed while debugging)
nemo
parents: 4003
diff changeset
    66
if isFatalError then
3407
dcc129c4352e Engine:
smxx
parents: 3381
diff changeset
    67
    begin
4046
cfdbddc4b385 making indentation consistent (noticed while debugging)
nemo
parents: 4003
diff changeset
    68
    SendIPC('E' + GetLastConsoleLine);
cfdbddc4b385 making indentation consistent (noticed while debugging)
nemo
parents: 4003
diff changeset
    69
    SDL_Quit;
cfdbddc4b385 making indentation consistent (noticed while debugging)
nemo
parents: 4003
diff changeset
    70
    halt(1)
3407
dcc129c4352e Engine:
smxx
parents: 3381
diff changeset
    71
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    72
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    73
2905
f3c79f7193a9 Engine:
smxx
parents: 2882
diff changeset
    74
procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    75
begin
70
82d93eeecebe - Many AI improvements
unc0rr
parents: 56
diff changeset
    76
if not Assert then OutError(Msg, isFatal)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    77
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    78
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    79
procedure SDLTry(Assert: boolean; isFatal: boolean);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    80
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    81
if not Assert then OutError(SDL_GetError, isFatal)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    82
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    83
3929
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    84
(*
188
a7c2a61524c2 Cardinal -> Longword
unc0rr
parents: 183
diff changeset
    85
procedure AdjustColor(var Color: Longword);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    86
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    87
Color:= SDL_MapRGB(PixelFormat, (Color shr 16) and $FF, (Color shr 8) and $FF, Color and $FF)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    88
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    89
3929
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    90
procedure SetKB(n: Longword);
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    91
begin
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    92
KBnum:= n
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    93
end;
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    94
*)
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    95
9a4bbc1f67a2 Inline most of uFloat (saves ~7.5% opcount on a test game), inline a few very short candidates in uMisc, comment out some unused functions in uMisc
nemo
parents: 3914
diff changeset
    96
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
    97
procedure SendKB;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
    98
var s: shortstring;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
    99
begin
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   100
if KBnum <> 0 then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   101
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   102
s:= 'K' + inttostr(KBnum);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   103
SendIPCRaw(@s, Length(s) + 1)
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   104
end
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   105
end;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   106
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   107
procedure SendStat(sit: TStatInfoType; s: shortstring);
3784
75aa91bea32b Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents: 3779
diff changeset
   108
const stc: array [TStatInfoType] of char = 'rDkKHTPsSB';
2382
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 2376
diff changeset
   109
var buf: shortstring;
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   110
begin
2382
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 2376
diff changeset
   111
buf:= 'i' + stc[sit] + s;
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 2376
diff changeset
   112
SendIPCRaw(@buf[0], length(buf) + 1)
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   113
end;
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   114
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   115
2735
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   116
procedure MakeScreenshot(filename: shortstring);
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   117
var p: Pointer;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   118
    size: Longword;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   119
    f: file;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   120
    // Windows Bitmap Header
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   121
    head: array[0..53] of Byte = (
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   122
    $42, $4D, // identifier ("BM")
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   123
    0, 0, 0, 0, // file size
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   124
    0, 0, 0, 0, // reserved
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   125
    54, 0, 0, 0, // starting offset
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   126
    40, 0, 0, 0, // header size
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   127
    0, 0, 0, 0, // width
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   128
    0, 0, 0, 0, // height
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   129
    1, 0, // color planes
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   130
    24, 0, // bit depth
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   131
    0, 0, 0, 0, // compression method (uncompressed)
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   132
    0, 0, 0, 0, // image size
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   133
    96, 0, 0, 0, // horizontal resolution
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   134
    96, 0, 0, 0, // vertical resolution
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   135
    0, 0, 0, 0, // number of colors (all)
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   136
    0, 0, 0, 0 // number of important colors
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   137
    );
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   138
begin
3107
1fa539758c10 Engine:
smxx
parents: 3066
diff changeset
   139
// flash
1fa539758c10 Engine:
smxx
parents: 3066
diff changeset
   140
ScreenFade:= sfFromWhite;
1fa539758c10 Engine:
smxx
parents: 3066
diff changeset
   141
ScreenFadeValue:= sfMax;
1fa539758c10 Engine:
smxx
parents: 3066
diff changeset
   142
ScreenFadeSpeed:= 5;
1fa539758c10 Engine:
smxx
parents: 3066
diff changeset
   143
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   144
size:= cScreenWidth * cScreenHeight * 3;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   145
p:= GetMem(size);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   146
2735
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   147
// update header information and file name
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   148
3350
5cd02aafc612 Engine:
smxx
parents: 3337
diff changeset
   149
filename:= ParamStr(1) + '/Screenshots/' + filename + '.bmp';
2735
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   150
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   151
head[$02]:= (size + 54) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   152
head[$03]:= ((size + 54) shr 8) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   153
head[$04]:= ((size + 54) shr 16) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   154
head[$05]:= ((size + 54) shr 24) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   155
head[$12]:= cScreenWidth and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   156
head[$13]:= (cScreenWidth shr 8) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   157
head[$14]:= (cScreenWidth shr 16) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   158
head[$15]:= (cScreenWidth shr 24) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   159
head[$16]:= cScreenHeight and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   160
head[$17]:= (cScreenHeight shr 8) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   161
head[$18]:= (cScreenHeight shr 16) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   162
head[$19]:= (cScreenHeight shr 24) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   163
head[$22]:= size and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   164
head[$23]:= (size shr 8) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   165
head[$24]:= (size shr 16) and $ff;
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   166
head[$25]:= (size shr 24) and $ff;
2163
12730f5e79b9 koda's patch fixing some iphone port troubles (color, mouse)
unc0rr
parents: 2162
diff changeset
   167
12730f5e79b9 koda's patch fixing some iphone port troubles (color, mouse)
unc0rr
parents: 2162
diff changeset
   168
//remember that opengles operates on a single surface, so GL_FRONT *should* be implied
3663
8c28abf427f5 reduce the number of keywords used and switch to BMP format for screenshots
koda
parents: 3650
diff changeset
   169
//glReadBuffer(GL_FRONT);
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   170
glReadPixels(0, 0, cScreenWidth, cScreenHeight, GL_BGR, GL_UNSIGNED_BYTE, p);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   171
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   172
{$I-}
2735
f2008d0ce3f8 Engine:
smxx
parents: 2726
diff changeset
   173
Assign(f, filename);
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   174
Rewrite(f, 1);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   175
if IOResult = 0 then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   176
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   177
    BlockWrite(f, head, sizeof(head));
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   178
    BlockWrite(f, p^, size);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   179
    Close(f);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   180
    end;
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   181
{$I+}
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   182
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   183
FreeMem(p)
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   184
end;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   185
2619
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   186
function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface;
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   187
{* for more information http://www.idevgames.com/forum/showpost.php?p=85864&postcount=7 *}
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   188
var convertedSurf: PSDL_Surface = nil;
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   189
begin
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   190
    if (tmpsurf^.format^.bitsperpixel = 24) or ((tmpsurf^.format^.bitsperpixel = 32) and (tmpsurf^.format^.rshift > tmpsurf^.format^.bshift)) then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   191
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   192
        convertedSurf:= SDL_ConvertSurface(tmpsurf, @conversionFormat, SDL_SWSURFACE);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   193
        SDL_FreeSurface(tmpsurf);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   194
        exit(convertedSurf);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   195
    end;
2705
2b5625c4ec16 fix a nasty 196 bytes memory leak in engine, plus other stuff for iphone frontend
koda
parents: 2699
diff changeset
   196
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2915
diff changeset
   197
    exit(tmpsurf);
2619
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   198
end;
bc2786a00fb8 fix wrong ttf blending in ppc
koda
parents: 2607
diff changeset
   199
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   200
3038
4e48c276a468 In pascal unit is a namespace
unc0rr
parents: 2948
diff changeset
   201
procedure initModule;
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   202
begin
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2947
diff changeset
   203
    KBnum           := 0;
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   204
end;
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   205
3038
4e48c276a468 In pascal unit is a namespace
unc0rr
parents: 2948
diff changeset
   206
procedure freeModule;
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   207
begin
3626
19f78afa0188 fix the multitouch shooting and moving
koda
parents: 3613
diff changeset
   208
    recordFileName:= '';
2699
249adefa9c1c replace initialization/finalization statements with custom init functions
koda
parents: 2698
diff changeset
   209
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   210
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   211
end.