hedgewars/uMisc.pas
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 2017 7845c77c8d31
child 2023 41d3afaa20c7
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1057
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 869
diff changeset
     3
 * Copyright (c) 2004-2008 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 174
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    18
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    19
unit uMisc;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    20
interface
1906
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    21
uses uConsts, SDLh,
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    22
{$IFDEF IPHONE}
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    23
	gles11,
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    24
{$ELSE}
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    25
	GL,
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    26
{$ENDIF}
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
    27
	uFloat;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    28
{$INCLUDE options.inc}
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    29
var
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    30
	isCursorVisible : boolean = false;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    31
	isTerminated    : boolean = false;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    32
	isInLag         : boolean = false;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    33
	isPaused        : boolean = false;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    34
	isSoundEnabled  : boolean = true;
1128
9b3f42bf4eef Add an option to engine for turning music off
unc0rr
parents: 1124
diff changeset
    35
	isMusicEnabled  : boolean = false;
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    36
	isSEBackup      : boolean = true;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    37
	isInMultiShoot  : boolean = false;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    38
	isSpeed         : boolean = false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    39
1560
e140bc57ff68 Quick replay round to spectators until current move
unc0rr
parents: 1530
diff changeset
    40
	fastUntilLag    : boolean = false;
e140bc57ff68 Quick replay round to spectators until current move
unc0rr
parents: 1530
diff changeset
    41
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    42
	GameState     : TGameState = Low(TGameState);
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    43
	GameType      : TGameType = gmtLocal;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    44
	GameFlags     : Longword = 0;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    45
	TurnTimeLeft  : Longword = 0;
1784
dfe9bafb4590 Apply nemo's patch polished by me:
unc0rr
parents: 1782
diff changeset
    46
	cSuddenDTurns : LongInt = 15;
1895
7ba647a88b2f More game options by nemo
unc0rr
parents: 1888
diff changeset
    47
	cDamagePercent : LongInt = 100;
1797
fedd8649fdd9 Templates filter by nemo
unc0rr
parents: 1784
diff changeset
    48
	cTemplateFilter : LongInt = 0;
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1861
diff changeset
    49
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    50
	cHedgehogTurnTime: Longword = 45000;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    51
	cMaxAIThinkTime  : Longword = 9000;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    52
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    53
	cCloudsNumber    : LongInt = 9;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    54
	cScreenWidth     : LongInt = 1024;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    55
	cScreenHeight    : LongInt = 768;
1121
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1080
diff changeset
    56
	cInitWidth       : LongInt = 1024;
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1080
diff changeset
    57
	cInitHeight      : LongInt = 768;
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
    58
	cBits            : LongInt = 32;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
    59
	cBitsStr         : string[2] = '32';
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    60
	cTagsMask        : byte = 7;
74
42257fee61ae - Unicode support for team and hedgehogs names
unc0rr
parents: 72
diff changeset
    61
1760
55a1edd97911 Fix nemo's large land patch
unc0rr
parents: 1753
diff changeset
    62
	cWaterLine       : LongInt = LAND_HEIGHT;
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    63
	cVisibleWater    : LongInt = 128;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    64
	cGearScrEdgesDist: LongInt = 240;
1530
3b8d723661b2 Implement Solid Land checkbox
unc0rr
parents: 1346
diff changeset
    65
	cCursorEdgesDist : LongInt = 100;
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    66
	cTeamHealthWidth : LongInt = 128;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    67
	cAltDamage       : boolean = true;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    68
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    69
	GameTicks     : LongWord = 0;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    70
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    71
	cSkyColor     : Longword = 0;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    72
	cWhiteColor   : Longword = $FFFFFFFF;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    73
	cColorNearBlack       : Longword = $FF000010;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    74
	cExplosionBorderColor : LongWord = $808080;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    75
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
    76
	cShowFPS      : boolean = false;
1298
18fdc25fe65d - Fix water rise
unc0rr
parents: 1295
diff changeset
    77
	cCaseFactor   : Longword = 5;  {0..9}
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    78
	cLandAdditions: Longword = 4;
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1861
diff changeset
    79
	cFullScreen   : boolean = false;
1812
3d4692e825e7 'Reduce quality' patch by nemo
unc0rr
parents: 1797
diff changeset
    80
	cReducedQuality : boolean = false;
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    81
	cLocaleFName  : shortstring = 'en.txt';
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    82
	cSeed         : shortstring = '';
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    83
	cInitVolume   : LongInt = 128;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    84
	cVolumeDelta  : LongInt = 0;
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
    85
	cTimerInterval   : Longword = 8;
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    86
	cHasFocus     : boolean = true;
1057
6b5785287f42 Dec delay
unc0rr
parents: 1055
diff changeset
    87
	cInactDelay   : Longword = 1250;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    88
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    89
	bBetweenTurns: boolean = false;
1055
9af540b23409 Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents: 1054
diff changeset
    90
	cHealthDecrease: LongWord = 0;
9af540b23409 Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents: 1054
diff changeset
    91
	bWaterRising   : Boolean = false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    92
614
0e04504bc140 - Fix some warnings
unc0rr
parents: 564
diff changeset
    93
{$WARNINGS OFF}
1124
1636a3c7c061 - Airplane is higher
unc0rr
parents: 1121
diff changeset
    94
	cAirPlaneSpeed: hwFloat = (isNegative: false; QWordValue:   3006477107); // 1.4
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    95
	cBombsSpeed   : hwFloat = (isNegative: false; QWordValue:    429496729);
614
0e04504bc140 - Fix some warnings
unc0rr
parents: 564
diff changeset
    96
{$WARNINGS ON}
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 539
diff changeset
    97
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
    98
var
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
    99
	cSendEmptyPacketTime : LongWord = 2000;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   100
	cSendCursorPosTime   : LongWord = 50;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   101
	ShowCrosshair  : boolean;
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   102
	cDrownSpeed,
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   103
	cMaxWindSpeed,
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   104
	cWindSpeed,
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   105
	cGravity: hwFloat;
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1812
diff changeset
   106
	cDamageModifier: hwFloat;
1854
6e05013899b2 laser beam by nemo reworked a bit by me
unc0rr
parents: 1849
diff changeset
   107
	cLaserSighting: boolean;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 2008
diff changeset
   108
	cVampiric: boolean;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   109
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   110
	flagMakeCapture: boolean = false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   111
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   112
	InitStepsFlags: Longword = 0;
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 53
diff changeset
   113
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   114
	RealTicks: Longword = 0;
836
150c7c87e66c - Small formatting changes
unc0rr
parents: 802
diff changeset
   115
1054
80225c6af656 - Prepare for sudden death implementation
unc0rr
parents: 988
diff changeset
   116
	AttackBar: LongInt = 0; // 0 - none, 1 - just bar at the right-down corner, 2 - like in WWP
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   117
1911
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   118
type HwColor3f = record
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   119
		r, g, b: byte
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   120
		end;
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   121
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   122
var WaterColorArray: array[0..3] of HwColor3f;
6283bd8a960b use glVertexPointer to render water
unc0rr
parents: 1906
diff changeset
   123
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   124
function hwSign(r: hwFloat): LongInt;
802
ed5450a89b96 Start implementing 'visual gears' - gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents: 788
diff changeset
   125
function Min(a, b: LongInt): LongInt;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   126
function Max(a, b: LongInt): LongInt;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   127
procedure OutError(Msg: String; isFatalError: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   128
procedure TryDo(Assert: boolean; Msg: string; isFatal: boolean);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   129
procedure SDLTry(Assert: boolean; isFatal: boolean);
316
57d50189ad86 Calculate land digest
unc0rr
parents: 308
diff changeset
   130
function IntToStr(n: LongInt): shortstring;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   131
function FloatToStr(n: hwFloat): shortstring;
775
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   132
function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   133
function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt;
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   134
function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   135
procedure AdjustColor(var Color: Longword);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   136
{$IFDEF DEBUGFILE}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   137
procedure AddFileLog(s: shortstring);
24
79c411363184 Add theme objects to land
unc0rr
parents: 17
diff changeset
   138
function RectToStr(Rect: TSDL_Rect): shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   139
{$ENDIF}
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   140
procedure SetKB(n: Longword);
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   141
procedure SendKB;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   142
procedure SetLittle(var r: hwFloat);
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 304
diff changeset
   143
procedure SendStat(sit: TStatInfoType; s: shortstring);
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   144
function  Str2PChar(const s: shortstring): PChar;
1180
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   145
function NewTexture(width, height: Longword; buf: Pointer): PTexture;
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   146
function  Surface2Tex(surf: PSDL_Surface): PTexture;
759
8da05b316d81 Enable back fps counter
unc0rr
parents: 755
diff changeset
   147
procedure FreeTexture(tex: PTexture);
945
4ead9cde4e14 - Start chat implementation: chat strings are on the screen
unc0rr
parents: 916
diff changeset
   148
function  toPowerOf2(i: Longword): Longword;
949
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   149
function DecodeBase64(s: shortstring): shortstring;
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   150
procedure MakeScreenshot(s: shortstring);
1861
unc0rr
parents: 1854
diff changeset
   151
function modifyDamage(dmg: Longword): Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   152
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   153
var CursorPoint: TPoint;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   154
    TargetPoint: TPoint = (X: NoPointX; Y: 0);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   155
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   156
implementation
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   157
uses uConsole, uStore, uIO, Math, uRandom;
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   158
var KBnum: Longword = 0;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   159
{$IFDEF DEBUGFILE}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   160
var f: textfile;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   161
{$ENDIF}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   162
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   163
function hwSign(r: hwFloat): LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   164
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   165
if r.isNegative then hwSign:= -1 else hwSign:= 1
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   166
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   167
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   168
function Min(a, b: LongInt): LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   169
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   170
if a < b then Min:= a else Min:= b
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   171
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   172
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   173
function Max(a, b: LongInt): LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   174
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   175
if a > b then Max:= a else Max:= b
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   176
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   177
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   178
procedure OutError(Msg: String; isFatalError: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   179
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   180
{$IFDEF DEBUGFILE}AddFileLog(Msg);{$ENDIF}
53
0e27949850e3 - Fixed bubble theme object
unc0rr
parents: 47
diff changeset
   181
WriteLnToConsole(Msg);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   182
if isFatalError then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   183
   begin
53
0e27949850e3 - Fixed bubble theme object
unc0rr
parents: 47
diff changeset
   184
   SendIPC('E' + GetLastConsoleLine);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   185
   SDL_Quit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   186
   halt(1)
53
0e27949850e3 - Fixed bubble theme object
unc0rr
parents: 47
diff changeset
   187
   end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   188
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   189
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   190
procedure TryDo(Assert: boolean; Msg: string; isFatal: boolean);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   191
begin
70
82d93eeecebe - Many AI improvements
unc0rr
parents: 56
diff changeset
   192
if not Assert then OutError(Msg, isFatal)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   193
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   194
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   195
procedure SDLTry(Assert: boolean; isFatal: boolean);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   196
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   197
if not Assert then OutError(SDL_GetError, isFatal)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   198
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   199
188
a7c2a61524c2 Cardinal -> Longword
unc0rr
parents: 183
diff changeset
   200
procedure AdjustColor(var Color: Longword);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   201
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   202
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
   203
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   204
316
57d50189ad86 Calculate land digest
unc0rr
parents: 308
diff changeset
   205
function IntToStr(n: LongInt): shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   206
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   207
str(n, IntToStr)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   208
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   209
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   210
function FloatToStr(n: hwFloat): shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   211
begin
1346
b4d51b95aa16 Make messages be more debug-friendly
unc0rr
parents: 1298
diff changeset
   212
FloatToStr:= cstr(n) + '_' + inttostr(Lo(n.QWordValue))
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   213
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   214
775
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   215
function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   216
var dY, dX: Extended;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   217
begin
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   218
dY:= _dY.QWordValue / $100000000;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   219
if _dY.isNegative then dY:= - dY;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   220
dX:= _dX.QWordValue / $100000000;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   221
if _dX.isNegative then dX:= - dX;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   222
DxDy2Angle:= arctan2(dY, dX) * 180 / pi
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   223
end;
23c253aae336 - Some optimizations
unc0rr
parents: 771
diff changeset
   224
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   225
function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt;
100
f324a18698fe Get rid of x86 assembler when using fpc
unc0rr
parents: 95
diff changeset
   226
const _16divPI: Extended = 16/pi;
370
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   227
var dY, dX: Extended;
100
f324a18698fe Get rid of x86 assembler when using fpc
unc0rr
parents: 95
diff changeset
   228
begin
370
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   229
dY:= _dY.QWordValue / $100000000;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   230
if _dY.isNegative then dY:= - dY;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   231
dX:= _dX.QWordValue / $100000000;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   232
if _dX.isNegative then dX:= - dX;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   233
DxDy2Angle32:= trunc(arctan2(dY, dX) * _16divPI) and $1f
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   234
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   235
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   236
function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt;
100
f324a18698fe Get rid of x86 assembler when using fpc
unc0rr
parents: 95
diff changeset
   237
const MaxAngleDivPI: Extended = cMaxAngle/pi;
370
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   238
var dY, dX: Extended;
100
f324a18698fe Get rid of x86 assembler when using fpc
unc0rr
parents: 95
diff changeset
   239
begin
370
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   240
dY:= _dY.QWordValue / $100000000;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   241
if _dY.isNegative then dY:= - dY;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   242
dX:= _dX.QWordValue / $100000000;
c75410fe3133 - Repair bots: they can walk and use bazooka, possible cannot jump (why?)
unc0rr
parents: 351
diff changeset
   243
if _dX.isNegative then dX:= - dX;
438
04bcc3fb127a Fix AI using shotgun and Desert Eagle
unc0rr
parents: 433
diff changeset
   244
DxDy2AttackAngle:= trunc(arctan2(dY, dX) * MaxAngleDivPI)
100
f324a18698fe Get rid of x86 assembler when using fpc
unc0rr
parents: 95
diff changeset
   245
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   246
208
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   247
procedure SetKB(n: Longword);
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   248
begin
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   249
KBnum:= n
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   250
end;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   251
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   252
procedure SendKB;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   253
var s: shortstring;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   254
begin
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   255
if KBnum <> 0 then
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   256
   begin
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   257
   s:= 'K' + inttostr(KBnum);
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   258
   SendIPCRaw(@s, Length(s) + 1)
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   259
   end
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   260
end;
a049157d673a Implement Knowledge Base for libs/compilers bugs
unc0rr
parents: 196
diff changeset
   261
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   262
procedure SetLittle(var r: hwFloat);
300
be94799f33d2 Simplify hedgehogs physics code, make it better
unc0rr
parents: 296
diff changeset
   263
begin
553
5478386d935f - Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents: 543
diff changeset
   264
r:= SignAs(cLittle, r)
300
be94799f33d2 Simplify hedgehogs physics code, make it better
unc0rr
parents: 296
diff changeset
   265
end;
be94799f33d2 Simplify hedgehogs physics code, make it better
unc0rr
parents: 296
diff changeset
   266
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   267
procedure SendStat(sit: TStatInfoType; s: shortstring);
1625
37aae47943ce Initial health graphic implementation
unc0rr
parents: 1560
diff changeset
   268
const stc: array [TStatInfoType] of char = 'rDkKH';
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   269
begin
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   270
SendIPC('i' + stc[sit] + s)
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   271
end;
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   272
534
92fb2b0d5117 - Fix some bugs
unc0rr
parents: 529
diff changeset
   273
function Str2PChar(const s: shortstring): PChar;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   274
const CharArray: array[byte] of Char = '';
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   275
begin
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   276
CharArray:= s;
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   277
CharArray[Length(s)]:= #0;
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   278
Str2PChar:= @CharArray
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   279
end;
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   280
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   281
function isPowerOf2(i: Longword): boolean;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   282
begin
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   283
if i = 0 then exit(true);
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   284
while (i and 1) = 0 do i:= i shr 1;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   285
isPowerOf2:= (i = 1)
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   286
end;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   287
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   288
function toPowerOf2(i: Longword): Longword;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   289
begin
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   290
toPowerOf2:= 1;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   291
while (toPowerOf2 < i) do toPowerOf2:= toPowerOf2 shl 1
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   292
end;
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   293
1912
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   294
procedure ResetVertexArrays(texture: PTexture);
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   295
begin
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   296
with texture^ do
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   297
	begin
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   298
	vb[0].X:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   299
	vb[0].Y:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   300
	vb[1].X:= w;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   301
	vb[1].Y:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   302
	vb[2].X:= w;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   303
	vb[2].Y:= h;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   304
	vb[3].X:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   305
	vb[3].Y:= h;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   306
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   307
	tb[0].X:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   308
	tb[0].Y:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   309
	tb[1].X:= rx;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   310
	tb[1].Y:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   311
	tb[2].X:= rx;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   312
	tb[2].Y:= ry;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   313
	tb[3].X:= 0;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   314
	tb[3].Y:= ry
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   315
	end;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   316
end;
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   317
1180
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   318
function NewTexture(width, height: Longword; buf: Pointer): PTexture;
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   319
begin
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   320
new(NewTexture);
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   321
NewTexture^.w:= width;
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   322
NewTexture^.h:= height;
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   323
NewTexture^.rx:= 1.0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   324
NewTexture^.ry:= 1.0;
1180
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   325
1912
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   326
ResetVertexArrays(NewTexture);
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   327
1180
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   328
glGenTextures(1, @NewTexture^.id);
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   329
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   330
glBindTexture(GL_TEXTURE_2D, NewTexture^.id);
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   331
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   332
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   333
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   334
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   335
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   336
end;
e56317fdf78d Start implementing support for 32bit sprites concerned in map generation process.
unc0rr
parents: 1128
diff changeset
   337
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   338
function Surface2Tex(surf: PSDL_Surface): PTexture;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   339
var mode: LongInt;
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   340
	tw, th, x, y: Longword;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   341
	tmpp: pointer;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   342
	fromP4, toP4: PLongWordArray;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   343
	fromP1, toP1: PByteArray;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   344
begin
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   345
new(Surface2Tex);
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   346
Surface2Tex^.w:= surf^.w;
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   347
Surface2Tex^.h:= surf^.h;
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   348
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   349
if (surf^.format^.BytesPerPixel = 3) then mode:= GL_RGB else
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   350
if (surf^.format^.BytesPerPixel = 4) then mode:= GL_RGBA else
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   351
   begin
869
daddcd31ef34 - New statistics
unc0rr
parents: 865
diff changeset
   352
   TryDo(false, 'Surface2Tex: BytesPerPixel not in [3, 4]', true);
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   353
   Surface2Tex^.id:= 0;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   354
   exit
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   355
   end;
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   356
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   357
glGenTextures(1, @Surface2Tex^.id);
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   358
755
edf26e9554ac Now show sprites too
unc0rr
parents: 754
diff changeset
   359
glBindTexture(GL_TEXTURE_2D, Surface2Tex^.id);
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   360
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   361
if SDL_MustLock(surf) then
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   362
   SDLTry(SDL_LockSurface(surf) >= 0, true);
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   363
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   364
if not (isPowerOf2(Surf^.w) and isPowerOf2(Surf^.h)) then
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   365
	begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   366
	tw:= toPowerOf2(Surf^.w);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   367
	th:= toPowerOf2(Surf^.h);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   368
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   369
	Surface2Tex^.rx:= Surf^.w / tw;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   370
	Surface2Tex^.ry:= Surf^.h / th;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   371
	
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   372
	GetMem(tmpp, tw * th * surf^.format^.BytesPerPixel);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   373
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   374
	if surf^.format^.BytesPerPixel = 4 then
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   375
		begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   376
		fromP4:= Surf^.pixels;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   377
		toP4:= tmpp;
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   378
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   379
		for y:= 0 to Pred(Surf^.h) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   380
			begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   381
			for x:= 0 to Pred(Surf^.w) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   382
				toP4^[x]:= fromP4^[x];
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   383
			for x:= Surf^.w to Pred(tw) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   384
				toP4^[x]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   385
			toP4:= @(toP4^[tw]);
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 2008
diff changeset
   386
			fromP4:= @(fromP4^[Surf^.pitch div 4]);
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   387
			end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   388
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   389
		for y:= Surf^.h to Pred(th) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   390
			begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   391
			for x:= 0 to Pred(tw) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   392
				toP4^[x]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   393
			toP4:= @(toP4^[tw]);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   394
			end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   395
		end
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   396
	else
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   397
		begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   398
		fromP1:= Surf^.pixels;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   399
		toP1:= tmpp;
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   400
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   401
		for y:= 0 to Pred(Surf^.h) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   402
			begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   403
			for x:= 0 to Pred(Surf^.w) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   404
				begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   405
				toP1^[x * 3]:= fromP1^[x * 3];
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   406
				toP1^[x * 3 + 1]:= fromP1^[x * 3 + 1];
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   407
				toP1^[x * 3 + 2]:= fromP1^[x * 3 + 2];
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   408
				end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   409
			for x:= Surf^.w to Pred(tw) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   410
				begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   411
				toP1^[x * 3]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   412
				toP1^[x * 3 + 1]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   413
				toP1^[x * 3 + 2]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   414
				end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   415
			toP1:= @(toP1^[tw * 3]);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   416
			fromP1:= @(fromP1^[Surf^.pitch]);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   417
			end;
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   418
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   419
		for y:= Surf^.h to Pred(th) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   420
			begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   421
			for x:= 0 to Pred(tw) do
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   422
				begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   423
				toP1^[x * 3]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   424
				toP1^[x * 3 + 1]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   425
				toP1^[x * 3 + 2]:= 0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   426
				end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   427
			toP1:= @(toP1^[tw * 3]);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   428
			end;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   429
		end;
771
86fbe8753a7c - Enable back console (doesn't render yet)
unc0rr
parents: 762
diff changeset
   430
1896
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   431
//   gluScaleImage(mode, Surf^.w, Surf^.h, GL_UNSIGNED_BYTE,
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   432
//        Surf^.pixels, tw, th, GL_UNSIGNED_BYTE,
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   433
//        tmpp);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   434
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   435
	glTexImage2D(GL_TEXTURE_2D, 0, mode, tw, th, 0, mode, GL_UNSIGNED_BYTE, tmpp);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   436
	
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   437
	FreeMem(tmpp, tw * th * surf^.format^.BytesPerPixel)
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   438
	end else
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   439
	begin
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   440
	Surface2Tex^.rx:= 1.0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   441
	Surface2Tex^.ry:= 1.0;
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   442
	glTexImage2D(GL_TEXTURE_2D, 0, mode, surf^.w, surf^.h, 0, mode, GL_UNSIGNED_BYTE, surf^.pixels);
fdacad5d0acc Don't use GLU
unc0rr
parents: 1895
diff changeset
   443
	end;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   444
1912
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   445
ResetVertexArrays(Surface2Tex);
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   446
754
94ac14829085 Some further work on switching to OpenGL rendering
unc0rr
parents: 753
diff changeset
   447
if SDL_MustLock(surf) then
1912
c3d31fb59f0e Save much CPU time by initializing vertex arrays in texture creation function
unc0rr
parents: 1911
diff changeset
   448
	SDL_UnlockSurface(surf);
754
94ac14829085 Some further work on switching to OpenGL rendering
unc0rr
parents: 753
diff changeset
   449
788
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 785
diff changeset
   450
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
00720357601f - Get rid of PageSimpleGame, now pressing 'quick game' just starts round
unc0rr
parents: 785
diff changeset
   451
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   452
end;
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 626
diff changeset
   453
759
8da05b316d81 Enable back fps counter
unc0rr
parents: 755
diff changeset
   454
procedure FreeTexture(tex: PTexture);
8da05b316d81 Enable back fps counter
unc0rr
parents: 755
diff changeset
   455
begin
2000
f9f47e681aad Don't crash engine after round in reduced quality mode
unc0rr
parents: 1916
diff changeset
   456
if tex <> nil then
f9f47e681aad Don't crash engine after round in reduced quality mode
unc0rr
parents: 1916
diff changeset
   457
	begin
f9f47e681aad Don't crash engine after round in reduced quality mode
unc0rr
parents: 1916
diff changeset
   458
	glDeleteTextures(1, @tex^.id);
f9f47e681aad Don't crash engine after round in reduced quality mode
unc0rr
parents: 1916
diff changeset
   459
	dispose(tex)
f9f47e681aad Don't crash engine after round in reduced quality mode
unc0rr
parents: 1916
diff changeset
   460
	end
759
8da05b316d81 Enable back fps counter
unc0rr
parents: 755
diff changeset
   461
end;
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   462
949
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   463
function DecodeBase64(s: shortstring): shortstring;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   464
const table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   465
var i, t, c: Longword;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   466
begin
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   467
c:= 0;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   468
for i:= 1 to Length(s) do
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   469
	begin
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   470
	t:= Pos(s[i], table);
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   471
	if s[i] = '=' then inc(c);
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   472
	if t > 0 then byte(s[i]):= t - 1 else byte(s[i]):= 0
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   473
	end;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   474
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   475
i:= 1;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   476
t:= 1;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   477
while i <= length(s) do
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   478
	begin
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   479
	DecodeBase64[t    ]:= char((byte(s[i    ]) shl 2) or (byte(s[i + 1]) shr 4));
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   480
	DecodeBase64[t + 1]:= char((byte(s[i + 1]) shl 4) or (byte(s[i + 2]) shr 2));
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   481
	DecodeBase64[t + 2]:= char((byte(s[i + 2]) shl 6) or (byte(s[i + 3])      ));
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   482
	inc(t, 3);
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   483
	inc(i, 4)
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   484
	end;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   485
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   486
if c < 3 then t:= t - c;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   487
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   488
byte(DecodeBase64[0]):= t - 1
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   489
end;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   490
1906
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1896
diff changeset
   491
const GL_BGR = $80E0; // some opengl headers don't have that const (?)'
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   492
procedure MakeScreenshot(s: shortstring);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   493
const head: array[0..8] of Word = (0, 2, 0, 0, 0, 0, 0, 0, 24);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   494
var p: Pointer;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   495
	size: Longword;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   496
	f: file;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   497
begin
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   498
head[6]:= cScreenWidth;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   499
head[7]:= cScreenHeight;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   500
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   501
size:= cScreenWidth * cScreenHeight * 3;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   502
p:= GetMem(size);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   503
1916
9c3d0e3df6bb patch by koda:
unc0rr
parents: 1912
diff changeset
   504
{$IFDEF IPHONE}
9c3d0e3df6bb patch by koda:
unc0rr
parents: 1912
diff changeset
   505
//since opengl es operates on a single surface GL_FRONT is implied, but how to test that?
9c3d0e3df6bb patch by koda:
unc0rr
parents: 1912
diff changeset
   506
{$ELSE}
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   507
glReadBuffer(GL_FRONT);
1916
9c3d0e3df6bb patch by koda:
unc0rr
parents: 1912
diff changeset
   508
{$ENDIF}
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   509
glReadPixels(0, 0, cScreenWidth, cScreenHeight, GL_BGR, GL_UNSIGNED_BYTE, p);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   510
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   511
{$I-}
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   512
Assign(f, s);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   513
Rewrite(f, 1);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   514
if IOResult = 0 then
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   515
	begin
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   516
	BlockWrite(f, head, sizeof(head));
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   517
	BlockWrite(f, p^, size);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   518
	Close(f);
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   519
	end;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   520
{$I+}
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   521
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   522
FreeMem(p)
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   523
end;
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
   524
1861
unc0rr
parents: 1854
diff changeset
   525
function modifyDamage(dmg: Longword): Longword;
unc0rr
parents: 1854
diff changeset
   526
begin
1895
7ba647a88b2f More game options by nemo
unc0rr
parents: 1888
diff changeset
   527
ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * cDamagePercent)
1861
unc0rr
parents: 1854
diff changeset
   528
end;
unc0rr
parents: 1854
diff changeset
   529
949
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   530
{$IFDEF DEBUGFILE}
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   531
procedure AddFileLog(s: shortstring);
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   532
begin
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   533
writeln(f, GameTicks: 6, ': ', s);
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   534
flush(f)
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   535
end;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   536
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   537
function RectToStr(Rect: TSDL_Rect): shortstring;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   538
begin
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   539
RectToStr:= '(x: ' + inttostr(rect.x) + '; y: ' + inttostr(rect.y) + '; w: ' + inttostr(rect.w) + '; h: ' + inttostr(rect.h) + ')'
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   540
end;
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 945
diff changeset
   541
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 370
diff changeset
   542
var i: LongInt;
488
4dee644f382d Fix run with DEBUGFILE turned off
unc0rr
parents: 438
diff changeset
   543
{$ENDIF}
306
7b61834edcf6 - Better blowtorch
unc0rr
parents: 304
diff changeset
   544
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   545
initialization
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   546
cDrownSpeed.QWordValue:= 257698038;// 0.06
488
4dee644f382d Fix run with DEBUGFILE turned off
unc0rr
parents: 438
diff changeset
   547
cMaxWindSpeed.QWordValue:= 2147484;// 0.0005
4dee644f382d Fix run with DEBUGFILE turned off
unc0rr
parents: 438
diff changeset
   548
cWindSpeed.QWordValue:=     429496;// 0.0001
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   549
cGravity:= cMaxWindSpeed;
1849
2a989e5abda6 4 utilities by nemo
unc0rr
parents: 1812
diff changeset
   550
cDamageModifier:= _1;
1854
6e05013899b2 laser beam by nemo reworked a bit by me
unc0rr
parents: 1849
diff changeset
   551
cLaserSighting:= false;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 2008
diff changeset
   552
cVampiric:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   553
488
4dee644f382d Fix run with DEBUGFILE turned off
unc0rr
parents: 438
diff changeset
   554
{$IFDEF DEBUGFILE}
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   555
{$I-}
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   556
if ParamCount >= 0 then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   557
 //this check prevents a crash in Mac OS X
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   558
 if ParamCount = 0 then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   559
 begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   560
	Assign(f, '/tmp/debug.txt');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   561
    rewrite(f);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   562
 end else
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   563
 begin
497
adf1aee202c6 merge fixes from branch
displacer
parents: 495
diff changeset
   564
  for i:= 0 to 7 do
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   565
    begin
497
adf1aee202c6 merge fixes from branch
displacer
parents: 495
diff changeset
   566
    Assign(f, ParamStr(1) + '/debug' + inttostr(i) + '.txt');
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   567
    rewrite(f);
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   568
    if IOResult = 0 then break
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   569
    end;
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2000
diff changeset
   570
 end;
337
a46abb65eb0c - Fix not debug build
unc0rr
parents: 316
diff changeset
   571
{$I+}
17
a6bed8d31444 minor code review
unc0rr
parents: 13
diff changeset
   572
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   573
finalization
916
1d0022336fbb - Small optimization in hwFloat
unc0rr
parents: 915
diff changeset
   574
//uRandom.DumpBuffer;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   575
writeln(f, '-= halt at ',GameTicks,' ticks =-');
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   576
Flush(f);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 346
diff changeset
   577
close(f)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   578
{$ENDIF}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   579
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 2
diff changeset
   580
end.