private bool BuildParameterList(Verb verb, string[] parameters, out List <object> values) { ParserUtil parserUtil = SingletonFactory.GetInstance <ParserUtil>(); values = new List <object>(); if (IsValidCommandSyntax(verb, parserUtil.GetValueTypes(parameters))) { switch (verb) { case Verb.MOVE: case Verb.USE: if (parameters.Length >= 2) { values.Add(parserUtil.GetEnumValue <Direction>(parameters[0])); values.Add(int.Parse(parameters[1])); } else if (parameters.Length == 1) { System.Type parameterType = parserUtil.GetValueType(parameters[0]); if (parameterType == typeof(Direction)) { values.Add(parserUtil.GetEnumValue <Direction>(parameters[0])); values.Add(NumberUtil.GetDefault()); } else if (parameterType == typeof(Number)) { values.Add(DirectionUtil.GetDefault()); values.Add(int.Parse(parameters[0])); } } else { values.Add(DirectionUtil.GetDefault()); values.Add(NumberUtil.GetDefault()); } break; case Verb.CRAFT: if (parameters.Length >= 2) { values.Add(parserUtil.GetEnumValue <Item>(parameters[0])); values.Add(int.Parse(parameters[1])); } else if (parameters.Length == 1) { System.Type parameterType = parserUtil.GetValueType(parameters[0]); if (parameterType == typeof(Item)) { values.Add(parserUtil.GetEnumValue <Item>(parameters[0])); values.Add(NumberUtil.GetDefault()); } } break; case Verb.EQUIP: if (parameters.Length >= 1) { values.Add(parserUtil.GetEnumValue <Item>(parameters[0])); } break; } } else { return(false); } return(true); }
private void ParseHelpVerb(string request) { if (parameterTypes.FindIndex(x => x.Equals(request, System.StringComparison.OrdinalIgnoreCase)) != -1) { switch (request.ToLower()) { case "verb": PrintResponse(HelpType(typeof(Verb))); break; case "item": PrintResponse(HelpType(typeof(Item))); break; case "resource": PrintResponse(HelpType(typeof(Resource))); break; case "direction": PrintResponse(HelpType(typeof(Direction))); break; case "number": PrintResponse("Any positive integer value\n\nDefault: " + NumberUtil.GetDefault()); break; default: PrintResponse("Help for '" + request + "' not defined"); break; } } else { System.Type type = GetValueType(request); if (type == typeof(Verb)) { Verb verbRequest = GetEnumValue <Verb>(request); PrintResponse(SingletonFactory.GetInstance <VerbUtil>().Help(verbRequest)); } else if (type == typeof(Item)) { Item itemRequest = GetEnumValue <Item>(request); PrintResponse(SingletonFactory.GetInstance <ItemUtil>().Help(itemRequest)); } else if (type == typeof(Resource)) { Resource resourceRequest = GetEnumValue <Resource>(request); PrintResponse(SingletonFactory.GetInstance <ResourceUtil>().Help(resourceRequest)); } else if (type == typeof(Direction)) { Direction directionRequest = GetEnumValue <Direction>(request); PrintResponse(SingletonFactory.GetInstance <DirectionUtil>().Help(directionRequest)); } else if (type == typeof(Number)) { uint numberRequest = SingletonFactory.GetInstance <NumberUtil>().GetNumber(request); PrintResponse(SingletonFactory.GetInstance <NumberUtil>().Help(numberRequest)); } else { PrintResponse(request + " is " + GetValueType(request).ToString()); } } }