public GameobjectParameter(IDatabaseProvider database, IServerIntegration serverIntegration, IItemFromListProvider itemFromListProvider) { this.database = database; SpecialCommand = async() => { var entry = await serverIntegration.GetNearestGameObjects(); if (entry == null || entry.Count == 0) { return(null); } var options = entry.GroupBy(e => e.Entry) .OrderBy(group => group.Key) .ToDictionary(g => (long)g.Key, g => new SelectOption(database.GetGameObjectTemplate(g.Key)?.Name ?? "Unknown name", $"{g.First().Distance} yd away")); if (options.Count == 1) { return((uint)options.Keys.First()); } var pick = await itemFromListProvider.GetItemFromList(options, false); if (pick.HasValue) { return((uint)pick.Value); } return(null); }; }