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 |
35 , uPhysFSLayer, uCursor, uRandom |
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 ; |
39 ; |
40 |
40 |
154 isTerminated:= false; |
155 isTerminated:= false; |
155 PrevTime:= SDL_GetTicks; |
156 PrevTime:= SDL_GetTicks; |
156 while isTerminated = false do |
157 while isTerminated = false do |
157 begin |
158 begin |
158 SDL_PumpEvents(); |
159 SDL_PumpEvents(); |
159 |
160 |
160 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL13}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do |
161 while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL13}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do |
161 begin |
162 begin |
162 case event.type_ of |
163 case event.type_ of |
163 {$IFDEF SDL13} |
164 {$IFDEF SDL13} |
164 SDL_KEYDOWN: |
165 SDL_KEYDOWN: |
196 begin |
197 begin |
197 cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth); |
198 cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth); |
198 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
199 cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight); |
199 cScreenResizeDelay:= RealTicks + 500{$IFDEF IPHONEOS}div 2{$ENDIF}; |
200 cScreenResizeDelay:= RealTicks + 500{$IFDEF IPHONEOS}div 2{$ENDIF}; |
200 end; |
201 end; |
201 |
202 |
202 SDL_FINGERMOTION: |
203 SDL_FINGERMOTION: |
203 onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
204 onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId); |
204 |
205 |
205 SDL_FINGERDOWN: |
206 SDL_FINGERDOWN: |
206 onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
207 onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
207 |
208 |
208 SDL_FINGERUP: |
209 SDL_FINGERUP: |
209 onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
210 onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId); |
210 {$ELSE} |
211 {$ELSE} |
211 SDL_KEYDOWN: |
212 SDL_KEYDOWN: |
212 if GameState = gsChat then |
213 if GameState = gsChat then |
214 else |
215 else |
215 ProcessKey(event.key); |
216 ProcessKey(event.key); |
216 SDL_KEYUP: |
217 SDL_KEYUP: |
217 if GameState <> gsChat then |
218 if GameState <> gsChat then |
218 ProcessKey(event.key); |
219 ProcessKey(event.key); |
219 |
220 |
220 SDL_MOUSEBUTTONDOWN: |
221 SDL_MOUSEBUTTONDOWN: |
221 if GameState = gsConfirm then |
222 if GameState = gsConfirm then |
222 begin |
223 begin |
223 resetPosition(); |
224 resetPosition(); |
224 ParseCommand('quit', true); |
225 ParseCommand('quit', true); |
225 end |
226 end |
226 else |
227 else |
227 ProcessMouse(event.button, true); |
228 ProcessMouse(event.button, true); |
228 |
229 |
229 SDL_MOUSEBUTTONUP: |
230 SDL_MOUSEBUTTONUP: |
230 ProcessMouse(event.button, false); |
231 ProcessMouse(event.button, false); |
231 |
232 |
232 SDL_ACTIVEEVENT: |
233 SDL_ACTIVEEVENT: |
233 if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then |
234 if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then |
234 begin |
235 begin |
235 prevFocusState:= cHasFocus; |
236 prevFocusState:= cHasFocus; |
236 cHasFocus:= event.active.gain = 1; |
237 cHasFocus:= event.active.gain = 1; |
237 if prevFocusState xor cHasFocus then |
238 if prevFocusState xor cHasFocus then |
238 onFocusStateChanged() |
239 onFocusStateChanged() |
239 end; |
240 end; |
240 |
241 |
241 SDL_VIDEORESIZE: |
242 SDL_VIDEORESIZE: |
242 begin |
243 begin |
243 // using lower values than cMinScreenWidth or cMinScreenHeight causes widget overlap and off-screen widget parts |
244 // using lower values than cMinScreenWidth or cMinScreenHeight causes widget overlap and off-screen widget parts |
244 // Change by sheepluva: |
245 // Change by sheepluva: |
245 // Let's only use even numbers for custom width/height since I ran into scaling issues with odd width values. |
246 // Let's only use even numbers for custom width/height since I ran into scaling issues with odd width values. |
339 initEverything(true); |
340 initEverything(true); |
340 WriteLnToConsole('Hedgewars engine ' + cVersionString + '-r' + cRevisionString + |
341 WriteLnToConsole('Hedgewars engine ' + cVersionString + '-r' + cRevisionString + |
341 ' (' + cHashString + ') with protocol #' + inttostr(cNetProtoVersion)); |
342 ' (' + cHashString + ') with protocol #' + inttostr(cNetProtoVersion)); |
342 AddFileLog('Prefix: "' + PathPrefix +'"'); |
343 AddFileLog('Prefix: "' + PathPrefix +'"'); |
343 AddFileLog('UserPrefix: "' + UserPathPrefix +'"'); |
344 AddFileLog('UserPrefix: "' + UserPathPrefix +'"'); |
344 |
345 |
345 for i:= 0 to ParamCount do |
346 for i:= 0 to ParamCount do |
346 AddFileLog(inttostr(i) + ': ' + ParamStr(i)); |
347 AddFileLog(inttostr(i) + ': ' + ParamStr(i)); |
347 |
348 |
348 WriteToConsole('Init SDL... '); |
349 WriteToConsole('Init SDL... '); |
349 if not cOnlyStats then SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true); |
350 if not cOnlyStats then SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true); |
359 {$IFDEF USE_VIDEO_RECORDING} |
360 {$IFDEF USE_VIDEO_RECORDING} |
360 if GameType = gmtRecord then |
361 if GameType = gmtRecord then |
361 InitOffscreenOpenGL() |
362 InitOffscreenOpenGL() |
362 else |
363 else |
363 {$ENDIF} |
364 {$ENDIF} |
364 begin |
365 begin |
365 // show main window |
366 // show main window |
366 if cFullScreen then |
367 if cFullScreen then |
367 ParseCommand('fullscr 1', true) |
368 ParseCommand('fullscr 1', true) |
368 else |
369 else |
369 ParseCommand('fullscr 0', true); |
370 ParseCommand('fullscr 0', true); |