hedgewars/hwengine.pas
changeset 11486 2b30283a402c
parent 11477 e425a6eb9da3
child 11497 66f1cff4284b
equal deleted inserted replaced
11485:e5bc40acdfaa 11486:2b30283a402c
   153 procedure MainLoop;
   153 procedure MainLoop;
   154 var event: TSDL_Event;
   154 var event: TSDL_Event;
   155     PrevTime, CurrTime: LongWord;
   155     PrevTime, CurrTime: LongWord;
   156     isTerminated: boolean;
   156     isTerminated: boolean;
   157     previousGameState: TGameState;
   157     previousGameState: TGameState;
       
   158     wheelEvent: boolean;
   158 begin
   159 begin
   159     isTerminated:= false;
   160     isTerminated:= false;
   160     PrevTime:= SDL_GetTicks;
   161     PrevTime:= SDL_GetTicks;
   161     while isTerminated = false do
   162     while isTerminated = false do
   162     begin
   163     begin
       
   164         wheelEvent:= false;
   163         SDL_PumpEvents();
   165         SDL_PumpEvents();
   164 
   166 
   165         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do
   167         while SDL_PeepEvents(@event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT) > 0 do
   166         begin
   168         begin
   167             case event.type_ of
   169             case event.type_ of
   185 
   187 
   186                 SDL_MOUSEBUTTONUP:
   188                 SDL_MOUSEBUTTONUP:
   187                     if (GameState >= gsGame) then ProcessMouse(event.button, false);
   189                     if (GameState >= gsGame) then ProcessMouse(event.button, false);
   188 
   190 
   189                 SDL_MOUSEWHEEL:
   191                 SDL_MOUSEWHEEL:
       
   192                     begin
       
   193                     wheelEvent:= true;
   190                     ProcessMouseWheel(event.wheel.x, event.wheel.y);
   194                     ProcessMouseWheel(event.wheel.x, event.wheel.y);
       
   195                     end;
   191 
   196 
   192                 SDL_TEXTINPUT: uChat.TextInput(event.text);
   197                 SDL_TEXTINPUT: uChat.TextInput(event.text);
   193 
   198 
   194                 SDL_WINDOWEVENT:
   199                 SDL_WINDOWEVENT:
   195                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   200                     if event.window.event = SDL_WINDOWEVENT_SHOWN then
   236                     ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
   241                     ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false);
   237                 SDL_QUITEV:
   242                 SDL_QUITEV:
   238                     isTerminated:= true
   243                     isTerminated:= true
   239             end; //end case event.type_ of
   244             end; //end case event.type_ of
   240         end; //end while SDL_PollEvent(@event) <> 0 do
   245         end; //end while SDL_PollEvent(@event) <> 0 do
       
   246 
       
   247         if (not wheelEvent) then
       
   248             ResetMouseWheel();
   241 
   249 
   242         if (CursorMovementX <> 0) or (CursorMovementY <> 0) then
   250         if (CursorMovementX <> 0) or (CursorMovementY <> 0) then
   243             handlePositionUpdate(CursorMovementX * cameraKeyboardSpeed, CursorMovementY * cameraKeyboardSpeed);
   251             handlePositionUpdate(CursorMovementX * cameraKeyboardSpeed, CursorMovementY * cameraKeyboardSpeed);
   244 
   252 
   245         if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and
   253         if (cScreenResizeDelay <> 0) and (cScreenResizeDelay < RealTicks) and