Пример #1
0
        /// <summary>
        /// Подзадачи для андроида
        /// </summary>
        /// <param name="pers"></param>
        /// <param name="task"></param>
        /// <param name="ro"></param>
        private static void AndroSub(Pers pers, Task task, RootObject ro)
        {
            var tskInMain = pers.Tasks.FirstOrDefault(n => n.GUID == task.UUID);

            if (tskInMain != null)
            {
                var subNotDone = tskInMain.SubTasks.Where(n => !n.isDone).ToList();
                if (subNotDone.Any())
                {
                    Qwest qww = new Qwest();
                    qww.NameOfQwest = "↑↑↑";
                    qww.Guid        = task.UUID;
                    qww.Tasks       = new List <Task>();
                    foreach (var sub in subNotDone)
                    {
                        var item = GetTask(tskInMain);
                        item.UUID        = sub.Guid;
                        item.NameOf      = sub.Tittle;
                        item.Reccurrense = "NONE";
                        item.Wave        = task.Wave;
                        item.isSuper     = task.isSuper;
                        item.Index       = Int32.MaxValue;
                        item.LinksOf     = "↑↑↑";
                        qww.Tasks.Add(item);
                    }

                    foreach (var t in qww.Tasks)
                    {
                        var linkQwest = ro.Qwests.Where(n => n.Tasks.Any(q => q == task)).Select(n => n.Guid).ToList();
                        t.LinkedQwests = linkQwest;
                    }

                    var subTasks = subNotDone.Select(n => n.Guid);
                    task.SubTasksByQwests.AddRange(subTasks);
                    ro.Qwests.Add(qww);
                }
            }
        }
 private void refreshElRevard()
 {
     Qwest?.RefreshRev();
     Abiliti?.RefreshRev();
     Characteristic?.RefreshRev();
 }
Пример #3
0
        public static RootObject SerializeToAndroidJSON(Pers pers, string path)
        {
            StaticMetods.Locator.MainVM.RefreshTasksPriority(false);
            // Задаем индекс для задач
            int i       = 0;
            var ordered = pers.Tasks.OrderByDescending(n => n).ToList();//pers.Tasks.OrderBy(n => n).ToList();

            foreach (var task in ordered)
            {
                task.TaskIndex = i;
                i++;
            }

            RootObject ro = new RootObject
            {
                PersName                 = pers.NameOfProperty,
                PersRang                 = pers.RangName,
                PersExp                  = pers.PersExpProperty,
                Is10AbLevels             = pers.PersSettings.Is10AbLevels,
                Is5_5_50                 = pers.PersSettings.Is5_5_50,
                IsFUDGE                  = pers.PersSettings.IsFUDGE,
                IsParetto                = pers.IsParetto,
                DateOfLastUse            = pers.DateOfLastUse.ToString("dd.MM.yyyy"),
                IsShowTasksByTimeAndroid = pers.PersSettings.IsShowTasksByTimeAndroid,
                TimeOfLastUse            = string.Empty,
                IsSmartSort              = pers.PersSettings.IsSmartTaskSort,
                IsSortByPrioryty         = pers.IsSortByPrioryty,
                MaxGettedExp             = pers.MaxGettedExp,
                HP                   = pers.HP,
                MaxHP                = pers.MaxHP,
                BalanceIs50Levels    = pers.BalanceIs50Levels,
                BalanceForFirstLevel = pers.BalanceForFirstLevel,
                BalanceForLastLevel  = pers.BalanceForLastLevel,
                BalanceLevels        = pers.BalanceLevels
            };

            var tasks =
                pers.Tasks.Where(n => n.IsEnabled)
                .Where(n => !n.RelToQwests.Any() && !n.TaskInAbilitis.Any())
                .OrderBy(n => n)
                .ToList();

            List <Task> tsks = tasks.Select(GetTask).ToList();

            ro.Tasks    = new List <Task>();
            ro.Qwests   = new List <Qwest>();
            ro.Abils    = new List <AbilityAndroid>();
            ro.Characts = new List <CharacteristicAndroid>();

            foreach (var cha in pers.Characteristics)
            {
                CharacteristicAndroid chaA = new CharacteristicAndroid(cha.NameOfProperty, cha.CellValue,
                                                                       cha.RelayAbilitys.Select(n => new AbilityAndroid(n.AbilProperty.NameOfProperty, n.AbilProperty.CellValue)).ToList());

                ro.Characts.Add(chaA);
            }

            // скиллы заполняем
            var ab = pers.Abilitis.Where(n => n.IsEnebledProperty).OrderBy(n => n).ToList();

            foreach (var abilitiModel in ab)
            {
                ro.Abils.Add(new AbilityAndroid()
                {
                    Guid        = abilitiModel.GUID,
                    Name        = abilitiModel.NameOfProperty,
                    Modificator = abilitiModel.Booster,
                    Value       = abilitiModel.ValueProperty,
                    LastValue   = abilitiModel.LastValue,
                    ExpOneLevel = abilitiModel.getPriorOfAb(abilitiModel)
                });

                Qwest qww = new Qwest();
                qww.NotOneByOne = !pers.PersSettings.IsHideTasksOneByOneAndroid;
                qww.NameOfQwest = abilitiModel.NameOfProperty;
                qww.Guid        = abilitiModel.GUID;

                var tskss =
                    abilitiModel.NeedTasks
                    .Where(n => n.TaskProperty.IsEnabled)
                    .Where(n =>
                {
                    if (StaticMetods.PersProperty.IsParetto && n.TaskProperty.Recurrense.TypeInterval != TimeIntervals.Нет && n.TaskProperty.isSuper == false)
                    {
                        return(false);
                    }

                    return(true);
                })
                    .Select(n => n.TaskProperty)
                    .OrderBy(n => n)
                    .ToList();

                var tsk = tskss.Select(GetTask).ToList();
                //tsk.ForEach(n => n.LinksOf = abilitiModel.NameOfProperty);

                foreach (Task task in tsk)
                {
                    task.SubTasksByQwests = GetSubTasksByQwests(abilitiModel, pers, task);
                }

                qww.Tasks = tsk;
                ro.Qwests.Add(qww);
            }

            // А теперь квесты заполняем
            var qw = pers.Aims.Where(QwestsActiveForAndroid()).OrderBy(n => n).ToList();

            foreach (var qwest in qw)
            {
                Qwest qww = new Qwest();
                qww.NameOfQwest = qwest.NameOfProperty;
                qww.Guid        = qwest.GUID;

                var tskss =
                    qwest.NeedsTasks.Where(n => !n.TaskProperty.IsDelProperty)
                    .Select(n => n.TaskProperty)
                    .OrderBy(n => n)
                    .ToList();

                qww.Tasks = tskss.Select(GetTask).ToList();

                foreach (var task in qww.Tasks.Skip(1))
                {
                    var fod = qww.Tasks.FirstOrDefault();
                    if (fod != null)
                    {
                        if (getDateFromTaskAndroDateString(task.Date) < getDateFromTaskAndroDateString(fod.Date))
                        {
                            task.Date = fod.Date;
                        }
                    }
                }

                //List<string> lnkLst = new List<string>();
                //lnkLst.AddRange(qwest.AbilitiLinksOf.Select(n=>n.NameOfProperty));

                string lnkOf = qwest.NameOfProperty;

                if (qwest.AbilitiLinksOf.Any())
                {
                    lnkOf = " ⇉ ";
                }
                // + " ⇉ " + string.Join(", ", lnkLst);

                qww.Tasks.ForEach(n => n.LinksOf = lnkOf);

                if (qwest.AbilitiLinksOf.Any())
                {
                    foreach (var task in qww.Tasks)
                    {
                        task.LinkedQwests = qwest.AbilitiLinksOf.Select(n => n.GUID).ToList();
                    }
                }

                foreach (var task in qww.Tasks)
                {
                    task.SubTasksByQwests = GetSubTasksByQwests(null, pers, task);
                }

                ro.Qwests.Add(qww);
            }

            // Заполняем просто задачи, но запихиваем их в квест
            Qwest qw1 = new Qwest();

            qw1.NameOfQwest = "Прочее";
            qw1.Guid        = Guid.NewGuid().ToString();
            qw1.Tasks       = tsks.Distinct().ToList();
            qw1.NotOneByOne = true;
            foreach (var n in qw1.Tasks)
            {
                n.LinksOf = qw1.NameOfQwest;
            }
            ro.Qwests.Add(qw1);

            foreach (var task in ro.Tasks.ToList())
            {
                AndroSub(pers, task, ro);
                AndroSetTask(task, path);
            }

            foreach (var qwest in ro.Qwests.ToList())
            {
                foreach (var task in qwest.Tasks)
                {
                    AndroSub(pers, task, ro);
                    AndroSetTask(task, path);
                }
            }

            return(ro);
        }