Example #1
0
        /// <summary>
        /// 强化装备到指定的等级
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <param name="equip"></param>
        /// <param name="targetLevel"></param>
        public static WlyEquipInfo UpgradeEquip(string dmGuid, WlyStaffType staff, WlyEquipType equip, int targetLevel)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_强化装备);
            var result = SelectUpgradeEquipCore(dmGuid, staff, equip);

            if (!result)
            {
                WlyViewMgr.ExitCurrentView(dmGuid, TimeSpan.FromSeconds(10));
                WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_强化装备);
                result = SelectUpgradeEquipCore(dmGuid, staff, equip);
            }

            if (!result)
            {
                return(new WlyEquipInfo
                {
                    Quality = WlyQualityType.Unknow
                });
            }

            // 点击强化
            FlowLogicHelper.RunToTarget(() => GetEquipLevelCore(dmGuid), current => current >= targetLevel,
                                        () => DMService.Instance.LeftClick(dmGuid, new WxPoint(563, 354), TimeSpan.FromMilliseconds(50)));
            return(GetEquipInfo(dmGuid));
        }
Example #2
0
        public static void UnequipStaff(string dmGuid, WlyStaffType staff, WlyEquipType equipType)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_装备);
            if (!WlyUtilityBiz.SelectStaffInList(dmGuid, staff))
            {
                return;
            }

            // 点击全部卸载
            DMService.Instance.LeftClick(dmGuid, _equipSpaceMap[equipType]);
            DMService.Instance.LeftClick(dmGuid, new WxPoint(460, 469));
        }
Example #3
0
        /// <summary>
        /// 获取装备信息
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public WlyEquipInfo GetEquipInfo(WlyEquipType type)
        {
            if (EquipInfoDict.ContainsKey(type))
            {
                return(EquipInfoDict[type]);
            }

            var info = new WlyEquipInfo
            {
                Type       = type,
                Level      = 1,
                EquipLevel = 1,
                Quality    = WlyQualityType.Unknow
            };

            EquipInfoDict.Add(type, info);
            return(info);
        }
Example #4
0
        /// <summary>
        /// 更换指定部位的装备
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <param name="type"></param>
        /// <param name="staffLevel"></param>
        public static void ChangeEquipmenet(string dmGuid, WlyStaffType staff, WlyEquipType type, int staffLevel)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_装备);
            WlyUtilityBiz.SelectStaffInList(dmGuid, staff);

            var p = _equipSpaceMap[type];

            DMService.Instance.LeftClick(dmGuid, p);
            var currentInfo = GetEquipInfo(dmGuid);

            var startPoint = new WxPoint(551, 240);

            for (var j = 0; j < 4; j++)
            {
                for (var i = 0; i < 2; i++)
                {
                    var clickPoint = startPoint.Shift(i * 60, j * 60);
                    if (DMService.Instance.FindColor(dmGuid, "0a1215-000000", new WxRect(clickPoint, 10)))
                    {
                        return;
                    }

                    DMService.Instance.LeftClick(dmGuid, clickPoint);
                    var equipInfo = GetEquipInfo(dmGuid);

                    if (equipInfo.EquipLevel > staffLevel)
                    {
                        continue;
                    }

                    // 符合更换条件则进行更换
                    if ((equipInfo.Quality > currentInfo.Quality) ||
                        ((equipInfo.Quality == currentInfo.Quality) && (equipInfo.EquipLevel > currentInfo.EquipLevel)))
                    {
                        // 点击更换
                        DMService.Instance.LeftClick(dmGuid, new WxPoint(590, 473));
                        return;
                    }
                }
            }
        }
Example #5
0
        /// <summary>
        /// 在强化界面选择武将指定部位的装备
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <param name="equip"></param>
        private static bool SelectUpgradeEquipCore(string dmGuid, WlyStaffType staff, WlyEquipType equip)
        {
            var result = DMService.Instance.FindStrEx(dmGuid, new WxRect(188, 201, 417, 439), staff.ToString(), WlyColor.White);

            if (!string.IsNullOrWhiteSpace(result))
            {
                var points = result.Split('|')
                             .Select(o =>
                {
                    var ps = o.Split(',');
                    return(new WxPoint(int.Parse(ps[1]), int.Parse(ps[2])));
                });

                foreach (var p in points)
                {
                    DMService.Instance.LeftClick(dmGuid, p);
                    if (DMService.Instance.FindStr(dmGuid, new WxRect(712, 339, 808, 358), equip.ToString(), "f3f3da-000000"))
                    {
                        return(true);
                    }
                }
            }

            DMService.Instance.RepeatLeftClick(dmGuid, new WxPoint(426, 427), 14, 100);
            result = DMService.Instance.FindStrEx(dmGuid, new WxRect(188, 201, 417, 439), staff.ToString(), WlyColor.White);
            if (!string.IsNullOrWhiteSpace(result))
            {
                var points = result.Split('|')
                             .Select(o =>
                {
                    var ps = o.Split(',');
                    return(new WxPoint(int.Parse(ps[1]), int.Parse(ps[2])));
                });

                foreach (var p in points)
                {
                    DMService.Instance.LeftClick(dmGuid, p);
                    if (DMService.Instance.FindStr(dmGuid, new WxRect(712, 339, 808, 358), equip.ToString(), "f3f3da-000000"))
                    {
                        return(true);
                    }
                }
            }

            throw new InvalidOperationException($"无法找到{staff.ToString()}的装备{equip.ToString()}");
        }
Example #6
0
        /// <summary>
        /// 获取指定武将指定部位的装备信息
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <param name="equipType"></param>
        /// <returns></returns>
        public static WlyEquipInfo GetStaffEquipInfo(string dmGuid, WlyStaffType staff, WlyEquipType equipType)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_装备);
            WlyUtilityBiz.SelectStaffInList(dmGuid, staff);
            DMService.Instance.LeftClick(dmGuid, _equipSpaceMap[equipType], TimeSpan.FromSeconds(1));
            var info = GetEquipInfo(dmGuid);

            return(info);
        }
Example #7
0
        /// <summary>
        /// 交换两个武将指定的装备
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff1"></param>
        /// <param name="staff2"></param>
        /// <param name="equipType"></param>
        public static void SwitchEquipment(string dmGuid, WlyStaffInfo staff1, WlyStaffInfo staff2, WlyEquipType equipType)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_武将);
            var e1 = staff1.GetEquipInfo(equipType);
            var e2 = staff2.GetEquipInfo(equipType);

            WlyEquipMgr.UnequipStaff(dmGuid, staff1.Name, equipType);
            WlyEquipMgr.UnequipStaff(dmGuid, staff2.Name, equipType);

            if (staff1.Level < e2.EquipLevel)
            {
                Upgrade(staff1.Name, e2.EquipLevel, dmGuid);
            }
            WlyEquipMgr.ChangeEquipmenet(dmGuid, staff1.Name, equipType, e2.EquipLevel);

            if (staff2.Level < e1.EquipLevel)
            {
                Upgrade(staff2.Name, e1.EquipLevel, dmGuid);
            }
            WlyEquipMgr.ChangeEquipmenet(dmGuid, staff2.Name, equipType, e1.EquipLevel);

            staff1.SaveEquipInfo(WlyEquipMgr.GetStaffEquipInfo(dmGuid, staff1.Name, equipType));
            staff2.SaveEquipInfo(WlyEquipMgr.GetStaffEquipInfo(dmGuid, staff2.Name, equipType));
        }