| [144] | 1 | using System;
 | 
|---|
 | 2 | using System.Collections.Generic;
 | 
|---|
 | 3 | using System.Runtime.Serialization;
 | 
|---|
 | 4 | using System.Text.RegularExpressions;
 | 
|---|
 | 5 | 
 | 
|---|
 | 6 | namespace AllocsFixes.PersistentData
 | 
|---|
 | 7 | {
 | 
|---|
 | 8 |         [Serializable]
 | 
|---|
 | 9 |         public class Players
 | 
|---|
 | 10 |         {
 | 
|---|
 | 11 |                 private Dictionary<string, Player> players = new Dictionary<string, Player> ();
 | 
|---|
 | 12 | 
 | 
|---|
| [233] | 13 |                 public Player this [string steamId, bool create] {
 | 
|---|
| [144] | 14 |                         get {
 | 
|---|
 | 15 |                                 if (players.ContainsKey (steamId))
 | 
|---|
 | 16 |                                         return players [steamId];
 | 
|---|
 | 17 |                                 else {
 | 
|---|
| [233] | 18 |                                         if (create && steamId != null && steamId.Length == 17) {
 | 
|---|
| [144] | 19 |                                                 Log.Out ("Created new player entry for ID: " + steamId);
 | 
|---|
 | 20 |                                                 Player p = new Player (steamId);
 | 
|---|
 | 21 |                                                 players.Add (steamId, p);
 | 
|---|
 | 22 |                                                 return p;
 | 
|---|
 | 23 |                                         }
 | 
|---|
 | 24 |                                         return null;
 | 
|---|
 | 25 |                                 }
 | 
|---|
 | 26 |                         }
 | 
|---|
 | 27 |                 }
 | 
|---|
 | 28 | 
 | 
|---|
 | 29 |                 public List<string> SteamIDs {
 | 
|---|
 | 30 |                         get { return new List<string> (players.Keys); }
 | 
|---|
 | 31 |                 }
 | 
|---|
 | 32 | 
 | 
|---|
| [146] | 33 |                 public int Count {
 | 
|---|
 | 34 |                         get { return players.Count; }
 | 
|---|
 | 35 |                 }
 | 
|---|
 | 36 | 
 | 
|---|
| [233] | 37 | //              public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
 | 
|---|
 | 38 | //              {
 | 
|---|
 | 39 | //                      string sid = GetSteamID (_nameOrId, _ignoreColorCodes);
 | 
|---|
 | 40 | //                      if (sid != null)
 | 
|---|
 | 41 | //                              return this [sid];
 | 
|---|
 | 42 | //                      else
 | 
|---|
 | 43 | //                              return null;
 | 
|---|
 | 44 | //              }
 | 
|---|
| [156] | 45 | 
 | 
|---|
| [144] | 46 |                 public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
 | 
|---|
 | 47 |                 {
 | 
|---|
 | 48 |                         if (_nameOrId == null || _nameOrId.Length == 0)
 | 
|---|
 | 49 |                                 return null;
 | 
|---|
 | 50 | 
 | 
|---|
 | 51 |                         long tempLong;
 | 
|---|
 | 52 |                         if (_nameOrId.Length == 17 && long.TryParse (_nameOrId, out tempLong)) {
 | 
|---|
 | 53 |                                 return _nameOrId;
 | 
|---|
 | 54 |                         } else {
 | 
|---|
 | 55 |                                 int entityId = -1;
 | 
|---|
 | 56 |                                 if (int.TryParse (_nameOrId, out entityId)) {
 | 
|---|
 | 57 |                                         foreach (KeyValuePair<string, Player> kvp in players) {
 | 
|---|
 | 58 |                                                 if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
 | 
|---|
 | 59 |                                                         return kvp.Key;
 | 
|---|
 | 60 |                                                 }
 | 
|---|
 | 61 |                                         }
 | 
|---|
| [145] | 62 |                                 }
 | 
|---|
| [144] | 63 | 
 | 
|---|
| [145] | 64 |                                 _nameOrId = _nameOrId.ToLower ();
 | 
|---|
 | 65 |                                 foreach (KeyValuePair<string, Player> kvp in players) {
 | 
|---|
 | 66 |                                         string name = kvp.Value.Name.ToLower ();
 | 
|---|
 | 67 |                                         if (_ignoreColorCodes) {
 | 
|---|
 | 68 |                                                 name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
 | 
|---|
| [144] | 69 |                                         }
 | 
|---|
| [145] | 70 |                                         if (kvp.Value.IsOnline && name.Equals (_nameOrId)) {
 | 
|---|
 | 71 |                                                 return kvp.Key;
 | 
|---|
 | 72 |                                         }
 | 
|---|
| [144] | 73 |                                 }
 | 
|---|
 | 74 |                         }
 | 
|---|
 | 75 |                         return null;
 | 
|---|
 | 76 |                 }
 | 
|---|
 | 77 |         }
 | 
|---|
 | 78 | }
 | 
|---|
 | 79 | 
 | 
|---|