hedgewars/uVisualGears.pas
changeset 2848 8a1725b4f724
parent 2827 45817d8386c7
child 2941 566f967ec22f
equal deleted inserted replaced
2847:cde320fd3122 2848:8a1725b4f724
   233 			Gear^.FrameTicks:= cExplFrameTicks
   233 			Gear^.FrameTicks:= cExplFrameTicks
   234 			end
   234 			end
   235 		else dec(Gear^.FrameTicks, Steps)
   235 		else dec(Gear^.FrameTicks, Steps)
   236 end;
   236 end;
   237 
   237 
       
   238 procedure doStepDust(Gear: PVisualGear; Steps: Longword);
       
   239 begin
       
   240 	Gear^.X:= Gear^.X + (cWindSpeed + (cWindSpeed * _0_03 * Steps) + Gear^.dX) * Steps;
       
   241 	Gear^.Y:= Gear^.Y - (Gear^.dY) * Steps;
       
   242 
       
   243 	Gear^.dX := Gear^.dX - (Gear^.dX * _0_005 * Steps);
       
   244 	Gear^.dY := Gear^.dY - (cDrownSpeed * _0_001 * Steps);
       
   245 
       
   246 	if Gear^.FrameTicks <= Steps then
       
   247 		if Gear^.Frame = 0 then DeleteVisualGear(Gear)
       
   248 		else
       
   249 			begin
       
   250 			dec(Gear^.Frame);
       
   251 			Gear^.FrameTicks:= cExplFrameTicks
       
   252 			end
       
   253 		else dec(Gear^.FrameTicks, Steps)
       
   254 end;
       
   255 
   238 ////////////////////////////////////////////////////////////////////////////////
   256 ////////////////////////////////////////////////////////////////////////////////
   239 const cSorterWorkTime = 640;
   257 const cSorterWorkTime = 640;
   240 var thexchar: array[0..cMaxTeams] of
   258 var thexchar: array[0..cMaxTeams] of
   241 			record
   259 			record
   242 			dy, ny, dw: LongInt;
   260 			dy, ny, dw: LongInt;
   367 			@doStepSpeechBubble,
   385 			@doStepSpeechBubble,
   368 			@doStepBubble,
   386 			@doStepBubble,
   369 			@doStepSteam,
   387 			@doStepSteam,
   370 			@doStepSmoke,
   388 			@doStepSmoke,
   371 			@doStepHealth,
   389 			@doStepHealth,
   372 			@doStepShell
   390 			@doStepShell,
       
   391 			@doStepDust
   373 		);
   392 		);
   374 
   393 
   375 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear;
   394 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear;
   376 var gear: PVisualGear;
   395 var gear: PVisualGear;
   377 	t: Longword;
   396 	t: Longword;
   473 				dx:= _0_001 * random(45);
   492 				dx:= _0_001 * random(45);
   474 				dx.isNegative:= random(2) = 0;
   493 				dx.isNegative:= random(2) = 0;
   475 				dy:= _0_001 * (random(20) + 25);
   494 				dy:= _0_001 * (random(20) + 25);
   476 				Frame:= 0;
   495 				Frame:= 0;
   477 				FrameTicks:= random(750) + 1250;
   496 				FrameTicks:= random(750) + 1250;
       
   497 				end;
       
   498   vgtDust: begin
       
   499 				dx:= _0_005 * (random(15) + 10);
       
   500 				dx.isNegative:= random(2) = 0;
       
   501 				dy:= _0_001 * (random(40) + 20);
       
   502 				Frame:= 7 - random(2);
       
   503 				FrameTicks:= random(20) + 15;
   478 				end;
   504 				end;
   479 		end;
   505 		end;
   480 
   506 
   481 if VisualGearsList <> nil then
   507 if VisualGearsList <> nil then
   482 	begin
   508 	begin
   533 	1: while Gear <> nil do
   559 	1: while Gear <> nil do
   534 		begin
   560 		begin
   535 			if not cReducedQuality then
   561 			if not cReducedQuality then
   536 				case Gear^.Kind of
   562 				case Gear^.Kind of
   537 					vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
   563 					vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
       
   564 					vgtDust: DrawSprite(sprDust, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
   538 				end;
   565 				end;
   539 		Gear:= Gear^.NextGear
   566 		Gear:= Gear^.NextGear
   540 		end;
   567 		end;
   541 	2: while Gear <> nil do
   568 	2: while Gear <> nil do
   542 		begin
   569 		begin