hedgewars/uVisualGears.pas
changeset 2713 71250942e95b
parent 2699 249adefa9c1c
child 2715 0e4e0db79e2a
equal deleted inserted replaced
2712:8f4527c9137c 2713:71250942e95b
   198 			Gear^.FrameTicks:= cExplFrameTicks
   198 			Gear^.FrameTicks:= cExplFrameTicks
   199 			end
   199 			end
   200 		else dec(Gear^.FrameTicks, Steps)
   200 		else dec(Gear^.FrameTicks, Steps)
   201 end;
   201 end;
   202 
   202 
       
   203 procedure doStepSmoke(Gear: PVisualGear; Steps: Longword);
       
   204 begin
       
   205 	Gear^.X:= Gear^.X + (cWindSpeed + Gear^.dX) * Steps;
       
   206 	Gear^.Y:= Gear^.Y - (cDrownSpeed + Gear^.dY) * Steps;
       
   207 
       
   208 	Gear^.dX := Gear^.dX + (cWindSpeed * _0_3 * Steps);
       
   209 	//Gear^.dY := Gear^.dY - (cDrownSpeed * _0_995);
       
   210 
       
   211 	if Gear^.FrameTicks <= Steps then
       
   212 		if Gear^.Frame = 0 then DeleteVisualGear(Gear)
       
   213 		else
       
   214 			begin
       
   215 			if Random(2) = 0 then dec(Gear^.Frame);
       
   216 			Gear^.FrameTicks:= cExplFrameTicks
       
   217 			end
       
   218 		else dec(Gear^.FrameTicks, Steps)
       
   219 end;
       
   220 
   203 ////////////////////////////////////////////////////////////////////////////////
   221 ////////////////////////////////////////////////////////////////////////////////
   204 const cSorterWorkTime = 640;
   222 const cSorterWorkTime = 640;
   205 var thexchar: array[0..cMaxTeams] of
   223 var thexchar: array[0..cMaxTeams] of
   206 			record
   224 			record
   207 			dy, ny, dw: LongInt;
   225 			dy, ny, dw: LongInt;
   330 			@doStepSmallDamage,
   348 			@doStepSmallDamage,
   331 			@doStepTeamHealthSorter,
   349 			@doStepTeamHealthSorter,
   332 			@doStepSpeechBubble,
   350 			@doStepSpeechBubble,
   333 			@doStepBubble,
   351 			@doStepBubble,
   334 			@doStepSteam,
   352 			@doStepSteam,
       
   353 			@doStepSmoke,
   335 			@doStepHealth
   354 			@doStepHealth
   336 		);
   355 		);
   337 
   356 
   338 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear;
   357 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear;
   339 var gear: PVisualGear;
   358 var gear: PVisualGear;
   419 				dx.isNegative:= random(2) = 0;
   438 				dx.isNegative:= random(2) = 0;
   420 				dx.QWordValue:= random(100000000);
   439 				dx.QWordValue:= random(100000000);
   421 				dy:= _0_001 * (random(85) + 95);
   440 				dy:= _0_001 * (random(85) + 95);
   422 				dy.isNegative:= false;
   441 				dy.isNegative:= false;
   423 				Frame:= 7 - random(3);
   442 				Frame:= 7 - random(3);
       
   443 				FrameTicks:= cExplFrameTicks * 2;
       
   444 				end;
       
   445   vgtSmoke: begin
       
   446 				dx:= _0_0002 * (random(45) + 10);
       
   447 				dx.isNegative:= random(2) = 0;
       
   448 				dy:= _0_0002 * (random(45) + 10);
       
   449 				dy.isNegative:= false;
       
   450 				Frame:= 7 - random(2);
   424 				FrameTicks:= cExplFrameTicks * 2;
   451 				FrameTicks:= cExplFrameTicks * 2;
   425 				end;
   452 				end;
   426 	vgtHealth: begin
   453 	vgtHealth: begin
   427 				dx:= _0_001 * random(45);
   454 				dx:= _0_001 * random(45);
   428 				dx.isNegative:= random(2) = 0;
   455 				dx.isNegative:= random(2) = 0;
   483 			vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame);
   510 			vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame);
   484 			end;
   511 			end;
   485 		Gear:= Gear^.NextGear
   512 		Gear:= Gear^.NextGear
   486 		end;
   513 		end;
   487 	1: while Gear <> nil do
   514 	1: while Gear <> nil do
       
   515 		begin
       
   516 			if not cReducedQuality then
       
   517 				case Gear^.Kind of
       
   518 					vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
       
   519 				end;
       
   520 		Gear:= Gear^.NextGear
       
   521 		end;
       
   522 	2: while Gear <> nil do
   488 		begin
   523 		begin
   489         if not cReducedQuality then
   524         if not cReducedQuality then
   490             case Gear^.Kind of
   525             case Gear^.Kind of
   491                 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
   526                 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
   492                 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
   527                 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);