hedgewars/uGearsRender.pas
branchwebgl
changeset 8444 75db7bb8dce8
parent 8330 aaefa587e277
parent 8414 c1ac0b64315e
child 8833 c13ebed437cb
equal deleted inserted replaced
8340:46a9fde631f4 8444:75db7bb8dce8
    42 implementation
    42 implementation
    43 uses uRender, uUtils, uVariables, uAmmos, Math, uVisualGears;
    43 uses uRender, uUtils, uVariables, uAmmos, Math, uVisualGears;
    44 
    44 
    45 const
    45 const
    46     // hog tag mask
    46     // hog tag mask
    47     htNone        = $00;
    47     //htNone        = $00;
    48     htTeamName    = $01;
    48     htTeamName    = $01;
    49     htName        = $02;
    49     htName        = $02;
    50     htHealth      = $04;
    50     htHealth      = $04;
    51     htTransparent = $08;
    51     htTransparent = $08;
    52 
    52 
  1108                             endY:= y - WorldDy;
  1108                             endY:= y - WorldDy;
  1109                             if Gear^.Tag < 0 then
  1109                             if Gear^.Tag < 0 then
  1110                                 startX:= max(max(LAND_WIDTH,4096) + 1024, endX + 2048)
  1110                                 startX:= max(max(LAND_WIDTH,4096) + 1024, endX + 2048)
  1111                             else
  1111                             else
  1112                                 startX:= max(-max(LAND_WIDTH,4096) - 1024, endX - 2048);
  1112                                 startX:= max(-max(LAND_WIDTH,4096) - 1024, endX - 2048);
  1113                             startY:= endY - 256;
  1113                             startY:= endY - 1024;
  1114                             DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + LongInt(round((endX - startX) * (-power(2, -10 * LongInt(Gear^.Timer)/2000) + 1))), startY + WorldDy + LongInt(round((endY - startY) * sqrt(1 - power((LongInt(Gear^.Timer)/2000)-1, 2)))), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75);
  1114                             DrawTextureF(SpritesData[sprBirdy].Texture, min(Gear^.Timer/750,1), startX + WorldDx + LongInt(round((endX - startX) * (-power(2, -10 * LongInt(Gear^.Timer)/2000) + 1))), startY + WorldDy + LongInt(round((endY - startY) * sqrt(1 - power((LongInt(Gear^.Timer)/2000)-1, 2)))), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75);
  1115                             end
  1115                             end
  1116                         else // Disappearing
  1116                         else // Disappearing
  1117                             begin
  1117                             begin
  1118                             startX:= x - WorldDx;
  1118                             startX:= x - WorldDx;
  1119                             startY:= y - WorldDy;
  1119                             startY:= y - WorldDy;
  1120                             if Gear^.Tag > 0 then
  1120                             if Gear^.Tag > 0 then
  1121                                 endX:= max(max(LAND_WIDTH,4096) + 1024, startX + 2048)
  1121                                 endX:= max(max(LAND_WIDTH,4096) + 1024, startX + 2048)
  1122                             else
  1122                             else
  1123                                 endX:= max(-max(LAND_WIDTH,4096) - 1024, startX - 2048);
  1123                                 endX:= max(-max(LAND_WIDTH,4096) - 1024, startX - 2048);
  1124                             endY:= startY + 256;
  1124                             endY:= startY + 1024;
  1125                             DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + LongInt(round((endX - startX) * power(2, 10 * (LongInt(Gear^.Timer)/2000 - 1)))) + hwRound(Gear^.dX * Gear^.Timer), startY + WorldDy + LongInt(round((endY - startY) * cos(LongInt(Gear^.Timer)/2000 * (Pi/2)) - (endY - startY))) + hwRound(Gear^.dY * Gear^.Timer), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75);
  1125                             DrawTextureF(SpritesData[sprBirdy].Texture, min((2000-Gear^.Timer)/750,1), startX + WorldDx + LongInt(round((endX - startX) * power(2, 10 * (LongInt(Gear^.Timer)/2000 - 1)))) + hwRound(Gear^.dX * Gear^.Timer), startY + WorldDy + LongInt(round((endY - startY) * cos(LongInt(Gear^.Timer)/2000 * (Pi/2)) - (endY - startY))) + hwRound(Gear^.dY * Gear^.Timer), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75);
  1126                             end;
  1126                             end;
  1127                         end
  1127                         end
  1128                     else
  1128                     else
  1129                         begin
  1129                         begin
  1130                         if Gear^.Health < 250 then
  1130                         if Gear^.Health < 250 then