X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fengine%2Fe_input.pas;h=0baad37ff55abaea386a336cfe7008aeed982f5c;hb=385f70688f69aba255d1cdb9b7f0717bfe1b6945;hp=6e208d7ecd1920bf6901feb5534897f8452bf3be;hpb=d46592a9a1b2cb649e26f30e54622708334b5061;p=d2df-sdl.git diff --git a/src/engine/e_input.pas b/src/engine/e_input.pas index 6e208d7..0baad37 100644 --- a/src/engine/e_input.pas +++ b/src/engine/e_input.pas @@ -1,4 +1,4 @@ -(* Copyright (C) DooM 2D:Forever Developers +(* Copyright (C) Doom 2D: Forever Developers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -94,7 +94,8 @@ const function e_InitInput(): Boolean; procedure e_ReleaseInput(); procedure e_ClearInputBuffer(); -function e_PollInput(): Boolean; +//function e_PollInput(): Boolean; +procedure e_PollJoysticks(); // call this from message loop to update joysticks function e_KeyPressed(Key: Word): Boolean; function e_AnyKeyPressed(): Boolean; function e_GetFirstKeyPressed(): Word; @@ -161,7 +162,7 @@ begin begin Inc(c); e_WriteLog('Input: Opened SDL joystick ' + IntToStr(i) + ' (' + SDL_JoystickName(joy) + - ') as joystick ' + IntToStr(c) + ':', MSG_NOTIFY); + ') as joystick ' + IntToStr(c) + ':', TMsgType.Notify); SetLength(Joysticks, c); with Joysticks[c-1] do begin @@ -173,7 +174,7 @@ begin // TODO: find proper solution for this xbox trigger shit for j := 0 to Axes do AxisZero[j] := SDL_JoystickGetAxis(joy, j); e_WriteLog(' ' + IntToStr(Axes) + ' axes, ' + IntToStr(Buttons) + ' buttons, ' + - IntToStr(Hats) + ' hats.', MSG_NOTIFY); + IntToStr(Hats) + ' hats.', TMsgType.Notify); end; end; end; @@ -207,12 +208,15 @@ end; function PollKeyboard(): Boolean; +{ var Keys: PByte; NKeys: Integer; i: NativeUInt; +} begin Result := False; + { Keys := SDL_GetKeyboardState(@NKeys); if (Keys = nil) or (NKeys < 1) then Exit; for i := 0 to NKeys do @@ -220,23 +224,23 @@ begin if ((PByte(NativeUInt(Keys) + i)^) <> 0) then KeyBuffer[i] := false; end; for i := NKeys to High(KeyBuffer) do KeyBuffer[i] := False; + } end; -function PollJoysticks(): Boolean; +procedure e_PollJoysticks(); var i, j: Word; hat: Byte; begin - Result := False; + //Result := False; if (Joysticks = nil) or (e_JoysticksAvailable = 0) then Exit; SDL_JoystickUpdate(); for j := Low(Joysticks) to High(Joysticks) do + begin with Joysticks[j] do begin - for i := 0 to Buttons do - ButtBuf[i] := SDL_JoystickGetButton(Handle, i) <> 0; - for i := 0 to Axes do - AxisBuf[i] := SDL_JoystickGetAxis(Handle, i); + for i := 0 to Buttons do ButtBuf[i] := SDL_JoystickGetButton(Handle, i) <> 0; + for i := 0 to Axes do AxisBuf[i] := SDL_JoystickGetAxis(Handle, i); for i := 0 to Hats do begin hat := SDL_JoystickGetHat(Handle, i); @@ -246,6 +250,7 @@ begin HatBuf[i, HAT_RIGHT] := LongBool(hat and SDL_HAT_RIGHT); end; end; + end; end; procedure GenerateKeyNames(); @@ -318,15 +323,17 @@ begin end; end; +{ function e_PollInput(): Boolean; var kb, js: Boolean; begin kb := PollKeyboard(); - js := PollJoysticks(); + js := e_PollJoysticks(); Result := kb or js; end; +} function e_KeyPressed(Key: Word): Boolean; var