コード例 #1
0
ファイル: CvarVector4f.cs プロジェクト: gixslayer/darktech
        protected override bool TryParse(ArgList args, out Vector4f result)
        {
            result = Vector4f.ZERO;

            if (args.Count < 4)
            {
                return(false);
            }

            Arg[] tokens = new Arg[4];

            for (int i = 0; i < tokens.Length; i++)
            {
                tokens[i] = args.Next;

                if (tokens[i].Type != ArgType.Numeric)
                {
                    return(false);
                }
            }

            result.x = tokens[0].FloatValue;
            result.y = tokens[1].FloatValue;
            result.z = tokens[2].FloatValue;
            result.w = tokens[3].FloatValue;

            return(true);
        }
コード例 #2
0
        public void ExecuteCommand(ExecuteMode mode, string name, ArgList args)
        {
            if (IsAliasRegistered(name))
            {
                name = aliases[name];
            }

            if (!IsCommandRegistered(name))
            {
                Engine.Log.WriteLine("error/system", "Could not find command {0}", name);

                return;
            }

            switch (mode)
            {
            case ExecuteMode.Append:
                commandBuffer.Append(commands[name], args);
                break;

            case ExecuteMode.Immediate:
                commands[name].Execute(args);
                break;

            case ExecuteMode.Insert:
                commandBuffer.Insert(commands[name], args);
                break;
            }
        }
コード例 #3
0
        public override void Parse(ArgList args)
        {
            if (HasFlag(CvarFlag.WriteProtected))
            {
                Engine.Log.WriteLine("error/system", "Cvar {0} is write protected", Name);

                return;
            }

            T result;

            if (!TryParse(args, out result))
            {
                Engine.Log.WriteLine("error/system", "Could not parse value {0} for cvar {1}", value, Name);

                return;
            }

            if (!IsValidValue(result))
            {
                Engine.Log.WriteLine("error/system", "Value {0} is not valid for cvar {1}", value, Name);

                return;
            }

            Set(result);
        }
コード例 #4
0
        public void ExecuteCommand(ExecuteMode mode, string name, string argString)
        {
            ArgList args = new ArgList();

            args.Parse(argString);

            ExecuteCommand(mode, name, args);
        }
コード例 #5
0
        protected override bool TryParse(ArgList args, out T result)
        {
            result = default(T);

            if (args.Count == 0)
            {
                return(false);
            }

            Arg token = args.Next;

            if (!Enum.TryParse <T>(token, out result))
            {
                return(false);
            }

            return(Enum.IsDefined(typeof(T), result));
        }
コード例 #6
0
        public void Execute(string statement)
        {
            ArgList args = new ArgList();

            args.Parse(statement);

            if (args.Count == 0)
            {
                Engine.Log.WriteLine("warning/system", "Attempted to execute empty statement");

                return;
            }

            Arg arg = args.Next;

            // Resolve alias if registered.
            if (aliases.ContainsKey(arg))
            {
                arg = aliases[arg];
            }

            if (IsCommandRegistered(arg))
            {
                ExecuteCommand(ExecuteMode.Append, arg, args);
            }
            else if (IsCvarRegistered(arg))
            {
                if (args.Count == 0)
                {
                    // Print cvar value.
                    Engine.Log.WriteLine("info/system", "{0} = {1}", arg, GetCvarValue(arg));
                }
                else
                {
                    // Assign cvar value.
                    GetCvar(arg).Parse(args);
                }
            }
            else
            {
                Engine.Log.WriteLine("error/system", "Unknown command/cvar {0}", arg);
            }
        }
コード例 #7
0
 protected abstract bool TryParse(ArgList args, out T result);