hedgewars/hwengine.pas
branchhedgeroid
changeset 6224 42b256eca362
parent 6029 5073285b6599
parent 6219 c193881389c1
child 6328 d14adf1c7721
equal deleted inserted replaced
6055:88cfcd9161d3 6224:42b256eca362
   162 begin
   162 begin
   163     PrevTime:= SDL_GetTicks;
   163     PrevTime:= SDL_GetTicks;
   164     while isTerminated = false do
   164     while isTerminated = false do
   165     begin
   165     begin
   166         SDL_PumpEvents();
   166         SDL_PumpEvents();
   167 {$IFDEF SDL13}
   167         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, {$IFDEF SDL13}SDL_FIRSTEVENT, SDL_LASTEVENT{$ELSE}SDL_ALLEVENTS{$ENDIF}) > 0 do
   168         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do
       
   169 {$ELSE}
       
   170         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0 do
       
   171 {$ENDIF}
       
   172         begin
   168         begin
   173             case event.type_ of
   169             case event.type_ of
       
   170 {$IFDEF SDL13}
   174                 SDL_KEYDOWN: if GameState = gsChat then
   171                 SDL_KEYDOWN: if GameState = gsChat then
   175 {$IFDEF SDL13}
       
   176                     // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3
   172                     // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3
   177                     KeyPressChat(event.key.keysym.sym);
   173                     KeyPressChat(event.key.keysym.sym);
   178                 SDL_WINDOWEVENT:
   174                 SDL_WINDOWEVENT:
   179                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   175                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   180                         begin
   176                         begin
   190                         begin
   186                         begin
   191                         GameState:= previousGameState;
   187                         GameState:= previousGameState;
   192                         end
   188                         end
   193                     else if event.window.event = SDL_WINDOWEVENT_RESIZED then
   189                     else if event.window.event = SDL_WINDOWEVENT_RESIZED then
   194                         begin
   190                         begin
       
   191                         // way too broken right now
       
   192                         (*
   195                         cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth);
   193                         cNewScreenWidth:= max(2 * (event.window.data1 div 2), cMinScreenWidth);
   196                         cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight);
   194                         cNewScreenHeight:= max(2 * (event.window.data2 div 2), cMinScreenHeight);
   197                         cScreenResizeDelay:= RealTicks+500;
   195                         cScreenResizeDelay:= RealTicks+500;
       
   196                         *)
   198                         end;
   197                         end;
   199                 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
   198                 SDL_FINGERMOTION: onTouchMotion(event.tfinger.x, event.tfinger.y,event.tfinger.dx, event.tfinger.dy, event.tfinger.fingerId);
   200                 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   199                 SDL_FINGERDOWN: onTouchDown(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   201                 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   200                 SDL_FINGERUP: onTouchUp(event.tfinger.x, event.tfinger.y, event.tfinger.fingerId);
   202 {$ELSE}
   201 {$ELSE}
       
   202                 SDL_KEYDOWN: if GameState = gsChat then
   203                     KeyPressChat(event.key.keysym.unicode);
   203                     KeyPressChat(event.key.keysym.unicode);
   204                 SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true;
   204                 SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then wheelDown:= true;
   205                 SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true;
   205                 SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then wheelUp:= true;
   206                 SDL_ACTIVEEVENT:
   206                 SDL_ACTIVEEVENT:
   207                     if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then
   207                     if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then
   226                 SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true);
   226                 SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true);
   227                 SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
   227                 SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
   228                 SDL_QUITEV: isTerminated:= true
   228                 SDL_QUITEV: isTerminated:= true
   229             end; //end case event.type_ of
   229             end; //end case event.type_ of
   230         end; //end while SDL_PollEvent(@event) <> 0 do
   230         end; //end while SDL_PollEvent(@event) <> 0 do
       
   231 
   231         if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then
   232         if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and ((cNewScreenWidth <> cScreenWidth) or (cNewScreenHeight <> cScreenHeight)) then
   232             begin
   233             begin
   233             cScreenResizeDelay:= 0;
   234             cScreenResizeDelay:= 0;
   234             cScreenWidth:= cNewScreenWidth;
   235             cScreenWidth:= cNewScreenWidth;
   235             cScreenHeight:= cNewScreenHeight;
   236             cScreenHeight:= cNewScreenHeight;
   239             ScriptOnScreenResize();
   240             ScriptOnScreenResize();
   240             InitCameraBorders()
   241             InitCameraBorders()
   241             end;
   242             end;
   242 
   243 
   243         if isTerminated = false then
   244         if isTerminated = false then
   244         begin
   245             begin
   245             CurrTime:= SDL_GetTicks;
   246             CurrTime:= SDL_GetTicks;
   246             if PrevTime + longword(cTimerInterval) <= CurrTime then
   247             if PrevTime + longword(cTimerInterval) <= CurrTime then
   247             begin
   248                 begin
   248                 DoTimer(CurrTime - PrevTime);
   249                 DoTimer(CurrTime - PrevTime);
   249                 PrevTime:= CurrTime
   250                 PrevTime:= CurrTime
   250             end
   251                 end
   251             else SDL_Delay(1);
   252             else SDL_Delay(1);
   252             IPCCheckSock();
   253             IPCCheckSock();
   253         end;
   254             end;
   254     end;
   255     end;
   255 end;
   256 end;
   256 
   257 
   257 ///////////////
   258 ///////////////
   258 {$IFDEF HWLIBRARY}
   259 procedure Game{$IFDEF HWLIBRARY}(gameArgs: PPChar); cdecl; export{$ENDIF};
   259 procedure Game(gameArgs: PPChar); cdecl; export;
       
   260 {$ELSE}
       
   261 procedure Game;
       
   262 {$ENDIF}
       
   263 var p: TPathType;
   260 var p: TPathType;
   264     s: shortstring;
   261     s: shortstring;
   265     i: LongInt;
   262     i: LongInt;
   266 begin
   263 begin
   267 {$IFDEF HWLIBRARY}
   264 {$IFDEF HWLIBRARY}