private static void GoNamedArea(IWorldManager manager, bool worldport, string[] args) { bool isinstance = args[0] == "instance"; string needle = string.Join(" ", args.Skip(isinstance ? 1 : 0)); // Replace "area" and "instance" var expansion = manager.SandboxHost.Expansion; var locations = worldport ? Worldports.FindLocation(needle, expansion) : AreaTriggers.FindTrigger(needle, expansion); switch (locations.Count()) { case 0: // No matches manager.Send(manager.Account.ActiveCharacter.BuildMessage("No matching locations found")); break; case 1: // Single match manager.Account.ActiveCharacter.Teleport(locations.First(), ref manager); break; default: // Multiple possible matches manager.Send(manager.Account.ActiveCharacter.BuildMessage("Multiple matches:")); foreach (var location in locations) { manager.Send(manager.Account.ActiveCharacter.BuildMessage(" " + location.Description)); } break; } }
private static void GoNamedArea(IWorldManager manager, bool worldport, string[] args) { int skip = args[0] == "area" || args[0] == "instance" ? 1 : 0; string needle = string.Join(" ", args.Skip(skip).ToArray()); //Replace "area" and "instance" var locations = worldport ? Worldports.FindLocation(needle) : AreaTriggers.FindTrigger(needle); switch (locations.Count()) { case 0: //No matches manager.Send(manager.Account.ActiveCharacter.BuildMessage("No matching locations found")); break; case 1: //Single match manager.Account.ActiveCharacter.Teleport(locations.First().Value, ref manager); break; default: //Multiple possible matches manager.Send(manager.Account.ActiveCharacter.BuildMessage("Multiple matches:")); foreach (var l in locations) { manager.Send(manager.Account.ActiveCharacter.BuildMessage(" " + l.Key)); } break; } }