hedgewars/uUtils.pas
branchqmlfrontend
changeset 12855 1b2b84315d27
parent 11828 a69124eb7ce7
parent 12805 6023a4f06013
equal deleted inserted replaced
11843:01f88c3b7b66 12855:1b2b84315d27
    40 function  EnumToStr(const en : TStatInfoType) : shortstring; overload;
    40 function  EnumToStr(const en : TStatInfoType) : shortstring; overload;
    41 function  EnumToStr(const en : THogEffect) : shortstring; overload;
    41 function  EnumToStr(const en : THogEffect) : shortstring; overload;
    42 function  EnumToStr(const en : TCapGroup) : shortstring; overload;
    42 function  EnumToStr(const en : TCapGroup) : shortstring; overload;
    43 function  EnumToStr(const en : TSprite) : shortstring; overload;
    43 function  EnumToStr(const en : TSprite) : shortstring; overload;
    44 function  EnumToStr(const en : TMapGen) : shortstring; overload;
    44 function  EnumToStr(const en : TMapGen) : shortstring; overload;
       
    45 function  EnumToStr(const en : TWorldEdge) : shortstring; overload;
    45 
    46 
    46 function  Min(a, b: LongInt): LongInt; inline;
    47 function  Min(a, b: LongInt): LongInt; inline;
    47 function  MinD(a, b: double) : double; inline;
    48 function  MinD(a, b: double) : double; inline;
    48 function  Max(a, b: LongInt): LongInt; inline;
    49 function  Max(a, b: LongInt): LongInt; inline;
    49 
    50 
    73 
    74 
    74 function  CheckNoTeamOrHH: boolean; inline;
    75 function  CheckNoTeamOrHH: boolean; inline;
    75 
    76 
    76 function  GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt;
    77 function  GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt;
    77 function  GetLaunchY(at: TAmmoType; angle: LongInt): LongInt;
    78 function  GetLaunchY(at: TAmmoType; angle: LongInt): LongInt;
       
    79 
       
    80 function CalcWorldWrap(X, radius: LongInt): LongInt;
    78 
    81 
    79 function read1stLn(filePath: shortstring): shortstring;
    82 function read1stLn(filePath: shortstring): shortstring;
    80 function readValueFromINI(key, filePath: shortstring): shortstring;
    83 function readValueFromINI(key, filePath: shortstring): shortstring;
    81 
    84 
    82 {$IFNDEF PAS2C}
    85 {$IFNDEF PAS2C}
   292 end;
   295 end;
   293 
   296 
   294 function EnumToStr(const en: TMapGen) : shortstring; overload;
   297 function EnumToStr(const en: TMapGen) : shortstring; overload;
   295 begin
   298 begin
   296 EnumToStr := GetEnumName(TypeInfo(TMapGen), ord(en))
   299 EnumToStr := GetEnumName(TypeInfo(TMapGen), ord(en))
       
   300 end;
       
   301 
       
   302 function EnumToStr(const en: TWorldEdge) : shortstring; overload;
       
   303 begin
       
   304 EnumToStr := GetEnumName(TypeInfo(TWorldEdge), ord(en))
   297 end;
   305 end;
   298 
   306 
   299 
   307 
   300 function Min(a, b: LongInt): LongInt;
   308 function Min(a, b: LongInt): LongInt;
   301 begin
   309 begin
   528 end;
   536 end;
   529 
   537 
   530 
   538 
   531 function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt;
   539 function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt;
   532 begin
   540 begin
       
   541 at:= at; dir:= dir; angle:= angle; // parameter hint suppression because code below is currently disabled
   533 GetLaunchX:= 0
   542 GetLaunchX:= 0
   534 (*
   543 (*
   535     if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then
   544     if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then
   536         GetLaunchX:= sign(dir) * (8 + hwRound(AngleSin(angle) * Ammoz[at].ejectX) + hwRound(AngleCos(angle) * Ammoz[at].ejectY))
   545         GetLaunchX:= sign(dir) * (8 + hwRound(AngleSin(angle) * Ammoz[at].ejectX) + hwRound(AngleCos(angle) * Ammoz[at].ejectY))
   537     else
   546     else
   538         GetLaunchX:= 0 *)
   547         GetLaunchX:= 0 *)
   539 end;
   548 end;
   540 
   549 
   541 function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt;
   550 function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt;
   542 begin
   551 begin
       
   552 at:= at; angle:= angle; // parameter hint suppression because code below is currently disabled
   543 GetLaunchY:= 0
   553 GetLaunchY:= 0
   544 (*
   554 (*
   545     if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then
   555     if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then
   546         GetLaunchY:= hwRound(AngleSin(angle) * Ammoz[at].ejectY) - hwRound(AngleCos(angle) * Ammoz[at].ejectX) - 2
   556         GetLaunchY:= hwRound(AngleSin(angle) * Ammoz[at].ejectY) - hwRound(AngleCos(angle) * Ammoz[at].ejectX) - 2
   547     else
   557     else
   548         GetLaunchY:= 0*)
   558         GetLaunchY:= 0*)
       
   559 end;
       
   560 
       
   561 // Takes an X coordinate and corrects if according to the world edge rules
       
   562 // Wrap-around: X will be wrapped
       
   563 // Bouncy: X will be kept inside the legal land (taking radius into account)
       
   564 // Other world edges: Just returns X
       
   565 // radius is a radius (gear radius) tolerance for an appropriate distance from bouncy world edges.
       
   566 // Set radius to 0 if you don't care.
       
   567 function CalcWorldWrap(X, radius: LongInt): LongInt;
       
   568 begin
       
   569     if WorldEdge = weWrap then
       
   570         begin
       
   571         if X < leftX then
       
   572              X:= X + (rightX - leftX)
       
   573         else if X > rightX then
       
   574              X:= X - (rightX - leftX);
       
   575         end
       
   576     else if WorldEdge = weBounce then
       
   577         begin
       
   578         if (X + radius) < leftX then
       
   579             X:= leftX + radius
       
   580         else if (X - radius) > rightX then
       
   581             X:= rightX - radius;
       
   582         end;
       
   583     CalcWorldWrap:= X;
   549 end;
   584 end;
   550 
   585 
   551 function CheckNoTeamOrHH: boolean;
   586 function CheckNoTeamOrHH: boolean;
   552 begin
   587 begin
   553 CheckNoTeamOrHH:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil);
   588 CheckNoTeamOrHH:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil);