765 s:= cPathz[ptTeams] + '/' + s + '.hwt'; |
765 s:= cPathz[ptTeams] + '/' + s + '.hwt'; |
766 |
766 |
767 loadBinds('bind', s); |
767 loadBinds('bind', s); |
768 end; |
768 end; |
769 |
769 |
|
770 // Make sure the team name of chTeam is unique. |
|
771 // If it isn't, the name is changed to be unique. |
|
772 procedure makeTeamNameUnique(chTeam: PTeam); |
|
773 var tail: shortstring; |
|
774 t, numLen, numTail: LongInt; |
|
775 valOK: Word; |
|
776 nameDupeCheck: boolean; |
|
777 chChar: char; |
|
778 begin |
|
779 nameDupeCheck:= false; |
|
780 while(nameDupeCheck = false) do |
|
781 begin |
|
782 nameDupeCheck:= true; |
|
783 for t:=0 to TeamsCount - 1 do |
|
784 begin |
|
785 // Name collision? |
|
786 if (chTeam <> teamsArray[t]) and (TeamsArray[t]^.TeamName = chTeam^.TeamName) then |
|
787 begin |
|
788 // Change the name by appending a sequence number, starting from 2 |
|
789 numLen:= 0; |
|
790 chChar:= chTeam^.TeamName[Length(chTeam^.TeamName) - numLen]; |
|
791 // Parse number at end of team name (if any) |
|
792 while (chChar >= '0') and (chChar <= '9') and (numLen < Length(chTeam^.TeamName)) do |
|
793 begin |
|
794 inc(numLen); |
|
795 chChar:= chTeam^.TeamName[Length(chTeam^.TeamName) - numLen]; |
|
796 end; |
|
797 |
|
798 if numLen > 0 then |
|
799 // Number found: Increment it by 1 |
|
800 begin |
|
801 tail:= Copy(chTeam^.TeamName, Length(chTeam^.TeamName) - numLen + 1, numLen); |
|
802 valOK:= 1; |
|
803 Val(tail, numTail, valOK); |
|
804 Inc(numTail); |
|
805 if valOK = 0 then |
|
806 tail:= IntToStr(numTail) |
|
807 else |
|
808 // This should not happen |
|
809 tail:= 'X'; |
|
810 chTeam^.TeamName:= Copy(chTeam^.TeamName, 0, Length(chTeam^.TeamName) - numLen) + tail; |
|
811 end |
|
812 else |
|
813 // No number at team end: Just append a '2' |
|
814 chTeam^.TeamName:= chTeam^.TeamName + ' 2'; |
|
815 nameDupeCheck:= false; |
|
816 break; |
|
817 end; |
|
818 end; |
|
819 end; |
|
820 end; |
|
821 |
770 procedure chAddTeam(var s: shortstring); |
822 procedure chAddTeam(var s: shortstring); |
771 var Color: Longword; |
823 var Color: Longword; |
772 ts, cs: shortstring; |
824 ts, cs: shortstring; |
773 begin |
825 begin |
774 cs:= ''; |
826 cs:= ''; |
784 AddTeam(Color); |
836 AddTeam(Color); |
785 |
837 |
786 if CurrentTeam <> nil then |
838 if CurrentTeam <> nil then |
787 begin |
839 begin |
788 CurrentTeam^.TeamName:= ts; |
840 CurrentTeam^.TeamName:= ts; |
|
841 makeTeamNameUnique(CurrentTeam); |
|
842 |
789 CurrentTeam^.PlayerHash:= s; |
843 CurrentTeam^.PlayerHash:= s; |
790 loadTeamBinds(ts); |
844 loadTeamBinds(ts); |
791 |
845 |
792 if GameType in [gmtDemo, gmtSave, gmtRecord] then |
846 if GameType in [gmtDemo, gmtSave, gmtRecord] then |
793 CurrentTeam^.ExtDriven:= true; |
847 CurrentTeam^.ExtDriven:= true; |