Ejemplo n.º 1
0
        public static PlayerInfo AddFakeEntry([NotNull] string name, RankChangeType rankChangeType)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            CheckIfLoaded();

            PlayerInfo info;

            lock ( AddLocker ) {
                info = Trie.Get(name);
                if (info != null)
                {
                    throw new ArgumentException("A PlayerDB entry already exists for this name.", "name");
                }

                var e = new PlayerInfoCreatingEventArgs(name, IPAddress.None, RankManager.DefaultRank, true);
                PlayerInfo.RaiseCreatingEvent(e);
                if (e.Cancel)
                {
                    throw new OperationCanceledException("Cancelled by a plugin.");
                }

                info = new PlayerInfo(name, e.StartingRank, false, rankChangeType);

                list.Add(info);
                Trie.Add(info.Name, info);
                UpdateCache();
            }
            PlayerInfo.RaiseCreatedEvent(info, false);
            return(info);
        }
 /// <summary> Finds player by exact name. </summary>
 /// <param name="fullName"> Full, case-insensitive name of the player. </param>
 /// <returns> PlayerInfo if player was found, or null if not found. </returns>
 public PlayerInfo FindExact(string fullName)
 {
     if (fullName == null)
     {
         throw new ArgumentNullException("fullName");
     }
     lock (trie.SyncRoot) {
         return(trie.Get(fullName));
     }
 }