public static World FindWorldOrPrintMatches(Player player, string worldName) { if (player == null) { throw new ArgumentNullException("player"); } if (worldName == null) { throw new ArgumentNullException("worldName"); } List <World> matches = new List <World>(FindWorlds(worldName)); SearchingForWorldEventArgs e = new SearchingForWorldEventArgs(player, worldName, matches, false); RaiseSearchingForWorldEvent(e); matches = e.Matches; if (matches.Count == 0) { player.NoWorldMessage(worldName); return(null); } else if (matches.Count > 1) { player.ManyMatchesMessage("world", matches.ToArray()); return(null); } else { return(matches[0]); } }
internal static void RaiseSearchingForWorldEvent(SearchingForWorldEventArgs e) { var h = SearchingForWorld; if (h != null) { h(null, e); } }
public static void OnSearchingForWorld(Object sender, SearchingForWorldEventArgs e) { //if (!e.ToJoin) return; if (e.Matches.Count <= 1) { return; } World found = FindWorldNum(e.SearchTerm); if (found != null) { e.Matches.Clear(); e.Matches.Add(found); } }
/// <summary> Finds all worlds that match the given name. /// Autocompletes. Raises SearchingForWorld event. /// Target worlds are not guaranteed to have a loaded map.</summary> /// <param name="player"> Player who is calling the query. May be null. </param> /// <param name="name"> Full or partial world name. </param> /// <returns> An array of 0 or more worlds that matched the name. </returns> public static World[] FindWorlds([CanBeNull] Player player, [NotNull] string name) { if (name == null) { throw new ArgumentNullException("name"); } World[] matches = FindWorldsNoEvent(name); var h = SearchingForWorld; if (h != null) { SearchingForWorldEventArgs e = new SearchingForWorldEventArgs(player, name, matches.ToList()); h(null, e); matches = e.Matches.ToArray(); } return(matches); }