using Emgu.CV; using Emgu.CV.Structure; using RichCreator.Dnf; using RichCreator.Utility.Captures; using RichCreator.Utility.CV; using RichCreator.Utility.Maps; using RichCreator.Utility.Structs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace RichCreator.Maps.Kalete { public class KaleteMiniMap : IMiniMap { public KaleteMiniMap(ZTRectangle gameRect):base(gameRect, new ZTPoint(703, 47)) {} protected override bool GetCurrentHouse(out Int32 houseIndex, Image image) { houseIndex = -1; Int32 overHouseDected = -1; for (int i = 0; i < 20; i++) { Int32 row = i / 5; Int32 col = i % 5; //目标块第一块坐标 Int32 x = this.MinimapOffset.X + col * 18; Int32 y = this.MinimapOffset.Y + row * 18; if (DnfCVHelper.IsCurrentHouseColor(image,x,y)) { //当前房间 houseIndex = i; return true; } if (i == 16) { //17格是否青色并且16格是红色,则认为角色在16房间 if (DnfCVHelper.IsCrossedHouseColor(image, x+18, y)) { if (DnfCVHelper.IsOverHouseColor(image,x,y)) { overHouseDected = 16; } } } } if (overHouseDected > -1) { //其它房间没有,并且已经检测到了最后一个房间 houseIndex = overHouseDected; return true; } return false; } } }