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); |