diff -r 4329597c85c8 -r e7e87e3c67db hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Oct 25 18:16:40 2009 +0000 +++ b/hedgewars/hwengine.pas Sun Oct 25 23:52:36 2009 +0000 @@ -166,13 +166,23 @@ {$IFDEF IPHONEOS} type TDirection = (nodir, left, right); var x, y: LongInt; - oldy_zoom: LongInt = -1; - oldy_aim: LongInt = -1; + dx, dy, mouseState: LongInt; + direction: TDirection = nodir; + havetrace: boolean = false; {$ENDIF} begin PrevTime:= SDL_GetTicks; repeat while SDL_PollEvent(@event) <> 0 do +{$IFDEF TOUCHINPUT} +if direction <> nodir then +begin + uKeys.isWalking:= true; + if direction = left then uKeys.leftKey:= true + else if direction = right then uKeys.rightKey:= true; +end +else uKeys.isWalking:= false; +{$ENDIF} case event.type_ of {$IFDEF SDL13} SDL_WINDOWEVENT: @@ -184,52 +194,101 @@ cHasFocus:= event.active.gain = 1; //SDL_VIDEORESIZE: Resize(max(event.resize.w, 600), max(event.resize.h, 450)); {$IFDEF TOUCHINPUT} + SDL_MOUSEMOTION: begin + AddFileLog('********************************************* motion'); + mouseState:= SDL_GetMouseState(0, @x, @y); + SDL_GetRelativeMouseState(0, @dx, @dy); + + direction:= nodir; + + if boolean(mouseState) then + begin + AddFileLog('x: ' + inttostr(x) + ' y: ' + inttostr(y) + ' dx: ' + inttostr(dx) + ' dy: ' + inttostr(dy)); + + {* zoom slider *} + if (x <= 50) and (y <= 430) and (y > 50) then + begin + if (dy > 0) then uKeys.wheelDown:= true + else if (dy < 0) then uKeys.wheelUp:= true; + end; + + {* aim slider *} + if (x > 270) and (y > 50) and (y <= 430) then + begin + if (dy > 0) then uKeys.downKey:= true + else if (dy < 0) then uKeys.upKey:= true; + end; + + {* switch *} + if (x > 50) and (x <= 270) and (y > 400) then + begin + if (dy <> 0) then uKeys.tabKey:= true + end; + end; + end; {*MoveCamera is in uWord.pas -- conflicts with other commands*} - {*Keys are in uKeys.pas*} SDL_MOUSEBUTTONDOWN: begin AddFileLog('********************************************* touch down'); - SDL_GetMouseState(0, @x, @y); - uKeys.leftClick:= true; + mouseState:= SDL_GetMouseState(0, @x, @y); + + {* attack *} + if (x > 50) and (x <= 270) and (y <= 50) then + begin + AddFileLog('Space DOWN -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + uKeys.spaceKey:= true; + uKeys.isAttacking:= true; + end; - {* zoom slider *} - if (x <= 50) and (y <= 430) then + if (x <= 50) and (y <= 50) then + begin + AddFileLog('Left Arrow Key DOWN -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + // uKeys.leftKey:= true; + // uKeys.isWalking:= true; + direction:= left; + end; + + if (x > 270) and (y <= 50) then + begin + AddFileLog('Right Arrow Key DOWN -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + // uKeys.rightKey:= true; + // uKeys.isWalking:= true; + direction:= right; + end; + + {* high jump *} + if (x > 160) and (x <= 270) and (y > 400) then begin {$IFDEF DEBUGFILE} - AddFileLog('Wheel -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + AddFileLog('Backspace -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); {$ENDIF} - if oldy_zoom = -1 then oldy_zoom:= y - else - begin - if oldy_zoom - y > 10 then uKeys.wheelUp:= true - else if oldy_zoom -y < -10 then uKeys.wheelDown:= true; - {* update value only if movement is consistent *} - if (y > oldy_zoom + 20 ) or (y < oldy_zoom - 20 ) then oldy_zoom:= y - end; + uKeys.backspaceKey:= true; end; - {* reset zoom *} - if (x <= 50) and (y > 430) then + end; + SDL_MOUSEBUTTONUP: begin + AddFileLog('********************************************* touch up'); + + mouseState:= SDL_GetMouseState(0, @x, @y); + uKeys.leftClick:= true; + + {* open ammo menu *} + if (y > 430) and (x > 270) then begin {$IFDEF DEBUGFILE} - AddFileLog('Middle Click -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + AddFileLog('Right Click -- x: ' + inttostr(x) + ' y: ' + inttostr(y) ); {$ENDIF} - uKeys.middleClick:= true; + uKeys.rightClick:= true; end; - {* aim slider *} - if (x > 230) and (y <= 430) then + + {* long jump *} + if (x > 50) and (x <= 160) and (y > 400) then begin {$IFDEF DEBUGFILE} - AddFileLog('Up&Down -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + AddFileLog('Enter -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); {$ENDIF} - if oldy_aim = -1 then oldy_aim:= y - else - begin - if oldy_aim - y > 10 then uKeys.upKey:= true - else if oldy_aim -y < -10 then uKeys.downKey:= true; - {* update value only if movement is consistent *} - if (y > oldy_aim + 20 ) or (y < oldy_aim - 20 ) then oldy_aim:= y - end; + uKeys.enterKey:= true; end; + {* reset zoom *} if (x <= 50) and (y > 430) then begin @@ -238,53 +297,17 @@ {$ENDIF} uKeys.middleClick:= true; end; - {* long jump *} - if (y > 430) and (x > 50) and (x <= 135) then - begin -{$IFDEF DEBUGFILE} - AddFileLog('Enter -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); -{$ENDIF} - uKeys.enterKey:= true; - end; - {* high jump *} - if (y > 430) and (x > 185) and (x <= 270) then - begin -{$IFDEF DEBUGFILE} - AddFileLog('Backspace -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); -{$ENDIF} - uKeys.backspaceKey:= true; - end; - {* attack *} - if (y <= 50) and (x > 50) and (x <= 270) then - begin + {* end movement and attack *} {$IFDEF DEBUGFILE} - AddFileLog('Space DOWN -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); + AddFileLog('Arrow Keys UP | Space UP -- x: ' + inttostr(x) + ' y: ' + inttostr(y) ); {$ENDIF} - uKeys.spaceKey:= true; - uKeys.isAttacking:= true; - end - else - begin - AddFileLog('Space UP -- x: ' + inttostr(x) + ' y: ' + inttostr(y)); - uKeys.isAttacking:= false; - end; - end; - SDL_MOUSEBUTTONUP: begin - AddFileLog('********************************************* touch up'); - - SDL_GetMouseState(0, @x, @y); - {* open ammo menu *} - if (y > 430) and (x > 270) then - begin -{$IFDEF DEBUGFILE} - AddFileLog('Right Click -- x: ' + inttostr(x) + ' y: ' + inttostr(y) ); -{$ENDIF} - uKeys.rightClick:= true; - end; + direction:= nodir; + uKeys.isAttacking:= false; end; {$ENDIF} {$IFDEF IPHONEOS} +{* might be masked by above events SDL_JOYAXIS: begin {* axis 0 = left and right; axis 1 = up and down; @@ -293,24 +316,22 @@ begin if event.jaxis.value > 1500 then begin - uKeys.rightKey:= true; - uKeys.isWalking:= true; + direction:= right; end else if event.jaxis.value <= -1500 then begin - uKeys.leftKey:= true; - uKeys.isWalking:= true; + direction:= left end else - if (event.jaxis.value > -1500) and (event.jaxis.value <= 1500) then uKeys.isWalking:= false; + if (event.jaxis.value > -1500) and (event.jaxis.value <= 1500) then direction:= nodir; {$IFDEF DEBUGFILE} AddFileLog('Joystick value: ' + inttostr(event.jaxis.value)); {$ENDIF} end; end; - +*} {$ELSE} SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then uKeys.wheelDown:= true; SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELDUP then uKeys.wheelUp:= true; @@ -320,7 +341,8 @@ SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false); {$ENDIF} SDL_QUITEV: isTerminated:= true - end; + end; + CurrTime:= SDL_GetTicks; if PrevTime + cTimerInterval <= CurrTime then begin @@ -329,6 +351,7 @@ end else SDL_Delay(1); IPCCheckSock until isTerminated + end; /////////////////////