Пример #1
0
        public Task <IEnumerable <Sheet> > GetSheetsByStatus(SheetStatus status)
        {
            var result = this.Client.CreateDocumentQuery <Sheet>(
                UriFactory.CreateDocumentCollectionUri("store", "sheet"))
                         .ToArray()
                         .Where(x => x.Status == status);

            return(Task.FromResult(result));
        }
    /////////////////////////////////////////////
    /// Functions
    /////////////////////////////////////////////


    //initialize variables and turn the sheet off
    public void Setup()
    {
        nameButton    = transform.Find(NAME_OBJ).Find(TEXT_OBJ).GetComponent <TextMeshProUGUI>();
        statBlock     = transform.Find(STAT_OBJ).GetComponent <TextMeshProUGUI>();
        nextLabel     = transform.Find(NEXT_LABEL_OBJ).GetComponent <TextMeshProUGUI>();
        track1Next    = transform.Find(TRACK_1_NEXT_OBJ).Find(TEXT_OBJ).GetComponent <TextMeshProUGUI>();
        track1Current = transform.Find(TRACK_1_CURRENT_OBJ).Find(TEXT_OBJ).GetComponent <TextMeshProUGUI>();
        track2Next    = transform.Find(TRACK_2_NEXT_OBJ).Find(TEXT_OBJ).GetComponent <TextMeshProUGUI>();
        track2Current = transform.Find(TRACK_2_CURRENT_OBJ).Find(TEXT_OBJ).GetComponent <TextMeshProUGUI>();
        availCards    = transform.Find(AVAILABLE_CARDS_OBJ).GetComponent <TextMeshProUGUI>();
        charPortrait  = transform.Find(PORTRAIT_OBJ).GetComponent <Image>();
        Services.Events.Register <InputEvent>(HandleClicks);
        CurrentStatus = SheetStatus.Hidden;
        ChangeSheetState();
    }
Пример #3
0
        public void FilterAttachElementFromStatuses(Dictionary <string, List <SheetStatus> > statuses)
        {
            SheetStatus attachElement = new SheetStatus()
            {
                DefaultDuration = "25", Effects = "Replaces Attack command, increases {Element} damage dealt by 50/80/120% (abilities) or 80/100/120% (Soul Breaks), {Element} resistance +20%"
            };
            SheetStatus attachElementStacking = new SheetStatus()
            {
                DefaultDuration = "25", Effects = "Allow to stack Attach {Element}, up to Attach {Element} 3"
            };
            SheetStatus buffElement = new SheetStatus()
            {
                DefaultDuration = "15", Effects = "Increases {Element} damage dealt by 10%, cumulable"
            };
            SheetStatus imperilElement = new SheetStatus()
            {
                DefaultDuration = "15", Effects = "{Element} Resistance -10%, cumulable"
            };

            var attachElements = statuses
                                 .Select(x => new KeyValuePair <string, List <SheetStatus> >
                                             (x.Key,
                                             x.Value.Where(y => y.Name.Contains("Attach") &&
                                                           !y.Name.Contains("Stacking"))
                                             .ToList()))
                                 .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                 .ToList();

            var stackingElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                       (x.Key,
                                                       x.Value.Where(y => y.Name.Contains("Attach") &&
                                                                     y.Name.Contains("Stacking"))
                                                       .ToList()))
                                   .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                   .ToList();

            var buffElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                   (x.Key,
                                                   x.Value.Where(y => y.Name.Contains("Buff"))
                                                   .ToList()))
                               .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                               .ToList();

            var imperilElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                      (x.Key,
                                                      x.Value.Where(y => y.Name.Contains("Imperil"))
                                                      .ToList()))
                                  .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                  .ToList();

            if (attachElements.Count() == 0 && stackingElements.Count() == 0 && buffElements.Count() == 0 && imperilElements.Count() == 0)
            {
                return;
            }

            if (attachElements.Count() > 0)
            {
                var elements = new List <string>();
                foreach (var source in attachElements)
                {
                    //var matchingElements = statuses[source.Key].Where(x => source.Value.Any(y => y.Name == x.Name));
                    foreach (var element in source.Value)
                    {
                        statuses[source.Key].Remove(element);
                        elements.AddRange(Constants.Constants.elementList.Where(x => element.Name.Contains(x)));
                    }
                }
                var omni = attachElement;
                omni.Name    = $"Attach {string.Join(", ", elements)}";
                omni.Effects = omni.Effects.Replace("{Element}", string.Join(", ", elements));
                statuses[statuses.First().Key].Add(omni);
            }

            if (stackingElements.Count() > 0)
            {
                var elements = new List <string>();
                foreach (var source in stackingElements)
                {
                    //var matchingElements = statuses[source.Key].Where(x => source.Value.Any(y => y.Name == x.Name));
                    foreach (var element in source.Value)
                    {
                        statuses[source.Key].Remove(element);
                        elements.AddRange(Constants.Constants.elementList.Where(x => element.Name.Contains(x)));
                    }

                    var omni = attachElementStacking;
                    omni.Name    = $"Attach {string.Join(", ", elements)} With Stacking";
                    omni.Effects = omni.Effects.Replace("{Element}", string.Join(", ", elements));
                    statuses[statuses.First().Key].Add(omni);
                }
            }

            if (buffElements.Count() > 0)
            {
                var elements = new List <string>();
                foreach (var source in buffElements)
                {
                    //var matchingElements = statuses[source.Key].Where(x => source.Value.Any(y => y.Name == x.Name));
                    foreach (var element in source.Value)
                    {
                        statuses[source.Key].Remove(element);
                        elements.AddRange(Constants.Constants.elementList.Where(x => element.Name.Contains(x)));
                    }
                }
                var omni = buffElement;
                omni.Name    = $"Buff {string.Join(", ", elements)}";
                omni.Effects = omni.Effects.Replace("{Element}", string.Join(", ", elements));
                statuses[statuses.First().Key].Add(omni);
            }

            if (imperilElements.Count() > 0)
            {
                var elements = new List <string>();
                foreach (var source in imperilElements)
                {
                    //var matchingElements = statuses[source.Key].Where(x => source.Value.Any(y => y.Name == x.Name));
                    foreach (var element in source.Value)
                    {
                        statuses[source.Key].Remove(element);
                        elements.AddRange(Constants.Constants.elementList.Where(x => element.Name.Contains(x)));
                    }
                }
                var omni = imperilElement;
                omni.Name    = $"Imperil {string.Join(", ", elements)}";
                omni.Effects = omni.Effects.Replace("{Element}", string.Join(", ", elements));
                statuses[statuses.First().Key].Add(omni);
            }
        }
Пример #4
0
        public void FilterAttachElementFromStatuses(Dictionary <string, List <SheetStatus> > statuses)
        {
            SheetStatus attachElementTemplate = new SheetStatus()
            {
                DefaultDuration = "25", Effects = "Replaces Attack command, increases {Element} damage dealt by 50/80/120% (abilities) or 80/100/120% (Soul Breaks), {Element} resistance +20%"
            };
            SheetStatus attachElementStackingTemplate = new SheetStatus()
            {
                DefaultDuration = "25", Effects = "Allow to stack Attach {Element}, up to Attach {Element} 3"
            };
            SheetStatus buffElementTemplate = new SheetStatus()
            {
                DefaultDuration = "15", Effects = "Increases {Element} damage dealt by 10%, cumulable"
            };
            SheetStatus imperilElementTemplate = new SheetStatus()
            {
                DefaultDuration = "15", Effects = "{Element} Resistance -10%, cumulable"
            };

            var attachElements = statuses
                                 .Select(x => new KeyValuePair <string, List <SheetStatus> >
                                             (x.Key,
                                             x.Value.Where(y => y.Name.Contains("Attach") &&
                                                           !y.Name.Contains("Stacking"))
                                             .ToList()))
                                 .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                 .ToList();

            var stackingElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                       (x.Key,
                                                       x.Value.Where(y => y.Name.Contains("Attach") &&
                                                                     y.Name.Contains("Stacking"))
                                                       .ToList()))
                                   .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                   .ToList();

            var buffElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                   (x.Key,
                                                   x.Value.Where(y => y.Name.Contains("Buff"))
                                                   .ToList()))
                               .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                               .ToList();

            var imperilElements = statuses.Select(x => new KeyValuePair <string, List <SheetStatus> >
                                                      (x.Key,
                                                      x.Value.Where(y => y.Name.Contains("Imperil"))
                                                      .ToList()))
                                  .Where(x => x.Value.Count() != 0 && x.Value.Count() != 1)
                                  .ToList();

            if (attachElements.Count() == 0 && stackingElements.Count() == 0 && buffElements.Count() == 0 && imperilElements.Count() == 0)
            {
                return;
            }


            //Add Attached Elements
            AddElements(statuses, attachElementTemplate, attachElements, "Attach {Element}");

            //Add Stacking Attached Elements
            AddElements(statuses, attachElementStackingTemplate, stackingElements, "Attach {Element} With Stacking");

            //Add Buffed Elements
            AddElements(statuses, buffElementTemplate, buffElements, "Buff {Element}");

            //Add Impleril Elements
            AddElements(statuses, imperilElementTemplate, imperilElements, "Imperil {Element}");
        }
Пример #5
0
        private static void AddElements(Dictionary <string, List <SheetStatus> > statuses, SheetStatus templateStatus, List <KeyValuePair <string, List <SheetStatus> > > elementalStatuses, string nameTemplate)
        {
            if (elementalStatuses.Count() == 0)
            {
                return;
            }

            var elements = new List <string>();

            foreach (var source in elementalStatuses)
            {
                foreach (var element in source.Value)
                {
                    statuses[source.Key].Remove(element);
                    elements.AddRange(Constants.Constants.elementList.Where(x => element.Name.Contains(x)).Distinct());
                }
            }
            elements = elements.Distinct().ToList <string>();

            var omni = templateStatus;

            omni.Name    = nameTemplate.Replace("{Element}", string.Join(", ", elements));
            omni.Effects = omni.Effects.Replace("{Element}", string.Join(", ", elements));
            statuses[statuses.First().Key].Add(omni);
        }
 public void ChangeCurrentStatus(SheetStatus newStatus)
 {
     CurrentStatus = newStatus;
 }