Example #1
0
        /// <summary>
        /// 招募武将
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        public static bool GetStaff(string dmGuid, WlyStaffType staff)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_招募);

            // 先在左边的列表中确认是否已经存在
            if (DMService.Instance.FindStr(dmGuid, 总成_武将.武将列表, staff.ToString(), WlyColor.StaffColor))
            {
                return(true);
            }

            // 开始进行招募
            FlowLogicHelper.RepeatRun(() =>
            {
                // 在当前页寻找武将
                var find = DMService.Instance.FindStr(dmGuid, new WxRect(321, 331, 653, 450), staff.ToString(), WlyColor.StaffColor, out var x,
                                                      out var y);
                if (find)
                {
                    DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y), TimeSpan.FromSeconds(1));
                    if (DMService.Instance.FindStr(dmGuid, new WxRect(714, 305, 801, 329), staff.ToString(), WlyColor.StaffColor))
                    {
                        DMService.Instance.LeftClick(dmGuid, new WxPoint(612, 462));
                        Thread.Sleep(1000);
                    }

                    return(true);
                }

                // 进行翻页
                var pageStr = DMService.Instance.GetWords(dmGuid, new WxRect(468, 453, 514, 476), "ffffff-000000");
                var index   = pageStr.IndexOf("/", StringComparison.Ordinal);
                var current = int.Parse(pageStr.Substring(0, index));
                var total   = int.Parse(pageStr.Substring(index + 1));
                if (current == total)
                {
                    return(true);
                }

                DMService.Instance.LeftClick(dmGuid, new WxPoint(524, 464));
                return(false);
            }, TimeSpan.FromSeconds(10));

            // 确认招募成功情况
            if (DMService.Instance.FindStr(dmGuid, 总成_武将.武将列表, staff.ToString(), WlyColor.StaffColor))
            {
                return(true);
            }

            return(false);
        }
Example #2
0
        /// <summary>
        /// 武将转职
        /// </summary>
        /// <param name="staff"></param>
        /// <param name="dmGuid"></param>
        public static void Evolve(WlyStaffType staff, string dmGuid)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_武将);
            var result = WlyUtilityBiz.SelectStaffInList(dmGuid, staff);

            if (!result)
            {
                throw new InvalidOperationException($"未能选择到武将{staff.ToString()}");
            }

            DMService.Instance.LeftClick(dmGuid, new WxPoint(581, 341));
            if (DMService.Instance.FindStr(dmGuid, new WxRect(429, 342, 475, 371), "确定", WlyColor.Normal))
            {
                DMService.Instance.LeftClick(dmGuid, new WxPoint(454, 360));
            }
        }
Example #3
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 #4
0
        /// <summary>
        /// 武将下野
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <returns></returns>
        public static bool ThrowStaff(string dmGuid, WlyStaffType staff)
        {
            WlyViewMgr.GoTo(dmGuid, WlyViewType.功能_招募);

            // 无法选中则当做下野已经成功
            if (!WlyUtilityBiz.SelectStaffInList(dmGuid, staff))
            {
                return(true);
            }

            // 点击下野
            DMService.Instance.LeftClick(dmGuid, new WxPoint(270, 476));
            DMService.Instance.LeftClick(dmGuid, new WxPoint(453, 332));

            // 操作确认
            return(!DMService.Instance.FindStr(dmGuid, 总成_武将.武将列表, staff.ToString(), WlyColor.StaffColor));
        }
Example #5
0
        /// <summary>
        /// 在武将列表中选择指定的武将
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        public static bool SelectStaffInList(string dmGuid, WlyStaffType staff)
        {
            var name = staff.ToString();

            return(FlowLogicHelper.RepeatRun(() =>
            {
                if (DMService.Instance.FindStr(dmGuid, new WxRect(193, 205, 304, 462), name, WlyColor.Selected))
                {
                    return true;
                }

                if (DMService.Instance.FindStr(dmGuid, new WxRect(193, 205, 304, 462), name, GetStaffQualityStr(), out var x, out var y))
                {
                    DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y));
                }

                Thread.Sleep(500);
                return false;
            }, TimeSpan.FromSeconds(10)));
        }
Example #6
0
        /// <summary>
        /// 武将上阵
        /// </summary>
        /// <param name="staff"></param>
        /// <param name="formation"></param>
        /// <param name="index"></param>
        /// <param name="dmGuid"></param>
        public static void SetStaff(WlyStaffType staff, WlyFormationType formation, int index, string dmGuid)
        {
            SetFormation(formation, dmGuid);

            WlyUtilityBiz.SelectStaffInList(dmGuid, staff);
            if (DMService.Instance.FindStr(dmGuid, new WxRect(228, 458, 267, 487), "下阵", WlyColor.Normal))
            {
                DMService.Instance.LeftClick(dmGuid, new WxPoint(251, 471));
                WlyUtilityBiz.SelectStaffInList(dmGuid, staff);
            }

            DMService.Instance.LeftClick(dmGuid, new WxPoint(248, 474));
            DMService.Instance.LeftClick(dmGuid, _locationMap[index]);
            DMService.Instance.LeftClick(dmGuid, new WxPoint(386, 449));

            // 检测
            DMService.Instance.LeftClick(dmGuid, _locationMap[index]);
            var result = DMService.Instance.FindStr(dmGuid, new WxRect(718, 307, 796, 328), staff.ToString(), WlyUtilityBiz.GetStaffQualityStr());

            if (!result)
            {
                throw new InvalidOperationException("武将上阵失败");
            }
        }
Example #7
0
        /// <summary>
        /// 顿悟武将到指定的品级
        /// </summary>
        /// <param name="dmGuid"></param>
        /// <param name="staff"></param>
        /// <param name="quality"></param>
        /// <returns></returns>
        public static bool EnvolveStaff(string dmGuid, WlyStaffType staff, WlyQualityType quality)
        {
            SelectStaff(dmGuid, staff, WlyViewType.功能_武将);

            var currentQuality = WlyUtilityBiz.GetQuality(dmGuid, new WxRect(715, 308, 796, 326));

            if (currentQuality >= quality)
            {
                return(true);
            }

            // 点击进入顿悟
            var wait = FlowLogicHelper.RepeatRun(() =>
            {
                DMService.Instance.LeftClick(dmGuid, new WxPoint(764, 275), TimeSpan.FromSeconds(2));
                if (DMService.Instance.FindStr(dmGuid, new WxRect(477, 96, 523, 120), "顿悟", WlyColor.Normal))
                {
                    return(true);
                }

                return(false);
            }, TimeSpan.FromSeconds(10));

            if (!wait)
            {
                throw new InvalidOperationException("无法点开顿悟界面");
            }

            while (DMService.Instance.FindColor(WlyColor.Normal, new WxRect(244, 414, 699, 454), dmGuid, out var x, out var y))
            {
                DMService.Instance.LeftClick(dmGuid, new WxPoint(x, y));
                if (DMService.Instance.FindStr(dmGuid, new WxRect(521, 266, 600, 313), staff.ToString(), WlyColor.StaffColor))
                {
                    DMService.Instance.LeftClick(dmGuid, new WxPoint(456, 329));
                }
                else
                {
                    DMService.Instance.LeftClick(dmGuid, new WxPoint(543, 329));
                    DMService.Instance.LeftClick(dmGuid, new WxPoint(801, 120));
                    return(false);
                }
            }

            DMService.Instance.LeftClick(dmGuid, new WxPoint(769, 415));
            DMService.Instance.LeftClick(dmGuid, new WxPoint(452, 334));

            wait = FlowLogicHelper.RepeatRun(() =>
            {
                var result = DMService.Instance.FindStr(dmGuid, new WxRect(444, 371, 546, 443), "顿悟", WlyColor.Normal);
                if (result)
                {
                    return(true);
                }

                Thread.Sleep(1000);
                return(false);
            }, TimeSpan.FromSeconds(20));

            if (wait)
            {
                DMService.Instance.LeftClick(dmGuid, new WxPoint(496, 403));
                return(true);
            }

            DMService.Instance.LeftClick(dmGuid, new WxPoint(804, 117));
            return(false);
        }