hedgewars/uMisc.pas
changeset 370 c75410fe3133
parent 351 29bc9c36ad5f
child 371 731ad6d27bd1
equal deleted inserted replaced
369:2aed85310727 370:c75410fe3133
    90 procedure OutError(Msg: String; isFatalError: boolean);
    90 procedure OutError(Msg: String; isFatalError: boolean);
    91 procedure TryDo(Assert: boolean; Msg: string; isFatal: boolean);
    91 procedure TryDo(Assert: boolean; Msg: string; isFatal: boolean);
    92 procedure SDLTry(Assert: boolean; isFatal: boolean);
    92 procedure SDLTry(Assert: boolean; isFatal: boolean);
    93 function IntToStr(n: LongInt): shortstring;
    93 function IntToStr(n: LongInt): shortstring;
    94 function FloatToStr(n: hwFloat): shortstring;
    94 function FloatToStr(n: hwFloat): shortstring;
    95 function DxDy2Angle32(const _dY, _dX: Extended): integer;
    95 function DxDy2Angle32(const _dY, _dX: hwFloat): integer;
    96 function DxDy2AttackAngle(const _dY, _dX: Extended): integer;
    96 function DxDy2AttackAngle(const _dY, _dX: hwFloat): integer;
    97 procedure AdjustColor(var Color: Longword);
    97 procedure AdjustColor(var Color: Longword);
    98 {$IFDEF DEBUGFILE}
    98 {$IFDEF DEBUGFILE}
    99 procedure AddFileLog(s: shortstring);
    99 procedure AddFileLog(s: shortstring);
   100 function RectToStr(Rect: TSDL_Rect): shortstring;
   100 function RectToStr(Rect: TSDL_Rect): shortstring;
   101 {$ENDIF}
   101 {$ENDIF}
   175         fpatan
   175         fpatan
   176         fwait
   176         fwait
   177 end;
   177 end;
   178 {$ENDIF}
   178 {$ENDIF}
   179 
   179 
   180 function DxDy2Angle32(const _dY, _dX: Extended): integer;
   180 function DxDy2Angle32(const _dY, _dX: hwFloat): integer;
   181 const _16divPI: Extended = 16/pi;
   181 const _16divPI: Extended = 16/pi;
   182 begin
   182 var dY, dX: Extended;
   183 DxDy2Angle32:= trunc(arctan2(_dY, _dX) * _16divPI) and $1f
   183 begin
   184 end;
   184 dY:= _dY.QWordValue / $100000000;
   185 
   185 if _dY.isNegative then dY:= - dY;
   186 function DxDy2AttackAngle(const _dY, _dX: Extended): integer;
   186 dX:= _dX.QWordValue / $100000000;
       
   187 if _dX.isNegative then dX:= - dX;
       
   188 DxDy2Angle32:= trunc(arctan2(dY, dX) * _16divPI) and $1f
       
   189 end;
       
   190 
       
   191 function DxDy2AttackAngle(const _dY, _dX: hwFloat): integer;
   187 const MaxAngleDivPI: Extended = cMaxAngle/pi;
   192 const MaxAngleDivPI: Extended = cMaxAngle/pi;
   188 begin
   193 var dY, dX: Extended;
   189 DxDy2AttackAngle:= trunc(arctan2(_dY, _dX) * MaxAngleDivPI) mod cMaxAngle
   194 begin
       
   195 dY:= _dY.QWordValue / $100000000;
       
   196 if _dY.isNegative then dY:= - dY;
       
   197 dX:= _dX.QWordValue / $100000000;
       
   198 if _dX.isNegative then dX:= - dX;
       
   199 DxDy2AttackAngle:= trunc(arctan2(dY, dX) * MaxAngleDivPI) mod cMaxAngle
   190 end;
   200 end;
   191 
   201 
   192 procedure SetKB(n: Longword);
   202 procedure SetKB(n: Longword);
   193 begin
   203 begin
   194 KBnum:= n
   204 KBnum:= n