/// <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)); }
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)); }
/// <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); }
/// <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; } } } }
/// <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()}"); }
/// <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); }
/// <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)); }