hedgewars/uVisualGears.pas
changeset 3597 978c30ef50fc
parent 3594 aeca3d8f1b29
child 3611 ed00aa2b339e
equal deleted inserted replaced
3595:341e407e3754 3597:978c30ef50fc
   163                 FrameTicks:= random(vobFrameTicks);
   163                 FrameTicks:= random(vobFrameTicks);
   164                 Frame:= random(vobFramesCount);
   164                 Frame:= random(vobFramesCount);
   165                 Angle:= random * 360;
   165                 Angle:= random * 360;
   166                 dx:= 0.0000038654705 * random(10000);
   166                 dx:= 0.0000038654705 * random(10000);
   167                 dy:= 0.000003506096 * random(7000);
   167                 dy:= 0.000003506096 * random(7000);
   168                 if random(2) = 0 then dx*=-1;
   168                 if random(2) = 0 then dx := -dx;
   169                 dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
   169                 dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
   170                 end;
   170                 end;
   171     vgtCloud: begin
   171     vgtCloud: begin
   172                 Frame:= random(4);
   172                 Frame:= random(4);
   173                 dx:= 0.000005 * random(10000);
   173                 dx:= 0.000005 * random(10000);
   174                 if random(2) = 0 then dx*=-1;
   174                 if random(2) = 0 then dx := -dx;
   175                 timer:= random(4096);
   175                 timer:= random(4096);
   176                 end;
   176                 end;
   177     vgtExplPart,
   177     vgtExplPart,
   178     vgtExplPart2: begin
   178     vgtExplPart2: begin
   179                 t:= random(1024);
   179                 t:= random(1024);
   180                 sp:= 0.001 * (random(95) + 70);
   180                 sp:= 0.001 * (random(95) + 70);
   181                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   181                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   182                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   182                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   183                 if random(2) = 0 then dx*=-1;
   183                 if random(2) = 0 then dx := -dx;
   184                 if random(2) = 0 then dy*=-1;
   184                 if random(2) = 0 then dy := -dy;
   185                 Frame:= 7 - random(3);
   185                 Frame:= 7 - random(3);
   186                 FrameTicks:= cExplFrameTicks
   186                 FrameTicks:= cExplFrameTicks
   187                 end;
   187                 end;
   188         vgtFire: begin
   188         vgtFire: begin
   189                 t:= random(1024);
   189                 t:= random(1024);
   190                 sp:= 0.001 * (random(85) + 95);
   190                 sp:= 0.001 * (random(85) + 95);
   191                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   191                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   192                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   192                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   193                 if random(2) = 0 then dx*=-1;
   193                 if random(2) = 0 then dx := -dx;
   194                 if random(2) = 0 then dy*=-1;
   194                 if random(2) = 0 then dy := -dy;
   195                 FrameTicks:= 650 + random(250);
   195                 FrameTicks:= 650 + random(250);
   196                 Frame:= random(8)
   196                 Frame:= random(8)
   197                 end;
   197                 end;
   198          vgtEgg: begin
   198          vgtEgg: begin
   199                 t:= random(1024);
   199                 t:= random(1024);
   200                 sp:= 0.001 * (random(85) + 95);
   200                 sp:= 0.001 * (random(85) + 95);
   201                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   201                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   202                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   202                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   203                 if random(2) = 0 then dx*=-1;
   203                 if random(2) = 0 then dx := -dx;
   204                 if random(2) = 0 then dy*=-1;
   204                 if random(2) = 0 then dy := -dy;
   205                 FrameTicks:= 650 + random(250);
   205                 FrameTicks:= 650 + random(250);
   206                 Frame:= 1
   206                 Frame:= 1
   207                 end;
   207                 end;
   208         vgtShell: FrameTicks:= 500;
   208         vgtShell: FrameTicks:= 500;
   209     vgtSmallDamageTag: begin
   209     vgtSmallDamageTag: begin
   210                 gear^.FrameTicks:= 1100
   210                 gear^.FrameTicks:= 1100
   211                 end;
   211                 end;
   212     vgtBubble: begin
   212     vgtBubble: begin
   213                 dx:= 0.0000038654705 * random(10000);
   213                 dx:= 0.0000038654705 * random(10000);
   214                 dy:= 0.001 * (random(85) + 95);
   214                 dy:= 0.001 * (random(85) + 95);
   215                 if random(2) = 0 then dx*=-1;
   215                 if random(2) = 0 then dx := -dx;
   216                 FrameTicks:= 250 + random(1751);
   216                 FrameTicks:= 250 + random(1751);
   217                 Frame:= random(5)
   217                 Frame:= random(5)
   218                 end;
   218                 end;
   219     vgtSteam: begin
   219     vgtSteam: begin
   220                 dx:= 0.0000038654705 * random(10000);
   220                 dx:= 0.0000038654705 * random(10000);
   221                 dy:= 0.001 * (random(85) + 95);
   221                 dy:= 0.001 * (random(85) + 95);
   222                 if random(2) = 0 then dx*=-1;
   222                 if random(2) = 0 then dx := -dx;
   223                 Frame:= 7 - random(3);
   223                 Frame:= 7 - random(3);
   224                 FrameTicks:= cExplFrameTicks * 2;
   224                 FrameTicks:= cExplFrameTicks * 2;
   225                 end;
   225                 end;
   226     vgtAmmo: begin
   226     vgtAmmo: begin
   227                 alpha:= 1.0;
   227                 alpha:= 1.0;
   229                 end;
   229                 end;
   230   vgtSmokeWhite, 
   230   vgtSmokeWhite, 
   231   vgtSmoke: begin
   231   vgtSmoke: begin
   232                 dx:= 0.0002 * (random(45) + 10);
   232                 dx:= 0.0002 * (random(45) + 10);
   233                 dy:= 0.0002 * (random(45) + 10);
   233                 dy:= 0.0002 * (random(45) + 10);
   234                 if random(2) = 0 then dx*=-1;
   234                 if random(2) = 0 then dx := -dx;
   235                 Frame:= 7 - random(2);
   235                 Frame:= 7 - random(2);
   236                 FrameTicks:= cExplFrameTicks * 2;
   236                 FrameTicks:= cExplFrameTicks * 2;
   237                 end;
   237                 end;
   238     vgtHealth: begin
   238     vgtHealth: begin
   239                 dx:= 0.001 * random(45);
   239                 dx:= 0.001 * random(45);
   240                 dy:= 0.001 * (random(20) + 25);
   240                 dy:= 0.001 * (random(20) + 25);
   241                 if random(2) = 0 then dx*=-1;
   241                 if random(2) = 0 then dx := -dx;
   242                 Frame:= 0;
   242                 Frame:= 0;
   243                 FrameTicks:= random(750) + 1250;
   243                 FrameTicks:= random(750) + 1250;
   244                 end;
   244                 end;
   245   vgtDust: begin
   245   vgtDust: begin
   246                 dx:= 0.005 * (random(15) + 10);
   246                 dx:= 0.005 * (random(15) + 10);
   247                 dy:= 0.001 * (random(40) + 20);
   247                 dy:= 0.001 * (random(40) + 20);
   248                 if random(2) = 0 then dx*=-1;
   248                 if random(2) = 0 then dx := -dx;
   249                 Frame:= 7 - random(2);
   249                 Frame:= 7 - random(2);
   250                 FrameTicks:= random(20) + 15;
   250                 FrameTicks:= random(20) + 15;
   251                 end;
   251                 end;
   252   vgtSplash: begin
   252   vgtSplash: begin
   253                 dx:= 0;
   253                 dx:= 0;
   256                 Frame:= 19;
   256                 Frame:= 19;
   257                 end;
   257                 end;
   258     vgtDroplet: begin
   258     vgtDroplet: begin
   259                 dx:= 0.001 * (random(75) + 15);
   259                 dx:= 0.001 * (random(75) + 15);
   260                 dy:= -0.001 * (random(80) + 120);
   260                 dy:= -0.001 * (random(80) + 120);
   261                 if random(2) = 0 then dx*=-1;
   261                 if random(2) = 0 then dx := -dx;
   262                 FrameTicks:= 250 + random(1751);
   262                 FrameTicks:= 250 + random(1751);
   263                 Frame:= random(3)
   263                 Frame:= random(3)
   264                 end;
   264                 end;
   265    vgtBeeTrace: begin
   265    vgtBeeTrace: begin
   266                 FrameTicks:= 1000;
   266                 FrameTicks:= 1000;
   279      vgtFeather: begin
   279      vgtFeather: begin
   280                 t:= random(1024);
   280                 t:= random(1024);
   281                 sp:= 0.001 * (random(85) + 95);
   281                 sp:= 0.001 * (random(85) + 95);
   282                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   282                 dx:= AngleSin(t).QWordValue/4294967296 * sp;
   283                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   283                 dy:= AngleCos(t).QWordValue/4294967296 * sp;
   284                 if random(2) = 0 then dx*=-1;
   284                 if random(2) = 0 then dx := -dx;
   285                 if random(2) = 0 then dy*=-1;
   285                 if random(2) = 0 then dy := -dy;
   286                 FrameTicks:= 650 + random(250);
   286                 FrameTicks:= 650 + random(250);
   287                 Frame:= 1
   287                 Frame:= 1
   288                 end;
   288                 end;
   289   vgtHealthTag: begin
   289   vgtHealthTag: begin
   290                 gear^.Timer:= 1500;
   290                 gear^.Timer:= 1500;
   355           // Damage calc from doMakeExplosion
   355           // Damage calc from doMakeExplosion
   356           dmg:= min(101,Radius  + cHHRadius div 2 - (round(abs(Gear^.X - float(X))+abs(Gear^.Y - float(Y))) div 5));
   356           dmg:= min(101,Radius  + cHHRadius div 2 - (round(abs(Gear^.X - float(X))+abs(Gear^.Y - float(Y))) div 5));
   357           if dmg > 1 then
   357           if dmg > 1 then
   358               begin
   358               begin
   359               Gear^.tdX:= 0.02 * dmg + 0.01;
   359               Gear^.tdX:= 0.02 * dmg + 0.01;
   360               if Gear^.X - X < 0 then Gear^.tdX *= -1;
   360               if Gear^.X - X < 0 then Gear^.tdX := -Gear^.tdX;
   361               Gear^.tdY:= 0.02 * dmg + 0.01;
   361               Gear^.tdY:= 0.02 * dmg + 0.01;
   362               if Gear^.Y - Y < 0 then Gear^.tdY *= -1;
   362               if Gear^.Y - Y < 0 then Gear^.tdY := -Gear^.tdY;
   363               Gear^.Timer:= 200
   363               Gear^.Timer:= 200
   364               end
   364               end
   365           end;
   365           end;
   366       t:= Gear^.NextGear
   366       t:= Gear^.NextGear
   367       end
   367       end