hedgewars/hwengine.dpr
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 2016 73b0bcc4396d
child 2039 3001445b4500
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:
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
     1
 (*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1022
diff changeset
     2
 * Hedgewars, a free turn based strategy game
393
db01cc79f278 Update copyright information
unc0rr
parents: 377
diff changeset
     3
 * Copyright (c) 2004-2007 Andrey Korotaev <unC0Rr@gmail.com>
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
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
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
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.
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
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
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    17
 *)
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    18
355
40c68869899e Small fixes to bring engine to life
unc0rr
parents: 351
diff changeset
    19
{$IFNDEF FPC}
40c68869899e Small fixes to bring engine to life
unc0rr
parents: 351
diff changeset
    20
WriteLn('Only Freepascal supported');
40c68869899e Small fixes to bring engine to life
unc0rr
parents: 351
diff changeset
    21
{$ENDIF}
40c68869899e Small fixes to bring engine to life
unc0rr
parents: 351
diff changeset
    22
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    23
program hwengine;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    24
uses
1947
9b8bdee5db6c patch by koda
unc0rr
parents: 1906
diff changeset
    25
	SDLh in 'SDLh.pas',
1906
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1892
diff changeset
    26
{$IFDEF IPHONE}
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1892
diff changeset
    27
	gles11,
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1892
diff changeset
    28
{$ELSE}
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    29
	GL,
1906
644f93d8f148 Apply koda's OpenGL ES compatibility patch
unc0rr
parents: 1892
diff changeset
    30
{$ENDIF}
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    31
	uConsts in 'uConsts.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    32
	uGame in 'uGame.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    33
	uMisc in 'uMisc.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    34
	uStore in 'uStore.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    35
	uWorld in 'uWorld.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    36
	uIO in 'uIO.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    37
	uGears in 'uGears.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    38
	uVisualGears in 'uVisualGears.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    39
	uConsole in 'uConsole.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    40
	uKeys in 'uKeys.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    41
	uTeams in 'uTeams.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    42
	uSound in 'uSound.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    43
	uRandom in 'uRandom.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    44
	uAI in 'uAI.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    45
	uAIMisc in 'uAIMisc.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    46
	uAIAmmoTests in 'uAIAmmoTests.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    47
	uAIActions in 'uAIActions.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    48
	uCollisions in 'uCollisions.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    49
	uLand in 'uLand.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    50
	uLandTemplates in 'uLandTemplates.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    51
	uLandObjects in 'uLandObjects.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    52
	uLandGraphics in 'uLandGraphics.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    53
	uLocale in 'uLocale.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    54
	uAmmos in 'uAmmos.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    55
	uSHA in 'uSHA.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    56
	uFloat in 'uFloat.pas',
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    57
	uStats in 'uStats.pas',
1807
795f97007833 Split land texture into small ones:
unc0rr
parents: 1791
diff changeset
    58
	uChat in 'uChat.pas',
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
    59
	uLandTexture in 'uLandTexture.pas';
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    60
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    61
{$INCLUDE options.inc}
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    62
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    63
// also: GSHandlers.inc
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    64
//       CCHandlers.inc
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    65
//       HHHandlers.inc
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 355
diff changeset
    66
//       SinTable.inc
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 268
diff changeset
    67
//       proto.inc
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    68
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
    69
var recordFileName : shortstring = '';
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    70
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    71
procedure OnDestroy; forward;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    72
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    73
////////////////////////////////
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 357
diff changeset
    74
procedure DoTimer(Lag: LongInt);
1080
8735046fc698 Repair screenshots capture on 'C' key press
unc0rr
parents: 1066
diff changeset
    75
var s: string;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    76
begin
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 529
diff changeset
    77
inc(RealTicks, Lag);
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 529
diff changeset
    78
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
    79
case GameState of
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    80
	gsLandGen: begin
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    81
			GenMap;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    82
			GameState:= gsStart;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    83
			end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    84
	gsStart: begin
1784
dfe9bafb4590 Apply nemo's patch polished by me:
unc0rr
parents: 1651
diff changeset
    85
			if HasBorder then DisableSomeWeapons;
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    86
			AddClouds;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    87
			AssignHHCoords;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    88
			AddMiscGears;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    89
			StoreLoad;
1825
c929f9111141 Nemo's patch allowing different water sprites size
unc0rr
parents: 1812
diff changeset
    90
            InitWorld;
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    91
			ResetKbd;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    92
			SoundLoad;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    93
			if GameType = gmtSave then
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    94
				begin
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    95
				isSEBackup:= isSoundEnabled;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    96
				isSoundEnabled:= false
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    97
				end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    98
			FinishProgress;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
    99
			PlayMusic;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   100
			GameState:= gsGame
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   101
			end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   102
	gsConfirm,
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   103
	gsGame: begin
1645
f010d68adbb7 Fix two cursor bugs
unc0rr
parents: 1524
diff changeset
   104
			DrawWorld(Lag); // never place between ProcessKbd and DoGameTick - bugs due to /put cmd and isCursorVisible
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   105
			ProcessKbd;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   106
			DoGameTick(Lag);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   107
			ProcessVisualGears(Lag);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   108
			end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   109
	gsChat: begin
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   110
			DrawWorld(Lag);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   111
			DoGameTick(Lag);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   112
			ProcessVisualGears(Lag);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   113
			end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   114
	gsExit: begin
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   115
			OnDestroy;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   116
			end;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   117
	end;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 529
diff changeset
   118
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 720
diff changeset
   119
SDL_GL_SwapBuffers();
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   120
if flagMakeCapture then
1524
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   121
	begin
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   122
	flagMakeCapture:= false;
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   123
	s:= 'hw_' + cSeed + '_' + inttostr(GameTicks) + '.tga';
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   124
	WriteLnToConsole('Saving ' + s);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   125
	MakeScreenshot(s);
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   126
//	SDL_SaveBMP_RW(SDLPrimSurface, SDL_RWFromFile(Str2PChar(s), 'wb'), 1)
5a652a465559 Draw world before processing gears, as this should improve performance by introducing cpu-gpu parallelizm
unc0rr
parents: 1128
diff changeset
   127
	end;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   128
end;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   129
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   130
////////////////////
79
29b477319854 - New test map
unc0rr
parents: 74
diff changeset
   131
procedure OnDestroy;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   132
begin
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   133
{$IFDEF DEBUGFILE}AddFileLog('Freeing resources...');{$ENDIF}
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   134
if isSoundEnabled then ReleaseSound;
619
758da3d985fa - Update protocol doc
unc0rr
parents: 611
diff changeset
   135
StoreRelease;
1807
795f97007833 Split land texture into small ones:
unc0rr
parents: 1791
diff changeset
   136
FreeLand;
619
758da3d985fa - Update protocol doc
unc0rr
parents: 611
diff changeset
   137
SendKB;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   138
CloseIPC;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   139
TTF_Quit;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   140
SDL_Quit;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   141
halt
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   142
end;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   143
1120
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   144
////////////////////////////////
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   145
procedure Resize(w, h: LongInt);
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   146
begin
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   147
cScreenWidth:= w;
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   148
cScreenHeight:= h;
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   149
if cFullScreen then
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   150
	ParseCommand('/fullscr 1', true)
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   151
else
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   152
	ParseCommand('/fullscr 0', true);
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   153
end;
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   154
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   155
///////////////////
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   156
procedure MainLoop;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   157
var PrevTime,
188
a7c2a61524c2 Cardinal -> Longword
unc0rr
parents: 183
diff changeset
   158
    CurrTime: Longword;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   159
    event: TSDL_Event;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   160
begin
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   161
PrevTime:= SDL_GetTicks;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   162
repeat
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   163
while SDL_PollEvent(@event) <> 0 do
1120
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   164
	case event.type_ of
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   165
		SDL_KEYDOWN: if GameState = gsChat then KeyPressChat(event.key.keysym.unicode);
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   166
		SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   167
				cHasFocus:= event.active.gain = 1;
1127
7e1b94a0fc1f - Disable ability to resize window
unc0rr
parents: 1121
diff changeset
   168
		//SDL_VIDEORESIZE: Resize(max(event.resize.w, 600), max(event.resize.h, 450));
1120
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   169
		SDL_QUITEV: isTerminated:= true
eb5a9f86f9c6 Add ability to resize engine's window
unc0rr
parents: 1097
diff changeset
   170
		end;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   171
CurrTime:= SDL_GetTicks;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   172
if PrevTime + cTimerInterval <= CurrTime then
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   173
   begin
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   174
   DoTimer(CurrTime - PrevTime);
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   175
   PrevTime:= CurrTime
434
2c6ccce17f39 Many small improvements
unc0rr
parents: 426
diff changeset
   176
   end else SDL_Delay(1);
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   177
IPCCheckSock
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   178
until isTerminated
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   179
end;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   180
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   181
/////////////////////
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   182
procedure DisplayUsage;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   183
begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   184
	WriteLn('Wrong argument format: correct configurations is');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   185
	WriteLn();
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   186
	WriteLn('  hwengine <path to data folder> <path to replay file> [option]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   187
	WriteLn();
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   188
	WriteLn('where [option] must be specified either as');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   189
	WriteLn(' --set-video [screen height] [screen width] [color dept]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   190
	WriteLn(' --set-audio [volume] [enable music] [enable sounds]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   191
	WriteLn(' --set-other [language file] [full screen] [show FPS]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   192
	WriteLn(' --set-multimedia [screen height] [screen width] [color dept] [volume] [enable music] [enable sounds] [language file] [full screen]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   193
	WriteLn(' --set-everything [screen height] [screen width] [color dept] [volume] [enable music] [enable sounds] [language file] [full screen] [show FPS] [alternate damage] [timer value] [reduced quality]');
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   194
	WriteLn();
2015
d2848d723690 koda's patch
unc0rr
parents: 2008
diff changeset
   195
	WriteLn('Read documentation online at http://www.hedgewars.org/node/1465 for more information');
d2848d723690 koda's patch
unc0rr
parents: 2008
diff changeset
   196
	halt(1);
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   197
end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   198
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   199
////////////////////
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   200
procedure GetParams;
889
3bf9dc791f45 Some work on newhwserv
unc0rr
parents: 887
diff changeset
   201
var
267
bf7c1503f569 Engine gets Data path from frontend
unc0rr
parents: 208
diff changeset
   202
{$IFDEF DEBUGFILE}
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 357
diff changeset
   203
    i: LongInt;
267
bf7c1503f569 Engine gets Data path from frontend
unc0rr
parents: 208
diff changeset
   204
{$ENDIF}
97
e7c1df9cce2c - make the game be run from ${PREFIX}/bin with data in ${PREFIX}/share/hedgewars/Data
unc0rr
parents: 81
diff changeset
   205
    p: TPathType;
e7c1df9cce2c - make the game be run from ${PREFIX}/bin with data in ${PREFIX}/share/hedgewars/Data
unc0rr
parents: 81
diff changeset
   206
begin
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   207
{$IFDEF DEBUGFILE}
97
e7c1df9cce2c - make the game be run from ${PREFIX}/bin with data in ${PREFIX}/share/hedgewars/Data
unc0rr
parents: 81
diff changeset
   208
AddFileLog('Prefix: "' + PathPrefix +'"');
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   209
for i:= 0 to ParamCount do
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   210
    AddFileLog(inttostr(i) + ': ' + ParamStr(i));
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   211
{$ENDIF}
267
bf7c1503f569 Engine gets Data path from frontend
unc0rr
parents: 208
diff changeset
   212
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   213
case ParamCount of
1892
fddc1201df25 Some tweaks by nemo
unc0rr
parents: 1888
diff changeset
   214
 16: begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   215
     val(ParamStr(2), cScreenWidth);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   216
     val(ParamStr(3), cScreenHeight);
1121
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   217
     cInitWidth:= cScreenWidth;
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   218
     cInitHeight:= cScreenHeight;
497
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   219
     cBitsStr:= ParamStr(4);
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   220
     val(cBitsStr, cBits);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   221
     val(ParamStr(5), ipcPort);
497
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   222
     cFullScreen:= ParamStr(6) = '1';
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   223
     isSoundEnabled:= ParamStr(7) = '1';
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   224
     cLocaleFName:= ParamStr(8);
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   225
     val(ParamStr(9), cInitVolume);
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   226
     val(ParamStr(10), cTimerInterval);
497
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   227
     PathPrefix:= ParamStr(11);
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   228
     cShowFPS:= ParamStr(12) = '1';
529
812682c1ab62 Option for alternative damage tags
unc0rr
parents: 510
diff changeset
   229
     cAltDamage:= ParamStr(13) = '1';
949
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 947
diff changeset
   230
     UserNick:= DecodeBase64(ParamStr(14));
1128
9b3f42bf4eef Add an option to engine for turning music off
unc0rr
parents: 1127
diff changeset
   231
     isMusicEnabled:= ParamStr(15) = '1';
1812
3d4692e825e7 'Reduce quality' patch by nemo
unc0rr
parents: 1807
diff changeset
   232
     cReducedQuality:= ParamStr(16) = '1';
267
bf7c1503f569 Engine gets Data path from frontend
unc0rr
parents: 208
diff changeset
   233
     for p:= Succ(Low(TPathType)) to High(TPathType) do
949
866729775535 Use nick from frontend to prepend chat messages
unc0rr
parents: 947
diff changeset
   234
         if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   235
     end;
497
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   236
  3: begin
498
9c8b385dc9a1 - Get rid of operator := to have GPC support
unc0rr
parents: 497
diff changeset
   237
     val(ParamStr(2), ipcPort);
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   238
     GameType:= gmtLandPreview;
497
adf1aee202c6 merge fixes from branch
displacer
parents: 489
diff changeset
   239
     if ParamStr(3) <> 'landpreview' then OutError(errmsgShouldntRun, true);
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   240
     end;
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   241
  2: begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   242
		PathPrefix:= ParamStr(1);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   243
		recordFileName:= ParamStr(2);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   244
	 
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   245
		for p:= Succ(Low(TPathType)) to High(TPathType) do
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   246
			if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   247
	end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   248
  6: begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   249
		PathPrefix:= ParamStr(1);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   250
		recordFileName:= ParamStr(2);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   251
	 
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   252
		if ParamStr(3) = '--set-video'	then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   253
		begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   254
			val(ParamStr(4), cScreenWidth);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   255
			val(ParamStr(5), cScreenHeight);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   256
			cInitWidth:= cScreenWidth;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   257
			cInitHeight:= cScreenHeight;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   258
			cBitsStr:= ParamStr(6);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   259
			val(cBitsStr, cBits);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   260
		end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   261
		else
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   262
		begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   263
			if ParamStr(3) = '--set-audio' then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   264
			begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   265
				val(ParamStr(4), cInitVolume);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   266
				isMusicEnabled:= ParamStr(5) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   267
				isSoundEnabled:= ParamStr(6) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   268
			end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   269
			else
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   270
			begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   271
				if ParamStr(3) = '--set-other' then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   272
				begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   273
					cLocaleFName:= ParamStr(4);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   274
					cFullScreen:= ParamStr(5) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   275
					cShowFPS:= ParamStr(6) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   276
				end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   277
				else DisplayUsage;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   278
			end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   279
		end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   280
		
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   281
		for p:= Succ(Low(TPathType)) to High(TPathType) do
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   282
			if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   283
	end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   284
 11: begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   285
		PathPrefix:= ParamStr(1);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   286
		recordFileName:= ParamStr(2);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   287
	
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   288
		if ParamStr(3) = '--set-multimedia' then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   289
		begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   290
			val(ParamStr(4), cScreenWidth);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   291
			val(ParamStr(5), cScreenHeight);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   292
			cInitWidth:= cScreenWidth;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   293
			cInitHeight:= cScreenHeight;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   294
			cBitsStr:= ParamStr(6);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   295
			val(cBitsStr, cBits);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   296
			val(ParamStr(7), cInitVolume);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   297
			isMusicEnabled:= ParamStr(8) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   298
			isSoundEnabled:= ParamStr(9) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   299
			cLocaleFName:= ParamStr(10);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   300
			cFullScreen:= ParamStr(11) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   301
		end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   302
		else DisplayUsage;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   303
		
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   304
		for p:= Succ(Low(TPathType)) to High(TPathType) do
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   305
			if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   306
	end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   307
 15: begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   308
		if ParamStr(3) = '--set-everything' then
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   309
		begin
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   310
			val(ParamStr(4), cScreenWidth);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   311
			val(ParamStr(5), cScreenHeight);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   312
			cInitWidth:= cScreenWidth;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   313
			cInitHeight:= cScreenHeight;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   314
			cBitsStr:= ParamStr(6);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   315
			val(cBitsStr, cBits);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   316
			val(ParamStr(7), cInitVolume);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   317
			isMusicEnabled:= ParamStr(8) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   318
			isSoundEnabled:= ParamStr(9) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   319
			cLocaleFName:= ParamStr(10);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   320
			cFullScreen:= ParamStr(11) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   321
			cAltDamage:= ParamStr(12) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   322
			cShowFPS:= ParamStr(13) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   323
			val(ParamStr(14), cTimerInterval);
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   324
			cReducedQuality:= ParamStr(15) = '1';
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   325
		end
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   326
		else DisplayUsage;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   327
		
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   328
		for p:= Succ(Low(TPathType)) to High(TPathType) do
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   329
			if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   330
	end;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   331
	else DisplayUsage;
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   332
	end;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   333
end;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   334
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
   335
/////////////////////////
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   336
procedure ShowMainWindow;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   337
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 316
diff changeset
   338
if cFullScreen then ParseCommand('fullscr 1', true)
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 316
diff changeset
   339
               else ParseCommand('fullscr 0', true);
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 271
diff changeset
   340
SDL_ShowCursor(0)
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   341
end;
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   342
160
207f520b9e83 Soma small fixes + new land template
unc0rr
parents: 159
diff changeset
   343
///////////////
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   344
procedure Game;
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 200
diff changeset
   345
var s: shortstring;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   346
begin
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   347
WriteToConsole('Init SDL... ');
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   348
SDLTry(SDL_Init(SDL_INIT_VIDEO) >= 0, true);
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   349
WriteLnToConsole(msgOK);
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 720
diff changeset
   350
377
d9b88dbdf5a9 Support unicode input for chat
unc0rr
parents: 371
diff changeset
   351
SDL_EnableUNICODE(1);
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   352
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   353
WriteToConsole('Init SDL_ttf... ');
200
a36102728776 Small fixes
unc0rr
parents: 188
diff changeset
   354
SDLTry(TTF_Init <> -1, true);
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   355
WriteLnToConsole(msgOK);
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   356
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   357
ShowMainWindow;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   358
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   359
InitKbdKeyTable;
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   360
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   361
if recordFileName = '' then InitIPC;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   362
WriteLnToConsole(msgGettingConfig);
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 79
diff changeset
   363
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 79
diff changeset
   364
LoadLocale(Pathz[ptLocale] + '/' + cLocaleFName);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 79
diff changeset
   365
1888
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   366
if recordFileName = '' then
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   367
	SendIPCAndWaitReply('C')        // ask for game config
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   368
else
e76274ce7365 Add an ability to run engine without IPC connection.
unc0rr
parents: 1825
diff changeset
   369
	LoadRecordFromFile(recordFileName);
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 200
diff changeset
   370
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 200
diff changeset
   371
s:= 'eproto ' + inttostr(cNetProtoVersion);
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 200
diff changeset
   372
SendIPCRaw(@s[0], Length(s) + 1); // send proto version
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 200
diff changeset
   373
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   374
InitTeams;
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   375
AssignStores;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   376
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   377
if isSoundEnabled then InitSound;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   378
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   379
StoreInit;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   380
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   381
isDeveloperMode:= false;
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   382
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 54
diff changeset
   383
TryDo(InitStepsFlags = cifAllInited,
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 54
diff changeset
   384
      'Some parameters not set (flags = ' + inttostr(InitStepsFlags) + ')',
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 54
diff changeset
   385
      true);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 54
diff changeset
   386
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   387
MainLoop
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   388
end;
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   389
160
207f520b9e83 Soma small fixes + new land template
unc0rr
parents: 159
diff changeset
   390
/////////////////////////
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   391
procedure GenLandPreview;
566
1c1cb593cb81 Save some memory
unc0rr
parents: 565
diff changeset
   392
var Preview: TPreview;
1791
7c9d645d2591 Fix passing hedgehogs number from engine to frontend
unc0rr
parents: 1784
diff changeset
   393
	h: byte;
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   394
begin
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   395
InitIPC;
159
63909aecb0ed Preview stream doesn't need parsing now
unc0rr
parents: 158
diff changeset
   396
IPCWaitPongEvent;
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   397
TryDo(InitStepsFlags = cifRandomize,
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   398
      'Some parameters not set (flags = ' + inttostr(InitStepsFlags) + ')',
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   399
      true);
160
207f520b9e83 Soma small fixes + new land template
unc0rr
parents: 159
diff changeset
   400
566
1c1cb593cb81 Save some memory
unc0rr
parents: 565
diff changeset
   401
Preview:= GenPreview;
159
63909aecb0ed Preview stream doesn't need parsing now
unc0rr
parents: 158
diff changeset
   402
WriteLnToConsole('Sending preview...');
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   403
SendIPCRaw(@Preview, sizeof(Preview));
1791
7c9d645d2591 Fix passing hedgehogs number from engine to frontend
unc0rr
parents: 1784
diff changeset
   404
h:= MaxHedgehogs;
7c9d645d2591 Fix passing hedgehogs number from engine to frontend
unc0rr
parents: 1784
diff changeset
   405
SendIPCRaw(@h, sizeof(h));
159
63909aecb0ed Preview stream doesn't need parsing now
unc0rr
parents: 158
diff changeset
   406
WriteLnToConsole('Preview sent, disconnect');
158
e6c3223f3bca Don't synchronize after sending preview
unc0rr
parents: 155
diff changeset
   407
CloseIPC
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   408
end;
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   409
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   410
////////////////////////////////////////////////////////////////////////////////
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   411
/////////////////////////////// m a i n ////////////////////////////////////////
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   412
////////////////////////////////////////////////////////////////////////////////
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   413
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   414
begin
2006
587636c8344e Please koda with console output
unc0rr
parents: 1997
diff changeset
   415
WriteLnToConsole('Hedgewars ' + cVersionString + ' engine');
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   416
GetParams;
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   417
Randomize;
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   418
155
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   419
if GameType = gmtLandPreview then GenLandPreview
401f4ea24715 Engine can generate land preview and send it via IPC
unc0rr
parents: 109
diff changeset
   420
                             else Game
51
b6e3ae05857f - Get rid of hwserv and runhelper
unc0rr
parents:
diff changeset
   421
end.
2008
fc2fb5c938c3 Patch by koda:
unc0rr
parents: 2006
diff changeset
   422