Esempio n. 1
0
 private void SyncActivityData()
 {
     dynamic resp = Post("/illustration/list", "type=4");
     if (resp != null && resp.errorCode == 0)
     {
         LogInfo("同步活动信息");
         #region activities
         var activities = new List<MojoActivityItem>();
         foreach (var a in resp.data.list)
         {
             #region conditions
             var conditions = new List<MojoActivityItemCondition>();
             foreach (var c in a.conditions)
             {
                 var new_c = new MojoActivityItemCondition
                 {
                     Id = c.id,
                     EntityCount = c.entity_count,
                     EntityId = c.entity_id,
                     EntityLevel = c.entity_level,
                     IsEnough = c.is_enough,
                     NeedChoose = c.need_choose,
                     PlayerEntityCount = c.player_entity_count,
                     EntityName = c.entity == null ? "" : c.entity.name
                 };
                 conditions.Add(new_c);
             }
             #endregion
             var new_i = new MojoActivityItem
             {
                 Id = a.id,
                 Name = a.name,
                 NeedPlayerLevel = a.need_player_level,
                 ColdDown = a.cooling_time,
                 LastSyncTime = DateTime.Now,
                 CouldDo = a.could_do,
                 HasDo = a.has_do,
                 HasInvalid = a.has_invalid,
                 IsRepeat = a.is_repeat,
                 NotStart = a.not_start,
                 Probability = a.probability,
                 Conditions = conditions,
             };
             if (a.award != null)
             {
                 new_i.AwardName = a.award.name;
                 new_i.AwardId = a.award.id;
             }
             if (SGLL.Data.ActivityData != null && SGLL.Data.ActivityData.Activities != null)
             {
                 var exist = SGLL.Data.ActivityData.Activities.FirstOrDefault(p => p.Id == new_i.Id);
                 if (exist != null)
                     new_i.AwardGot = exist.AwardGot;
             }
             activities.Add(new_i);
         }
         #endregion
         SGLL.Data.ActivityData = new MojoActivityData
         {
             Activities = activities,
             ColdDown = CD(3600),
             LastSyncTime = DateTime.Now,
         };
         SGLL.CallStatusUpdate(this, ChangedType.Activity);
     }
 }
Esempio n. 2
0
        private bool CouldDo(MojoActivityItem activity)
        {
            if (activity.CouldDo)
            {
                if (activity.IsRepeat && DateTime.Now < activity.LastSyncTime.AddSeconds(activity.ColdDown))
                    return false;
                else if (activity.Conditions.Any(p => p.EntityName.Contains("信物")))
                {
                    // 取消**信物自动兑换
                    return false;
                }
                return true;
            }
            else
            {
                if (activity.HasDo)
                    return false;

                // 如果蒋干和蒙古马不足导致的,可以自动购买
                if (MatchConditions(activity, new string[] { "蒋干", "蒙古马", "银币" })
                    && MatchParam(SR.ParaKey.ActivityAutoJM, "true", false))
                {
                    var m_c = activity.Conditions.Single(p => p.EntityName == "银币");
                    if (!m_c.IsEnough) return false;
                    var jm = activity.Conditions.Where(p => !p.IsEnough && p.EntityName != "银币");
                    return jm.Count() > 0 && SGLL.Data.PlayerInfo.VM >= 1200;
                }

                return false;
            }
        }
Esempio n. 3
0
 private bool MatchConditions(MojoActivityItem activity, string[] entityNames)
 {
     var targetNames = activity.Conditions.Select(p => p.EntityName).ToList();
     for (int i = 0; i < entityNames.Length; i++)
     {
         if (!targetNames.Contains(entityNames[i]))
         {
             return false;
         }
         targetNames.Remove(entityNames[i]);
     }
     return targetNames.Count == 0;
 }