Ejemplo n.º 1
0
        private static Statement StickParse(ParserArgument args)
        {
            Match m;

            m = Regex.Match(args.Text, @"^([lr]s)\s+(reset)$", RegexOptions.IgnoreCase);
            if (m.Success)
            {
                var keyname = m.Groups[1].Value;
                var key     = ScripterUtil.GetKey(keyname);
                if (key == null)
                {
                    return(null);
                }
                return(new StickUp(key, keyname));
            }
            m = Regex.Match(args.Text, @"^([lr]s{1,2})\s+([a-z0-9]+)$", RegexOptions.IgnoreCase);
            if (m.Success)
            {
                var keyname   = m.Groups[1].Value;
                var direction = m.Groups[2].Value;
                var key       = ScripterUtil.GetKey(keyname, direction);
                if (key == null)
                {
                    return(null);
                }
                return(new StickDown(key, keyname, direction));
            }
            m = Regex.Match(args.Text, $@"^([lr]s{{1,2}})\s+([a-z0-9]+)\s*,\s*({Formats.ValueEx})$", RegexOptions.IgnoreCase);
            if (m.Success)
            {
                var keyname   = m.Groups[1].Value;
                var direction = m.Groups[2].Value;
                var duration  = m.Groups[3].Value;
                var key       = ScripterUtil.GetKey(keyname, direction);
                if (key == null)
                {
                    return(null);
                }
                return(new StickPress(key, keyname, direction, args.Formatter.GetValueEx(duration)));
            }
            // mov
            return(MovParse(args));
        }