コード例 #1
0
ファイル: HuntHelper.cs プロジェクト: nt153133/LlamaLibrary
        public static List <(uint, HuntOrderStatus)> GetDailyStatus()
        {
            int[] dailyOrderTypes = new[] { 0, 1, 2, 3, 6, 7, 8, 10, 11, 12 };
            var   result          = new List <(uint, HuntOrderStatus)>();

            foreach (var orderType in dailyOrderTypes.Where((HuntHelper.OrderTypeUnlocked)))
            {
                bool accepted      = HuntHelper.GetAcceptedHunts()[orderType];
                var  orderTypeObj  = HuntHelper.GetMobHuntOrderType(orderType);
                var  dailies       = HuntHelper.GetCurrentDailyHunts(orderType);
                var  serverDailies = HuntHelper.GetServerDailyHunts(orderType);

                var oldDailies = dailies.Where((t, i) => t.NpcID != serverDailies[i].NpcID).Any();

                if (!accepted && dailies.Count == 0)
                {
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAccepted));
                    continue;
                }


                //LogCritical($"oldDilies = {oldDailies} count server {serverDailies.Count}");

                if ((accepted && dailies.All(i => i.IsFinished)) || !accepted)
                {
                    if (accepted && dailies.All(i => i.IsFinished) && !oldDailies)
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Only Fates left for today's dailies so done");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.OnlyFatesLeft));
                    }
                    else if (accepted && dailies.All(i => i.IsFinished))
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Only Fates left for old dailies so should yeet and get new ones");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.OnlyFatesLeftOld));
                    }
                    else if (!accepted && dailies.All(i => i.IsFinished && i.CurrentKills > 0) && oldDailies)
                    {
                        // Log($"{orderTypeObj.Item.CurrentLocaleName} - Not Accepted and last accepted were old and we so should get new ones?");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAcceptedOld));
                    }
                    else if (!accepted && dailies.All(i => i.IsFinished && i.CurrentKills > 0) && !oldDailies)
                    {
                        //Log($"{orderTypeObj.Item.CurrentLocaleName} - Finished today's dailies");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Complete));
                    }
                    else
                    {
                        //Log($"{orderTypeObj.Item.CurrentLocaleName} - {dailies.All(i => i.IsFinished && i.CurrentKills > 0)} {dailies.All(i => i.IsFinished)} {oldDailies} Have not accepted today's hunts");
                        result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.NotAccepted));
                    }

                    continue;
                }

                if (dailies.Any(i => !i.IsFinished) && oldDailies)
                {
                    // Log($"{orderTypeObj.Item.CurrentLocaleName} - Unfinished old dailies");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.UnFinishedOld));
                }
                else if (dailies.Any(i => !i.IsFinished) && !oldDailies)
                {
                    // Log($"{orderTypeObj.Item.CurrentLocaleName} - Unfinished current dailies");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Unfinished));
                }
                else
                {
                    //  Log($"All possible {orderTypeObj.Item.CurrentLocaleName} dailies done {dailies.Count()}");
                    result.Add(((uint, HuntOrderStatus))(orderType, HuntOrderStatus.Complete));
                }
            }

            return(result);
        }