public string Execute(IGameContext gameContext, string name, string[] parameters) { var helpText = "Expected subcommand, one of: 'type', 'list'."; if (parameters.Length == 0) { return(helpText); } switch (parameters[0]) { case "type": if (parameters.Length == 1) { return("Expected numeric ID to lookup."); } try { var lookup = _networkEngine.FindObjectByNetworkId(int.Parse(parameters[1])); return(lookup.GetType().FullName); } catch (Exception ex) { return("Error: " + ex.Message); } case "list": var result = string.Empty; try { var entries = _networkEngine.ListObjectsByNetworkId(); foreach (var kv in entries) { result += kv.Key + " "; try { result += kv.Value.GetType().FullName; } catch (Exception) { result += "(exception while getting object)"; } result += "\n"; } return(result); } catch (Exception ex) { return("Error: " + ex.Message); } } return(helpText); }