hedgewars/uGearsHandlersRope.pas
changeset 7611 5013e11e13e5
parent 7610 682e21112867
child 7612 047c6692a2e7
equal deleted inserted replaced
7610:682e21112867 7611:5013e11e13e5
    85             inc(i);
    85             inc(i);
    86             stuck:= TestCollisionYwithGear(HHGear, 1) <> 0;
    86             stuck:= TestCollisionYwithGear(HHGear, 1) <> 0;
    87             if stuck then HHGear^.Y:= HHGear^.Y-_1
    87             if stuck then HHGear^.Y:= HHGear^.Y-_1
    88             end
    88             end
    89         until (i = 8) or not stuck;
    89         until (i = 8) or not stuck;
       
    90         HHGear^.Y:= HHGear^.Y+_1;
    90         // experiment in simulating something the shoppa players apparently expect
    91         // experiment in simulating something the shoppa players apparently expect
    91         if Gear^.Message and gmDown <> 0 then
    92         if Gear^.Message and gmDown <> 0 then
    92             begin
    93             begin
    93             //HHGear^.dY:= HHGear^.dY / 16;
    94             //HHGear^.dY:= HHGear^.dY / 16;
    94             HHGear^.dY:= _0;
    95             //HHGear^.dY.QWordValue:= 0;
    95             HHGear^.dX:= HHGear^.dX * 2
    96             HHGear^.dY:= -_0_1;
       
    97             HHGear^.dX:= HHGear^.dX * _1_5;
    96             end;
    98             end;
    97         if Gear^.Message and gmRight <> 0 then
    99         if Gear^.Message and gmRight <> 0 then
    98             HHGear^.dX.isNegative:= false
   100             HHGear^.dX.isNegative:= false
    99         else if Gear^.Message and gmLeft <> 0 then
   101         else if Gear^.Message and gmLeft <> 0 then
   100             HHGear^.dX.isNegative:= true
   102             HHGear^.dX.isNegative:= true
   107             inc(i);
   109             inc(i);
   108             stuck:= TestCollisionYwithGear(HHGear, -1) <> 0;
   110             stuck:= TestCollisionYwithGear(HHGear, -1) <> 0;
   109             if stuck then HHGear^.Y:= HHGear^.Y+_1
   111             if stuck then HHGear^.Y:= HHGear^.Y+_1
   110             end
   112             end
   111         until (i = 8) or not stuck;
   113         until (i = 8) or not stuck;
       
   114         HHGear^.Y:= HHGear^.Y-_1;
   112         if Gear^.Message and gmDown <> 0 then
   115         if Gear^.Message and gmDown <> 0 then
   113             begin
   116             begin
   114             //HHGear^.dY:= HHGear^.dY / 16;
   117             //HHGear^.dY:= HHGear^.dY / 16;
   115             HHGear^.dY.QWordValue:= 0;
   118             //HHGear^.dY.QWordValue:= 0;
   116             HHGear^.dX:= HHGear^.dX * 2
   119             HHGear^.dY:= _0_1;
       
   120             HHGear^.dX:= HHGear^.dX * _1_5;
   117             end;
   121             end;
   118         if Gear^.Message and gmRight <> 0 then
   122         if Gear^.Message and gmRight <> 0 then
   119             HHGear^.dX.isNegative:= true
   123             HHGear^.dX.isNegative:= true
   120         else if Gear^.Message and gmLeft <> 0 then
   124         else if Gear^.Message and gmLeft <> 0 then
   121             HHGear^.dX.isNegative:= false
   125             HHGear^.dX.isNegative:= false
   128             inc(i);
   132             inc(i);
   129             stuck:= TestCollisionXwithGear(HHGear, 1);
   133             stuck:= TestCollisionXwithGear(HHGear, 1);
   130             if stuck then HHGear^.X:= HHGear^.X-_1
   134             if stuck then HHGear^.X:= HHGear^.X-_1
   131             end
   135             end
   132         until (i = 8) or not stuck;
   136         until (i = 8) or not stuck;
       
   137         HHGear^.X:= HHGear^.X+_1;
   133         if Gear^.Message and gmDown <> 0 then
   138         if Gear^.Message and gmDown <> 0 then
   134             begin
   139             begin
   135             //HHGear^.dX:= HHGear^.dX / 16;
   140             //HHGear^.dX:= HHGear^.dX / 16;
   136             HHGear^.dX.QWordValue:= 0;
   141             //HHGear^.dX.QWordValue:= 0;
   137             HHGear^.dY:= HHGear^.dY * 2
   142             HHGear^.dX:= -_0_1;
       
   143             HHGear^.dY:= HHGear^.dY * _1_5;
   138             end;
   144             end;
   139         if Gear^.Message and gmRight <> 0 then
   145         if Gear^.Message and gmRight <> 0 then
   140             HHGear^.dY.isNegative:= true
   146             HHGear^.dY.isNegative:= true
   141         else if Gear^.Message and gmLeft <> 0 then
   147         else if Gear^.Message and gmLeft <> 0 then
   142             HHGear^.dY.isNegative:= false
   148             HHGear^.dY.isNegative:= false
   149             inc(i);
   155             inc(i);
   150             stuck:= TestCollisionXwithGear(HHGear, -1);
   156             stuck:= TestCollisionXwithGear(HHGear, -1);
   151             if stuck then HHGear^.X:= HHGear^.X+_1
   157             if stuck then HHGear^.X:= HHGear^.X+_1
   152             end
   158             end
   153         until (i = 8) or not stuck;
   159         until (i = 8) or not stuck;
       
   160         HHGear^.X:= HHGear^.X-_1;
   154         if Gear^.Message and gmDown <> 0 then
   161         if Gear^.Message and gmDown <> 0 then
   155             begin
   162             begin
   156             //HHGear^.dX:= HHGear^.dX / 16;
   163             //HHGear^.dX:= HHGear^.dX / 16;
   157             HHGear^.dX.QWordValue:= 0;
   164             //HHGear^.dX.QWordValue:= 0;
   158             HHGear^.dY:= HHGear^.dY * 2
   165             HHGear^.dX:= _0_1;
       
   166             HHGear^.dY:= HHGear^.dY * _1_5;
   159             end;
   167             end;
   160         if Gear^.Message and gmRight <> 0 then
   168         if Gear^.Message and gmRight <> 0 then
   161             HHGear^.dY.isNegative:= false
   169             HHGear^.dY.isNegative:= false
   162         else if Gear^.Message and gmLeft <> 0 then
   170         else if Gear^.Message and gmLeft <> 0 then
   163             HHGear^.dY.isNegative:= true
   171             HHGear^.dY.isNegative:= true