diff --git a/managed/src/SwiftlyS2.Core/Modules/Players/PlayerManagerService.cs b/managed/src/SwiftlyS2.Core/Modules/Players/PlayerManagerService.cs index 121f0ae15..8dfb3b160 100644 --- a/managed/src/SwiftlyS2.Core/Modules/Players/PlayerManagerService.cs +++ b/managed/src/SwiftlyS2.Core/Modules/Players/PlayerManagerService.cs @@ -3,6 +3,7 @@ using SwiftlyS2.Shared.Players; using SwiftlyS2.Shared.SchemaDefinitions; using SwiftlyS2.Shared.Services; +using SwiftlyS2.Shared.SteamAPI; namespace SwiftlyS2.Core.Players; @@ -44,20 +45,7 @@ public IEnumerable GetAllPlayers() .Select(GetPlayer); } - private static ulong SteamIDToSteamID64( string steamID ) - { - string[] parts = steamID.Split(':'); - if (parts.Length != 3) return 0; - - int X = int.Parse(parts[1]); - int Y = int.Parse(parts[2]); - - ulong steamID64 = (ulong)Y * 2 + (ulong)X + 76561197960265728UL; - return steamID64; - } - - - public IEnumerable FindTargettedPlayers( IPlayer player, string target, TargetSearchMode searchMode ) + public IEnumerable FindTargettedPlayers( IPlayer player, string target, TargetSearchMode searchMode, StringComparison nameComparison = StringComparison.OrdinalIgnoreCase ) { IEnumerable allPlayers = []; @@ -147,15 +135,11 @@ public IEnumerable FindTargettedPlayers( IPlayer player, string target, allPlayers = allPlayers.Append(targetPlayer); } } - else if (targetPlayer.Controller.PlayerName.Contains(target)) - { - allPlayers = allPlayers.Append(targetPlayer); - } - else if (ulong.TryParse(target, out ulong steamId) && targetPlayer.SteamID == steamId) + else if (targetPlayer.Controller.PlayerName.Contains(target, nameComparison)) { allPlayers = allPlayers.Append(targetPlayer); } - else if (SteamIDToSteamID64(target) == targetPlayer.SteamID) + else if (new CSteamID(target) is var steamId && steamId.IsValid() && steamId.GetSteamID64() == targetPlayer.SteamID) { allPlayers = allPlayers.Append(targetPlayer); } diff --git a/managed/src/SwiftlyS2.Shared/Modules/Players/IPlayerManager.cs b/managed/src/SwiftlyS2.Shared/Modules/Players/IPlayerManager.cs index a6501f992..9b9754482 100644 --- a/managed/src/SwiftlyS2.Shared/Modules/Players/IPlayerManager.cs +++ b/managed/src/SwiftlyS2.Shared/Modules/Players/IPlayerManager.cs @@ -140,6 +140,7 @@ public interface IPlayerManagerService /// The player initiating the search. /// The target player name or identifier. /// The search mode to apply. + /// The string comparison mode for name matching. Defaults to . /// A collection of players matching the search criteria. - public IEnumerable FindTargettedPlayers( IPlayer player, string target, TargetSearchMode searchMode ); + public IEnumerable FindTargettedPlayers( IPlayer player, string target, TargetSearchMode searchMode, StringComparison nameComparison = StringComparison.OrdinalIgnoreCase ); } \ No newline at end of file