134 end; |
134 end; |
135 |
135 |
136 function GetSpriteData(sprite, SDsprite: TSprite): PSpriteData; inline; |
136 function GetSpriteData(sprite, SDsprite: TSprite): PSpriteData; inline; |
137 begin |
137 begin |
138 exit(@SpritesData[GetSprite(sprite, SDsprite)]); |
138 exit(@SpritesData[GetSprite(sprite, SDsprite)]); |
|
139 end; |
|
140 |
|
141 procedure DrawCircleGear(gear : PVisualGear); |
|
142 var tmp: real; |
|
143 begin |
|
144 if gear^.Angle = 1 then |
|
145 begin |
|
146 tmp:= Gear^.State / 100; |
|
147 DrawTexture(round(Gear^.X-24*tmp) + WorldDx, round(Gear^.Y-24*tmp) + WorldDy, SpritesData[sprVampiric].Texture, tmp) |
|
148 end |
|
149 else |
|
150 DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer); |
139 end; |
151 end; |
140 |
152 |
141 procedure DrawVisualGears(Layer: LongWord; worldIsShifted: boolean); |
153 procedure DrawVisualGears(Layer: LongWord; worldIsShifted: boolean); |
142 var Gear: PVisualGear; |
154 var Gear: PVisualGear; |
143 tinted, speedlessFlakes: boolean; |
155 tinted, speedlessFlakes: boolean; |
206 vgtSmokeTrace: if Gear^.State < 8 then |
218 vgtSmokeTrace: if Gear^.State < 8 then |
207 DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
219 DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
208 vgtEvilTrace: if Gear^.State < 8 then |
220 vgtEvilTrace: if Gear^.State < 8 then |
209 DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
221 DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
210 vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, (Gear^.Tint and $FF))); |
222 vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, (Gear^.Tint and $FF))); |
|
223 vgtLine: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, Gear^.State, Gear^.Tint); |
|
224 vgtCircle: DrawCircleGear(gear); |
211 end; |
225 end; |
212 if (cReducedQuality and rqAntiBoom) = 0 then |
226 if (cReducedQuality and rqAntiBoom) = 0 then |
213 case Gear^.Kind of |
227 case Gear^.Kind of |
214 vgtSmoke: DrawTextureF(SpritesData[sprSmoke].Texture, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 7 - Gear^.Frame, 1, SpritesData[sprSmoke].Width, SpritesData[sprSmoke].Height); |
228 vgtSmoke: DrawTextureF(SpritesData[sprSmoke].Texture, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 7 - Gear^.Frame, 1, SpritesData[sprSmoke].Width, SpritesData[sprSmoke].Height); |
215 vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
229 vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
375 if speedlessFlakes then |
389 if speedlessFlakes then |
376 DrawTextureF(spriteData^.Texture, Gear^.Scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, spriteData^.Width, spriteData^.Height) |
390 DrawTextureF(spriteData^.Texture, Gear^.Scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, spriteData^.Width, spriteData^.Height) |
377 else |
391 else |
378 DrawTextureRotatedF(spriteData^.Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, spriteData^.Width, spriteData^.Height, Gear^.Angle); |
392 DrawTextureRotatedF(spriteData^.Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, spriteData^.Width, spriteData^.Height, Gear^.Angle); |
379 end; |
393 end; |
380 vgtCircle: if gear^.Angle = 1 then |
394 vgtCircle: DrawCircleGear(gear); |
381 begin |
|
382 tmp:= Gear^.State / 100; |
|
383 DrawTexture(round(Gear^.X-24*tmp) + WorldDx, round(Gear^.Y-24*tmp) + WorldDy, SpritesData[sprVampiric].Texture, tmp) |
|
384 end |
|
385 else |
|
386 DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer); |
|
387 end; |
395 end; |
388 if (Gear^.Tint <> $FFFFFFFF) or tinted then |
396 if (Gear^.Tint <> $FFFFFFFF) or tinted then |
389 untint; |
397 untint; |
390 Gear:= Gear^.NextGear |
398 Gear:= Gear^.NextGear |
391 end |
399 end |