equal
deleted
inserted
replaced
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 |