hedgewars/hwengine.pas
branchhedgeroid
changeset 6023 a28be05b20bc
parent 5932 5164d17b6374
parent 6021 652a199d4f38
child 6029 5073285b6599
equal deleted inserted replaced
5943:5b2b86a37089 6023:a28be05b20bc
    99                     end;
    99                     end;
   100                 end;
   100                 end;
   101         gsExit: begin
   101         gsExit: begin
   102                 isTerminated:= true;
   102                 isTerminated:= true;
   103                 end;
   103                 end;
       
   104         gsSuspend: exit;
   104         end;
   105         end;
   105 
   106 
   106 {$IFDEF SDL13}
   107 {$IFDEF SDL13}
   107     SDL_GL_SwapWindow(SDLwindow);
   108     SDL_GL_SwapWindow(SDLwindow);
   108 {$ELSE}
   109 {$ELSE}
   110 {$ENDIF}
   111 {$ENDIF}
   111 
   112 
   112     if flagMakeCapture then
   113     if flagMakeCapture then
   113     begin
   114     begin
   114         flagMakeCapture:= false;
   115         flagMakeCapture:= false;
   115         {$IFNDEF IPHONEOS}
       
   116         s:= 'hw_' + FormatDateTime('YYYY-MM-DD_HH-mm-ss', Now()) + inttostr(GameTicks);
   116         s:= 'hw_' + FormatDateTime('YYYY-MM-DD_HH-mm-ss', Now()) + inttostr(GameTicks);
   117 
   117 
   118         playSound(sndShutter);
   118         playSound(sndShutter);
       
   119 {$IFNDEF IPHONEOS}
   119         if not MakeScreenshot(s) then
   120         if not MakeScreenshot(s) then
   120         begin
   121         begin
   121             WriteLnToConsole('Screenshot failed.');
   122             WriteLnToConsole('Screenshot failed.');
   122             AddChatString(#5 + 'screen capture failed (lack of memory or write permissions)');
   123             AddChatString(#5 + 'screen capture failed (lack of memory or write permissions)');
   123         end
   124         end
   124         else
   125         else
       
   126 {$ENDIF}
   125             WriteLnToConsole('Screenshot saved: ' + s);
   127             WriteLnToConsole('Screenshot saved: ' + s);
   126         {$ENDIF}
       
   127     end;
   128     end;
   128 end;
   129 end;
   129 
   130 
   130 ////////////////////
   131 ////////////////////
   131 procedure OnDestroy;
   132 procedure OnDestroy;
   151 {$WARNINGS OFF}
   152 {$WARNINGS OFF}
   152 // disable "Some fields weren't initialized" warning
   153 // disable "Some fields weren't initialized" warning
   153 const event: TSDL_Event = ();
   154 const event: TSDL_Event = ();
   154 {$WARNINGS ON}
   155 {$WARNINGS ON}
   155 var PrevTime, CurrTime: Longword;
   156 var PrevTime, CurrTime: Longword;
       
   157 {$IFDEF SDL13}
       
   158     previousGameState: TGameState;
       
   159 {$ELSE}
   156     prevFocusState: boolean;
   160     prevFocusState: boolean;
       
   161 {$ENDIF}
   157 begin
   162 begin
   158     PrevTime:= SDL_GetTicks;
   163     PrevTime:= SDL_GetTicks;
   159     while isTerminated = false do
   164     while isTerminated = false do
   160     begin
   165     begin
   161         SDL_PumpEvents();
   166         SDL_PumpEvents();
   162         {$IFDEF SDL13}
   167 {$IFDEF SDL13}
   163         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do
   168         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do
   164         {$ELSE}
   169 {$ELSE}
   165         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0 do
   170         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0 do
   166         {$ENDIF}
   171 {$ENDIF}
   167         begin
   172         begin
   168             case event.type_ of
   173             case event.type_ of
   169                 SDL_KEYDOWN: if GameState = gsChat then
   174                 SDL_KEYDOWN: if GameState = gsChat then
   170 {$IFDEF SDL13}
   175 {$IFDEF SDL13}
   171                     // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3
   176                     // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3
   173                 SDL_WINDOWEVENT:
   178                 SDL_WINDOWEVENT:
   174                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   179                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   175                         begin
   180                         begin
   176                         cHasFocus:= true;
   181                         cHasFocus:= true;
   177                         onFocusStateChanged()
   182                         onFocusStateChanged()
       
   183                         end
       
   184                     else if event.window.event = SDL_WINDOWEVENT_MINIMIZED then
       
   185                         begin
       
   186                         previousGameState:= GameState;
       
   187                         GameState:= gsSuspend;
       
   188                         end
       
   189                     else if event.window.event = SDL_WINDOWEVENT_RESTORED then
       
   190                         begin
       
   191                         GameState:= previousGameState;
       
   192                         end
       
   193                     else if event.window.event = SDL_WINDOWEVENT_RESIZED then
       
   194                         begin
       
   195                         cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth);
       
   196                         cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight);
       
   197                         cScreenResizeDelay:= RealTicks+500;
   178                         end;
   198                         end;
   179                 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
   199                 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
   180                 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   200                 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   181                 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   201                 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   182 {$ELSE}
   202 {$ELSE}