Example #1
0
        public static void Handle(string timestamp, string data, ParserState state)
        {
            data = data.Trim();
            var match = Regexes.OptionsEntityRegex.Match(data);
            if(match.Success)
            {
                var id = match.Groups[1].Value;
                state.Options = new Options {Id = int.Parse(id), OptionList = new List<Option>()};
                if(state.Node.Type == typeof(Game))
                    ((Game)state.Node.Object).Data.Add(state.Options);
                else
                    throw new Exception("Invalid node " + state.Node.Type + " -- " + data);
                return;
            }
            match = Regexes.OptionsOptionRegex.Match(data);
            if(match.Success)
            {
                var index = match.Groups[1].Value;
                var rawType = match.Groups[2].Value;
                var rawEntity = match.Groups[3].Value;
                var entity = Helper.ParseEntity(rawEntity, state);
                var type = Helper.ParseEnum<OPTION_TYPE>(rawType);
                var option = new Option {Entity = entity, Index = int.Parse(index), Type = type, OptionItems = new List<OptionItem>()};
                state.Options.OptionList.Add(option);
                state.CurrentOption = option;
                state.LastOption = option;
                return;
            }
            match = Regexes.OptionsSuboptionRegex.Match(data);
            if(match.Success)
            {
                var subOptionType = match.Groups[1].Value;
                var index = match.Groups[2].Value;
                var rawEntity = match.Groups[3].Value;
                var entity = Helper.ParseEntity(rawEntity, state);

                if(subOptionType == "subOption")
                {
                    var subOption = new SubOption {Entity = entity, Index = int.Parse(index), Targets = new List<Target>()};
                    state.CurrentOption.OptionItems.Add(subOption);
                    state.LastOption = subOption;
                }
                else if(subOptionType == "target")
                {
                    var target = new Target {Entity = entity, Index = int.Parse(index)};
                    var lastOption = state.LastOption as Option;
                    if(lastOption != null)
                    {
                        lastOption.OptionItems.Add(target);
                        return;
                    }
                    var lastSubOption = state.LastOption as SubOption;
                    if(lastSubOption != null)
                        lastSubOption.Targets.Add(target);
                }
                else
                    throw new Exception("Unexpected suboption type: " + subOptionType);
            }
        }
Example #2
0
        public static void Handle(string timestamp, string data, ParserState state)
        {
            data = data.Trim();
            var match = Regexes.OptionsEntityRegex.Match(data);

            if (match.Success)
            {
                var id = match.Groups[1].Value;
                state.Options = new Options {
                    Id = int.Parse(id), OptionList = new List <Option>(), TimeStamp = timestamp
                };
                if (state.Node.Type == typeof(Game))
                {
                    ((Game)state.Node.Object).Data.Add(state.Options);
                }
                else
                {
                    throw new Exception("Invalid node " + state.Node.Type + " -- " + data);
                }
                return;
            }
            match = Regexes.OptionsOptionRegex.Match(data);
            if (match.Success)
            {
                var index     = match.Groups[1].Value;
                var rawType   = match.Groups[2].Value;
                var rawEntity = match.Groups[3].Value;
                var entity    = Helper.ParseEntity(rawEntity, state);
                var type      = Helper.ParseEnum <OptionType>(rawType);
                var option    = new Option {
                    Entity = entity, Index = int.Parse(index), Type = type, OptionItems = new List <OptionItem>()
                };
                state.Options.OptionList.Add(option);
                state.CurrentOption = option;
                state.LastOption    = option;
                return;
            }
            match = Regexes.OptionsSuboptionRegex.Match(data);
            if (match.Success)
            {
                var subOptionType = match.Groups[1].Value;
                var index         = match.Groups[2].Value;
                var rawEntity     = match.Groups[3].Value;
                var entity        = Helper.ParseEntity(rawEntity, state);

                if (subOptionType == "subOption")
                {
                    var subOption = new SubOption {
                        Entity = entity, Index = int.Parse(index), Targets = new List <Target>()
                    };
                    state.CurrentOption.OptionItems.Add(subOption);
                    state.LastOption = subOption;
                }
                else if (subOptionType == "target")
                {
                    var target = new Target {
                        Entity = entity, Index = int.Parse(index)
                    };
                    var lastOption = state.LastOption as Option;
                    if (lastOption != null)
                    {
                        lastOption.OptionItems.Add(target);
                        return;
                    }
                    var lastSubOption = state.LastOption as SubOption;
                    if (lastSubOption != null)
                    {
                        lastSubOption.Targets.Add(target);
                    }
                }
                else
                {
                    throw new Exception("Unexpected suboption type: " + subOptionType);
                }
            }
        }
Example #3
0
        /// <summary>
        /// 获取对应模块的文件夹
        /// </summary>
        /// <param name="folderOption">根文件夹类型</param>
        /// <param name="subOption">子文件夹类型</param>
        /// <returns>返回对应模块的文件夹</returns>
        public static async Task <StorageFolder> getFolder(FolderOption folderOption, SubOption subOption)
        {
            StorageFolder folder = null;

            switch (folderOption)
            {
            case FolderOption.Motion:
                folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(MOTION, CreationCollisionOption.OpenIfExists);

                break;

            case FolderOption.Im:
                folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(IM, CreationCollisionOption.OpenIfExists);

                break;

            default:
                return(null);
            }
            StorageFolder sub = null;

            switch (subOption)
            {
            case SubOption.HeadImg:
                sub = await folder.CreateFolderAsync(HEADIMG, CreationCollisionOption.OpenIfExists);

                break;

            case SubOption.Emoji:
                sub = await folder.CreateFolderAsync(EMOJI, CreationCollisionOption.OpenIfExists);

                break;

            case SubOption.Bubble:
                sub = await folder.CreateFolderAsync(BUBBLE, CreationCollisionOption.OpenIfExists);

                break;

            case SubOption.db:
                sub = await folder.CreateFolderAsync(DB, CreationCollisionOption.OpenIfExists);

                break;

            default:
                return(null);
            }
            return(sub);
        }