30 {$ENDIF} |
30 {$ENDIF} |
31 |
31 |
32 uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uInputHandler |
32 uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uInputHandler |
33 , uSound, uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uAILandMarks, uLandTexture, uCollisions |
33 , uSound, uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uAILandMarks, uLandTexture, uCollisions |
34 , SysUtils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers, uLandPainted |
34 , SysUtils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers, uLandPainted |
35 , uPhysFSLayer, uCursor, uRandom |
35 , uPhysFSLayer, uCursor, uRandom, ArgParsers, uVisualGearsHandlers, uTextures |
36 {$IFDEF USE_VIDEO_RECORDING}, uVideoRec {$ENDIF} |
36 {$IFDEF USE_VIDEO_RECORDING}, uVideoRec {$ENDIF} |
37 {$IFDEF USE_TOUCH_INTERFACE}, uTouch {$ENDIF} |
37 {$IFDEF USE_TOUCH_INTERFACE}, uTouch {$ENDIF} |
38 {$IFDEF ANDROID}, GLUnit{$ENDIF} |
38 {$IFDEF ANDROID}, GLUnit{$ENDIF} |
39 {$IFDEF WEBGL}, uWeb{$ENDIF} |
39 {$IFDEF WEBGL}, uWeb{$ENDIF} |
40 ; |
40 ; |
41 |
|
42 var isInternal: Boolean; |
|
43 |
41 |
44 {$IFDEF HWLIBRARY} |
42 {$IFDEF HWLIBRARY} |
45 procedure preInitEverything(); |
43 procedure preInitEverything(); |
46 procedure initEverything(complete:boolean); |
44 procedure initEverything(complete:boolean); |
47 procedure freeEverything(complete:boolean); |
45 procedure freeEverything(complete:boolean); |
52 {$ELSE} |
50 {$ELSE} |
53 procedure preInitEverything(); forward; |
51 procedure preInitEverything(); forward; |
54 procedure initEverything(complete:boolean); forward; |
52 procedure initEverything(complete:boolean); forward; |
55 procedure freeEverything(complete:boolean); forward; |
53 procedure freeEverything(complete:boolean); forward; |
56 {$ENDIF} |
54 {$ENDIF} |
57 |
|
58 {$INCLUDE "ArgParsers.inc"} |
|
59 |
55 |
60 {$IFDEF WEBGL} |
56 {$IFDEF WEBGL} |
61 procedure playFile(path: PChar); forward; |
57 procedure playFile(path: PChar); forward; |
62 function isEngineRunning():Integer; forward; |
58 function isEngineRunning():Integer; forward; |
63 procedure shutdown();forward; |
59 procedure shutdown();forward; |
183 begin |
180 begin |
184 {$ENDIF} |
181 {$ENDIF} |
185 |
182 |
186 SDL_PumpEvents(); |
183 SDL_PumpEvents(); |
187 |
184 |
188 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL13}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do |
185 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL2}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do |
189 begin |
186 begin |
190 case event.type_ of |
187 case event.type_ of |
191 {$IFDEF SDL13} |
188 {$IFDEF SDL2} |
192 SDL_KEYDOWN: |
189 SDL_KEYDOWN: |
193 if GameState = gsChat then |
190 if GameState = gsChat then |
194 begin |
191 begin |
195 // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 |
192 // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 |
196 KeyPressChat(SDL_GetKeyFromScancode(event.key.keysym.sym), event.key.keysym.sym); //TODO correct for keymodifiers |
193 KeyPressChat(SDL_GetKeyFromScancode(event.key.keysym.sym), event.key.keysym.sym); //TODO correct for keymodifiers |
197 end |
194 end |
198 else |
195 else |
199 if GameState >= gsGame then ProcessKey(event.key); |
196 if GameState >= gsGame then ProcessKey(event.key); |
200 SDL_KEYUP: |
197 SDL_KEYUP: |
201 if (GameState <> gsChat) and (GameState >= gsGame) then |
198 if (GameState <> gsChat) and (GameState >= gsGame) then |
202 ProcessKey(event.key); |
199 ProcessKey(event.key); |
203 |
200 |
226 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
223 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
227 cScreenResizeDelay:= RealTicks + 500{$IFDEF IPHONEOS}div 2{$ENDIF}; |
224 cScreenResizeDelay:= RealTicks + 500{$IFDEF IPHONEOS}div 2{$ENDIF}; |
228 end; |
225 end; |
229 |
226 |
230 SDL_FINGERMOTION: |
227 SDL_FINGERMOTION: |
231 onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
228 onTouchMotion(event.tfinger.x, event.tfinger.y, event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
232 |
229 |
233 SDL_FINGERDOWN: |
230 SDL_FINGERDOWN: |
234 onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
231 onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
235 |
232 |
236 SDL_FINGERUP: |
233 SDL_FINGERUP: |
388 |
385 |
389 WriteToConsole('Init SDL... '); |
386 WriteToConsole('Init SDL... '); |
390 if not cOnlyStats then SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true); |
387 if not cOnlyStats then SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true); |
391 WriteLnToConsole(msgOK); |
388 WriteLnToConsole(msgOK); |
392 |
389 |
|
390 {$IFDEF SDL2} |
|
391 SDL_StartTextInput(); |
|
392 {$ELSE} |
393 SDL_EnableUNICODE(1); |
393 SDL_EnableUNICODE(1); |
|
394 {$ENDIF} |
394 SDL_ShowCursor(0); |
395 SDL_ShowCursor(0); |
395 |
396 |
396 WriteToConsole('Init SDL_ttf... '); |
397 WriteToConsole('Init SDL_ttf... '); |
397 SDLTry(TTF_Init() <> -1, true); |
398 SDLTry(TTF_Init() <> -1, true); |
398 WriteLnToConsole(msgOK); |
399 WriteLnToConsole(msgOK); |
448 |
449 |
449 InitSound(); |
450 InitSound(); |
450 |
451 |
451 isDeveloperMode:= false; |
452 isDeveloperMode:= false; |
452 TryDo(InitStepsFlags = cifAllInited, 'Some parameters not set (flags = ' + inttostr(InitStepsFlags) + ')', true); |
453 TryDo(InitStepsFlags = cifAllInited, 'Some parameters not set (flags = ' + inttostr(InitStepsFlags) + ')', true); |
453 ParseCommand('rotmask', true); |
454 //ParseCommand('rotmask', true); |
454 |
455 |
455 {$IFDEF USE_VIDEO_RECORDING} |
456 {$IFDEF USE_VIDEO_RECORDING} |
456 if GameType = gmtRecord then |
457 if GameType = gmtRecord then |
457 begin |
458 begin |
458 RecorderMainLoop(); |
459 RecorderMainLoop(); |