From 589ed88a5924a7494e21b95b6bbff5e46ff49ddd Mon Sep 17 00:00:00 2001
From: asmrobot <asmrobot@hotmail.com>
Date: Thu, 21 Nov 2019 01:08:42 +0000
Subject: [PATCH] kalete map
---
src/RichCreator/Jobs/WeGameJob.cs | 142 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 109 insertions(+), 33 deletions(-)
diff --git a/src/RichCreator/Jobs/WeGameJob.cs b/src/RichCreator/Jobs/WeGameJob.cs
index 551ac9b..2117a79 100644
--- a/src/RichCreator/Jobs/WeGameJob.cs
+++ b/src/RichCreator/Jobs/WeGameJob.cs
@@ -34,20 +34,44 @@
Process.Start(this.Config.TGPDaemonPath);
G.Instance.InfoWriter("等待We Game运行");
ZTRectangle weGameRect = ZTRectangle.Empty;
- ZTRectangle changeLoginMethodButtonRect = ZTRectangle.Empty;
+ ZTRectangle changeMethodRect = ZTRectangle.Empty;
+ bool result = false;
- //查找游戏
- bool result = FindWeGame(cancellationToken, 5 * 60, out weGameRect,out changeLoginMethodButtonRect);
- if (!result)
+ //查找游戏并设为帐号密码登陆
+ Int32 counter = 3;
+ while (counter>0)
{
- G.Instance.InfoWriter("查找游戏失败");
- return ZTResult.Failed;
- }
+ bool isQQFast = false;
+ //查找游戏
+ result = FindWeGame(out isQQFast, cancellationToken, 5 * 60, out weGameRect, out changeMethodRect);
+ if (!result)
+ {
+ G.Instance.InfoWriter("查找游戏失败");
+ return ZTResult.Failed;
+ }
- G.Instance.InfoWriter("WeGame于:" + weGameRect.ToString() + ",切换按钮于:" + changeLoginMethodButtonRect.ToString());
+
+ if (isQQFast)
+ {
+ //qq快速登陆
+ G.Instance.InputControl.MoveToAndClick(changeMethodRect.GetCenterPoint());
+ Thread.Sleep(500);
+ }
+ else
+ {
+ break;
+ }
+
+ counter--;
+ }
+
+
+
+
+ G.Instance.InfoWriter("WeGame于:" + weGameRect.ToString() + ",切换按钮于:" + changeMethodRect.ToString());
//登陆
- result = LoginWeGame(cancellationToken, 30, weGameRect, changeLoginMethodButtonRect);
+ result = LoginWeGame(cancellationToken, 30, weGameRect, changeMethodRect);
if (!result)
{
G.Instance.InfoWriter("登陆失败");
@@ -56,10 +80,10 @@
G.Instance.InfoWriter("WeGame登陆成功");
//登陆DNF游戏
- result = LoginDNF(cancellationToken, 30);
+ result = LoginDNF(cancellationToken, 30,weGameRect);
if (!result)
{
- G.Instance.InfoWriter("DNF未成功打开");
+ G.Instance.InfoWriter("DNF启动未成功");
return ZTResult.Failed;
}
G.Instance.InfoWriter("开始启动DNF游戏");
@@ -77,15 +101,16 @@
/// <param name="loginMethod">当前登陆方式,0:QQ快速登陆,1:码密登陆</param>
/// <param name="changeLMButtonRectangle">切换登陆方式按钮区域</param>
/// <returns></returns>
- private bool FindWeGame(CancellationToken cancelToken, Int64 timeoutSecond, out ZTRectangle wegameRect, out ZTRectangle changeButtonRect)
+ private bool FindWeGame(out bool isQQFastLogin,CancellationToken cancelToken, Int64 timeoutSecond, out ZTRectangle wegameRect, out ZTRectangle changeButtonRect)
{
ZTRectangle weGameRect = ZTRectangle.Empty;
ZTRectangle changeLoginMethodButtonRect = ZTRectangle.Empty;
-
+ bool isfl = false;
bool result=FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond * 1000, cancelToken, () => {
- return WeGameCVHelper.IsLoginPage(out weGameRect, out changeLoginMethodButtonRect);
+ return WeGameCVHelper.IsLoginPage(out isfl,out weGameRect, out changeLoginMethodButtonRect);
});
+ isQQFastLogin = isfl;
wegameRect = weGameRect;
changeButtonRect = changeLoginMethodButtonRect;
return result;
@@ -132,7 +157,7 @@
/// <param name="timeoutSecond"></param>
/// <param name="dnfItemRect"></param>
/// <returns></returns>
- private bool LoginDNF(CancellationToken cancelToken, Int64 timeoutSecond)
+ private bool LoginDNF(CancellationToken cancelToken, Int64 timeoutSecond,ZTRectangle wegameRect)
{
ZTRectangle findRect = ZTRectangle.Empty;
ZTRectangle pRect = ZTRectangle.Empty;
@@ -148,6 +173,7 @@
{
G.Instance.InfoWriter("未找到主页按钮");
return false;
+ //todo:发通知
}
G.Instance.InfoWriter("主页按钮已找到");
G.Instance.InputControl.MoveToAndClick(unselectHomeButtonRect.GetCenterPoint());
@@ -161,39 +187,89 @@
{
G.Instance.InfoWriter("未找到DNF项");
return false;
+ //todo:发通知
}
G.Instance.InfoWriter("Dnf项已找到");
G.Instance.InputControl.MoveToAndClick(dnfItemRect.GetCenterPoint());
- //是否需要更新
- ZTRectangle updateButtonRect = ZTRectangle.Empty;
- result = FuncUtils.TimeoutCancelableWrap(3000, cancelToken, () => {
- return WeGameCVHelper.FindUpdateButton(out updateButtonRect);
+ //是否需要更新,如需要则更新
+ ZTRectangle buttonRect = ZTRectangle.Empty;
+ bool isUpdate = false;
+ result = FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond*1000, cancelToken, () => {
+ return FindGameButton(out buttonRect, out isUpdate);
});
- if (result)
- {
- G.Instance.InfoWriter("需要更新请更新后再运行");
- G.Instance.InputControl.MoveToAndClick(updateButtonRect.GetCenterPoint());
- return false;
- }
- //开始游戏按钮
- ZTRectangle startGameButtonRect = ZTRectangle.Empty;
- result = FuncUtils.TimeoutCancelableWrap((Int32)timeoutSecond * 1000, cancelToken, () => {
- return WeGameCVHelper.FindStartGameButton(out startGameButtonRect);
- });
if (!result)
{
- G.Instance.InfoWriter("未找到开始游戏按钮");
+ G.Instance.InfoWriter("未找到开始或升级游戏按钮");
return false;
}
- G.Instance.InfoWriter("开始游戏按钮已找到");
- G.Instance.InputControl.MoveToAndClick(startGameButtonRect.GetCenterPoint());
+
+ if (isUpdate)
+ {
+ //更新
+ G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
+ G.Instance.InfoWriter("需要更新,更新超时时长为30分钟");
+
+ result = FuncUtils.TimeoutCancelableWrap(30 * 60 * 1000, cancelToken, () => {
+ G.Instance.InputControl.MoveTo(0, 0, false, false, false);
+
+ if (FindGameButton(out buttonRect, out isUpdate))
+ {
+ if (isUpdate)
+ {
+ //如果没点上更新按钮则再点一次
+ G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
+ }
+ else
+ {
+ return true;
+ }
+ }
+ return false;
+
+ });
+
+ if (!result)
+ {
+ G.Instance.InfoWriter("更新未成功,请手动更新");
+ //todo:发通知
+ return false;
+ }
+ }
+
+ G.Instance.InfoWriter("开始游戏");
+ G.Instance.InputControl.MoveToAndClick(buttonRect.GetCenterPoint());
return true;
}
+ /// <summary>
+ /// 查找游戏按钮
+ /// </summary>
+ /// <param name="buttonRect"></param>
+ /// <returns></returns>
+ private bool FindGameButton(out ZTRectangle buttonRect,out bool isUpdate)
+ {
+ buttonRect = ZTRectangle.Empty;
+ isUpdate = false;
+ Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
+ if (WeGameCVHelper.FindUpdateButton(out buttonRect, image))
+ {
+ isUpdate = true;
+ return true;
+ }
+
+ if (WeGameCVHelper.FindStartGameButton(out buttonRect, image))
+ {
+ isUpdate = false;
+ return true;
+ }
+ return false;
+ }
+
+
#region Tools
/// <summary>
/// 删除左右指定数量的字符
--
Gitblit v1.9.3