hedgewars/VGSHandlers.inc
changeset 7375 16ae2e1c9005
parent 7206 ce46b56ae9f5
child 7644 ed7fecd0f5fd
equal deleted inserted replaced
7372:fcc002658832 7375:16ae2e1c9005
    25  * is usually not necessary and therefore undesirable.
    25  * is usually not necessary and therefore undesirable.
    26  *)
    26  *)
    27 
    27 
    28 procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
    28 procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
    29 var sign: real;
    29 var sign: real;
       
    30     moved: boolean;
    30 begin
    31 begin
    31 if vobCount = 0 then exit;
    32 if vobCount = 0 then exit;
    32 
    33 
    33 sign:= 1;
    34 sign:= 1;
    34 with Gear^ do
    35 with Gear^ do
    82             tdY:= 0;
    83             tdY:= 0;
    83         dec(Timer, Steps)
    84         dec(Timer, Steps)
    84         end
    85         end
    85     else
    86     else
    86         begin
    87         begin
       
    88         moved:= false;
    87         if round(X) < cLeftScreenBorder then
    89         if round(X) < cLeftScreenBorder then
    88             X:= X + cScreenSpace
    90             begin
       
    91             X:= X + cScreenSpace;
       
    92             moved:= true
       
    93             end
    89         else
    94         else
    90             if round(X) > cRightScreenBorder then
    95             if round(X) > cRightScreenBorder then
       
    96                 begin
    91                 X:= X - cScreenSpace;
    97                 X:= X - cScreenSpace;
       
    98                 moved:= true
       
    99                 end;
    92             // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + 25.0; // For if flag is set for flakes rising upwards?
   100             // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + 25.0; // For if flag is set for flakes rising upwards?
    93         if (Gear^.Layer = 2) and (round(Y) - 225 > LAND_HEIGHT) then
   101         if (Gear^.Layer = 2) and (round(Y) - 225 > LAND_HEIGHT) then
    94             begin
   102             begin
    95             X:= cLeftScreenBorder + random(cScreenSpace);
   103             X:= cLeftScreenBorder + random(cScreenSpace);
    96             Y:= Y - (1024 + 250 + random(50)) // TODO - configure in theme (jellies for example could use limited range)
   104             Y:= Y - (1024 + 250 + random(50)); // TODO - configure in theme (jellies for example could use limited range)
       
   105             moved:= true
    97             end
   106             end
    98         else if (Gear^.Layer <> 2) and (round(Y) + 50 > LAND_HEIGHT) then
   107         else if (Gear^.Layer <> 2) and (round(Y) + 50 > LAND_HEIGHT) then
    99             begin
   108             begin
   100             X:= cLeftScreenBorder + random(cScreenSpace);
   109             X:= cLeftScreenBorder + random(cScreenSpace);
   101             Y:= Y - (1024 + random(25))
   110             Y:= Y - (1024 + random(25));
       
   111             moved:= true
       
   112             end;
       
   113         if moved then
       
   114             begin
       
   115             Angle:= random(360);
       
   116             dx:= 0.0000038654705 * random(10000);
       
   117             dy:= 0.000003506096 * random(7000);
       
   118             if random(2) = 0 then dx := -dx
   102             end;
   119             end;
   103         Timer:= 0;
   120         Timer:= 0;
   104         tdX:= 0;
   121         tdX:= 0;
   105         tdY:= 0
   122         tdY:= 0
   106         end;
   123         end;