コード例 #1
0
ファイル: VerbUtil.cs プロジェクト: bfelch/Ludum-Dare-41
    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);
    }
コード例 #2
0
ファイル: ParserUtil.cs プロジェクト: bfelch/Ludum-Dare-41
    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());
            }
        }
    }