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/Dnf/MapInfo.cs |  141 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 141 insertions(+), 0 deletions(-)

diff --git a/src/RichCreator/Dnf/MapInfo.cs b/src/RichCreator/Dnf/MapInfo.cs
index 79a513a..1720382 100644
--- a/src/RichCreator/Dnf/MapInfo.cs
+++ b/src/RichCreator/Dnf/MapInfo.cs
@@ -1,6 +1,9 @@
 using RichCreator.Utility;
+using RichCreator.Utility.CV;
+using RichCreator.Utility.InputControl;
 using RichCreator.Utility.Maps;
 using RichCreator.Utility.Structs;
+using RichCreator.Utilitys;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -20,6 +23,7 @@
             this.MapType = mapType;
             this.GameRect = gameRect;
             this.CancelToken = cancellationToken;
+            this.Role = new DnfRole(gameRect);
         }
 
         /// <summary>
@@ -45,6 +49,139 @@
         /// </summary>
         public MapType MapType { get; set; }
 
+
+
+        /// <summary>
+        /// 角色
+        /// </summary>
+        public DnfRole Role { get; set; }
+
+
+        #region Func
+
+        /// <summary>
+        /// 关闭所有弹出窗
+        /// </summary>
+        /// <param name="cancelToken"></param>
+        /// <param name="gameRect"></param>
+        /// <returns></returns>
+        protected void CloseAllAlertWindowByEsc(CancellationToken cancelToken, ZTRectangle gameRect)
+        {
+            GameUtils.CloseAllAlertWindowByEsc(cancelToken, gameRect);
+        }
+
+        /// <summary>
+        /// 关闭所有弹出窗
+        /// </summary>
+        /// <param name="cancelToken"></param>
+        /// <param name="gameRect"></param>
+        /// <returns></returns>
+        protected void CloseAllAlertWindowByX(CancellationToken cancelToken, ZTRectangle gameRect)
+        {
+            GameUtils.CloseAllAlertWindowByX(cancelToken, gameRect);
+        }
+
+
+
+        /// <summary>
+        /// 点击右上角"退到城镇"文字
+        /// </summary>
+        protected void ExitToTown()
+        {
+            G.Instance.DebugWriter("返回城镇");
+            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.Start.X +667, this.GameRect.Start.Y + 147);
+            G.Instance.InputControl.MoveToAndClick(point);
+            Thread.Sleep(5000);
+        }
+
+
+
+        /// <summary>
+        /// 点击右上角的“再次挑战”
+        /// </summary>
+        protected void ReplayGame()
+        {
+            G.Instance.DebugWriter("重新挑战");
+            Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.Start.X+667, this.GameRect.Start.Y + 87);
+            G.Instance.InputControl.MoveToAndClick(point);
+        }
+
+        /// <summary>
+        /// 出售装备
+        /// </summary>
+        /// <param name="saleButtonRect"></param>
+        protected bool SaleEquipment()
+        {
+            //卖装备并关闭商店
+            ZTRectangle closeButtonRect = ZTRectangle.Empty;
+            ZTRectangle saleButtonRect = ZTRectangle.Empty;
+            if (!DnfCVHelper.HasSaleButton(out saleButtonRect, out closeButtonRect, this.GameRect))
+            {
+                return false;
+            }
+
+            //卖装备
+            G.Instance.InfoWriter("出售装备");
+            G.Instance.InputControl.MoveToAndClick(saleButtonRect.GetCenterPoint());
+
+            //得到装备文字位置
+            ZTRectangle equipmentTextRect = ZTRectangle.Empty;
+            bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () =>
+            {
+                Int32 status = 0;
+                if (DnfCVHelper.GetEquipmentSelectStatus(out equipmentTextRect, out status, this.GameRect))
+                {
+                    if (status == 1)
+                    {
+                        return true;
+                    }
+
+                    G.Instance.InputControl.MoveToAndClick(equipmentTextRect.GetCenterPoint());
+                }
+                return false;
+            });
+
+            if (!result)
+            {
+                G.Instance.InfoWriter("装备文字未取到");
+                return false;
+            }
+
+
+
+            //开始点,每格步进30
+            ZTPoint startPoint = new Utility.Structs.ZTPoint(equipmentTextRect.End.X - 30, equipmentTextRect.End.Y + 9);
+            List<Int32> points = DnfCVHelper.GetEquipmentIndexs(startPoint);
+
+            for (int i = 0; i < points.Count; i++)
+            {
+                Int32 index = points[i];
+
+                int row = index / 8;
+                int col = index % 8;
+                int x = col * 30 + 15;
+                int y = row * 30 + 15;
+
+                //点窗格
+                G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(startPoint.X + x, startPoint.Y + y));
+                Thread.Sleep(500);
+                //点确定
+                G.Instance.InputControl.Move(0, 0, true, false, false);
+                Thread.Sleep(RandomUtils.MouseClickDuration);
+                G.Instance.InputControl.Move(0, 0, false, false, false);
+                Thread.Sleep(RandomUtils.MouseClickDuration);
+            }
+            G.Instance.DebugWriter("equipment:" + ZTImage.Utils.ConcatString(points.ToArray(), ","));
+            Thread.Sleep(RandomUtils.KeyPressDuration);
+            G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
+            return true;
+        }
+        #endregion
+
+
+
+
+        #region abstruct func
         /// <summary>
         /// 开始刷图
         /// </summary>
@@ -68,5 +205,9 @@
         /// <param name="preHouseIndex"></param>
         public virtual void EntryHousePrework(Int32 houseIndex, Int32 preHouseIndex)
         { }
+        #endregion
+
+
+
     }
 }

--
Gitblit v1.9.3