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); }
internal static void RaiseCreatingEvent([NotNull] PlayerInfoCreatingEventArgs e) { var h = Creating; if (h != null) { h(null, e); } }
internal static void RaisePlayerInfoCreatingEvent(PlayerInfoCreatingEventArgs e) { var h = PlayerInfoCreating; if (h != null) { h(null, e); } }
public static PlayerInfo FindOrCreateInfoForPlayer([NotNull] string name, [NotNull] IPAddress lastIP) { if (name == null) { throw new ArgumentNullException("name"); } if (lastIP == null) { throw new ArgumentNullException("lastIP"); } CheckIfLoaded(); PlayerInfo info; // this flag is used to avoid executing PlayerInfoCreated event in the lock bool raiseCreatedEvent = false; lock (AddLocker) { info = Trie.Get(name); if (info == null) { if (RankManager.DefaultRank == null) { RankManager.DefaultRank = RankManager.LowestRank; } var e = new PlayerInfoCreatingEventArgs(name, lastIP, RankManager.DefaultRank, false); PlayerInfo.RaiseCreatingEvent(e); if (e.Cancel) { throw new OperationCanceledException("Cancelled by a plugin."); } info = new PlayerInfo(name, lastIP, e.StartingRank); Trie.Add(name, info); list.Add(info); UpdateCache(); raiseCreatedEvent = true; } } if (raiseCreatedEvent) { PlayerInfo.RaiseCreatedEvent(info, false); } return(info); }