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(1183, 47))
|
{}
|
|
|
|
protected override bool GetCurrentHouse(out Int32 houseIndex, Image<Rgb, byte> 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;
|
}
|
}
|
}
|