hedgewars/uGearsRender.pas
branchwebgl
changeset 8026 4a4f21070479
parent 7978 2ce76d1f594b
child 8330 aaefa587e277
equal deleted inserted replaced
8023:7de85783b823 8026:4a4f21070479
    21 unit uGearsRender;
    21 unit uGearsRender;
    22 
    22 
    23 interface
    23 interface
    24 uses uTypes, uConsts, GLunit, uFloat, SDLh;
    24 uses uTypes, uConsts, GLunit, uFloat, SDLh;
    25 
    25 
       
    26 type
       
    27    Tar	       = record
       
    28 		    X, Y: hwFloat;
       
    29 		    dLen: hwFloat;
       
    30 		    b : boolean;
       
    31 		 end; 
       
    32    TRopePoints = record
       
    33 		    Count     : Longword;
       
    34 		    HookAngle : GLfloat;
       
    35 		    ar	      : array[0..MAXROPEPOINTS] of Tar;
       
    36 		    rounded   : array[0..MAXROPEPOINTS + 2] of TVertex2f;
       
    37 		 end;	      
    26 procedure RenderGear(Gear: PGear; x, y: LongInt);
    38 procedure RenderGear(Gear: PGear; x, y: LongInt);
    27 
    39 
    28 var RopePoints: record
    40 var RopePoints: TRopePoints;
    29                 Count: Longword;
       
    30                 HookAngle: GLfloat;
       
    31                 ar: array[0..MAXROPEPOINTS] of record
       
    32                                 X, Y: hwFloat;
       
    33                                 dLen: hwFloat;
       
    34                                 b: boolean;
       
    35                                 end;
       
    36                 rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f;
       
    37                 end;
       
    38 
    41 
    39 implementation
    42 implementation
    40 uses uRender, uUtils, uVariables, uAmmos, Math, uVisualGears;
    43 uses uRender, uUtils, uVariables, uAmmos, Math, uVisualGears;
    41 
    44 
    42 procedure DrawRopeLinesRQ(Gear: PGear);
    45 procedure DrawRopeLinesRQ(Gear: PGear);
    80     b: boolean;
    83     b: boolean;
    81 begin
    84 begin
    82     if (X1 = X2) and (Y1 = Y2) then
    85     if (X1 = X2) and (Y1 = Y2) then
    83         begin
    86         begin
    84         //OutError('WARNING: zero length rope line!', false);
    87         //OutError('WARNING: zero length rope line!', false);
       
    88 	DrawRopeLine := 0;
    85         exit
    89         exit
    86         end;
    90         end;
    87     eX:= 0;
    91     eX:= 0;
    88     eY:= 0;
    92     eY:= 0;
    89     dX:= X2 - X1;
    93     dX:= X2 - X1;
  1163                         end
  1167                         end
  1164                     else //if not isInLag then
  1168                     else //if not isInLag then
  1165                         begin
  1169                         begin
  1166                         if isInLag and (Gear^.FlightTime < 256) then
  1170                         if isInLag and (Gear^.FlightTime < 256) then
  1167                             inc(Gear^.FlightTime, 8)
  1171                             inc(Gear^.FlightTime, 8)
  1168                         else if not isInLag and (Gear^.FlightTime > 0) then
  1172                         else if (not isInLag) and (Gear^.FlightTime > 0) then
  1169                             dec(Gear^.FlightTime, 8);
  1173                             dec(Gear^.FlightTime, 8);
  1170                         if Gear^.FlightTime > 0 then
  1174                         if Gear^.FlightTime > 0 then
  1171                             Tint($FF, $FF, $FF, $FF-min(255,Gear^.FlightTime));
  1175                             Tint($FF, $FF, $FF, $FF-min(255,Gear^.FlightTime));
  1172                         if vobVelocity = 0 then
  1176                         if vobVelocity = 0 then
  1173                             DrawSprite(sprFlake, x, y, Gear^.Timer)
  1177                             DrawSprite(sprFlake, x, y, Gear^.Timer)