hedgewars/uGearsHandlersMess.pas
changeset 9477 0463f747e839
parent 9473 a51a69094c24
child 9479 167dea42d7d7
equal deleted inserted replaced
9475:619920c6aea0 9477:0463f747e839
  1122 var
  1122 var
  1123     i, x, y: LongWord;
  1123     i, x, y: LongWord;
  1124     oX, oY: hwFloat;
  1124     oX, oY: hwFloat;
  1125     VGear: PVisualGear;
  1125     VGear: PVisualGear;
  1126 begin
  1126 begin
       
  1127     if WorldWrap(Gear) then
       
  1128         begin
       
  1129         SpawnBulletTrail(Gear);
       
  1130         inc(Gear^.PortalCounter);
       
  1131         Gear^.Elasticity:= Gear^.X;
       
  1132         Gear^.Friction:= Gear^.Y
       
  1133         end;
  1127     AllInactive := false;
  1134     AllInactive := false;
  1128     inc(Gear^.Timer);
  1135     inc(Gear^.Timer);
  1129     i := 80;
  1136     i := 80;
  1130     oX := Gear^.X;
  1137     oX := Gear^.X;
  1131     oY := Gear^.Y;
  1138     oY := Gear^.Y;
  2012     sticky: Boolean;
  2019     sticky: Boolean;
  2013     vgt: PVisualGear;
  2020     vgt: PVisualGear;
  2014     tdX,tdY: HWFloat;
  2021     tdX,tdY: HWFloat;
  2015     landPixel: Word;
  2022     landPixel: Word;
  2016 begin
  2023 begin
       
  2024     WorldWrap(Gear);
  2017     sticky:= (Gear^.State and gsttmpFlag) <> 0;
  2025     sticky:= (Gear^.State and gsttmpFlag) <> 0;
  2018     if not sticky then AllInactive := false;
  2026     if not sticky then AllInactive := false;
  2019 
  2027 
  2020     landPixel:= TestCollisionYwithGear(Gear, 1);
  2028     landPixel:= TestCollisionYwithGear(Gear, 1);
  2021     if landPixel = 0 then
  2029     if landPixel = 0 then
  3186 
  3194 
  3187 const cAngleSpeed =   3;
  3195 const cAngleSpeed =   3;
  3188 var
  3196 var
  3189     HHGear: PGear;
  3197     HHGear: PGear;
  3190     i: LongInt;
  3198     i: LongInt;
  3191     dX, dY: hwFloat;
  3199     dX, dY, X, Y : hwFloat;
  3192     fChanged: boolean;
  3200     fChanged: boolean;
  3193     trueAngle: Longword;
  3201     trueAngle: Longword;
  3194     t: PGear;
  3202     t: PGear;
  3195 begin
  3203 begin
       
  3204     if WorldWrap(Gear) then
       
  3205         begin
       
  3206         // recycling as temp vars
       
  3207         Y.isNegative:= false;
       
  3208         Y.QWordValue:= 4294967296 * 112;
       
  3209         X.isNegative:= false;
       
  3210         X.QWordValue:= 4294967296 * 35;
       
  3211         dX.isNegative:= false;
       
  3212         dX.QWordValue:= 4294967296 * 1152;
       
  3213 
       
  3214         dY:=hwAbs(Gear^.dX*4);
       
  3215         dY:= dY + hwPow(dY,3)/_6 + _3 * hwPow(dY,5) / _40 + _5 * hwPow(dY,7) / Y + X * hwPow(dY,9) / dX;
       
  3216         Gear^.Angle:= hwRound(dY*_2048 / _PI);
       
  3217         if not Gear^.dY.isNegative then Gear^.Angle:= 2048-Gear^.Angle;
       
  3218         if Gear^.dX.isNegative then Gear^.Angle:= 4096-Gear^.Angle;
       
  3219         end;
  3196     AllInactive := false;
  3220     AllInactive := false;
  3197 
  3221 
  3198     HHGear := Gear^.Hedgehog^.Gear;
  3222     HHGear := Gear^.Hedgehog^.Gear;
  3199     FollowGear := Gear;
  3223     FollowGear := Gear;
  3200 
  3224 
  4096 procedure doStepMovingPortal_real(Gear: PGear);
  4120 procedure doStepMovingPortal_real(Gear: PGear);
  4097 var
  4121 var
  4098     x, y, tx, ty: LongInt;
  4122     x, y, tx, ty: LongInt;
  4099     s: hwFloat;
  4123     s: hwFloat;
  4100 begin
  4124 begin
       
  4125     WorldWrap(Gear);
  4101     x := hwRound(Gear^.X);
  4126     x := hwRound(Gear^.X);
  4102     y := hwRound(Gear^.Y);
  4127     y := hwRound(Gear^.Y);
  4103     tx := 0;
  4128     tx := 0;
  4104     ty := 0;
  4129     ty := 0;
  4105     // avoid compiler hints
  4130     // avoid compiler hints