using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace DesertBusHelper
{
public partial class frmMain : Form
{
private const int OFFSET = -10;
private bool bigCorrect;
private IntPtr DesertBusWindow;
private int maxLeft;
public frmMain()
{
InitializeComponent();
bigCorrect = false;
DesertBusWindow = IntPtr.Zero;
maxLeft = 0;
}
private void tScanImage_Tick(object sender, EventArgs e)
{
API.ReleaseKey(API.VK_CODES.VK_UP);
if (DesertBusWindow != IntPtr.Zero && ScreenCapture.ActiveWindow != DesertBusWindow)
{
ScreenCapture.ActiveWindow = DesertBusWindow;
}
Bitmap B = ScreenCapture.Capture(CaptureMode.Window, DesertBusWindow == IntPtr.Zero ? ScreenCapture.ActiveWindow : DesertBusWindow);
if (B == null)
{
DesertBusWindow = IntPtr.Zero;
return;
}
if (DesertBusHelper.containsDesertBus(B))
{
if (DesertBusWindow == IntPtr.Zero)
{
DesertBusWindow = ScreenCapture.ActiveWindow;
}
//tScanImage.Stop();
API.SendKey(API.VK_CODES.VK_UP);
DesertBusHelper.GetDiff(B);
tbStats.Text = string.Format("Stats:\r\nLast min: {0}\r\nLast max: {1}\r\nDifference: {2}\r\n", DesertBusHelper.lastMin, DesertBusHelper.lastMax, DesertBusHelper.lastDiff);
if (DesertBusHelper.lastDiff > 0 + OFFSET && bigCorrect)
{
bigCorrect = false;
API.PressKey(API.VK_CODES.VK_LEFT, 500);
tbStats.Text += string.Format("Steering left: ({0} ms)", 500);
}
else
{
if (DesertBusHelper.lastDiff > 90 + OFFSET)
{
maxLeft++;
API.PressKey(API.VK_CODES.VK_LEFT, 100);
tbStats.Text += string.Format("Steering left: ({0} ms; {1} times)", 100, maxLeft);
}
else if (DesertBusHelper.lastDiff > 50 + OFFSET)
{
if (maxLeft > 0)
{
maxLeft--;
}
else
{
API.PressKey(API.VK_CODES.VK_LEFT, 50);
tbStats.Text += string.Format("Steering left: ({0} ms)", 50);
}
}
else if (DesertBusHelper.lastDiff > 30 + OFFSET)
{
maxLeft = 0;
API.PressKey(API.VK_CODES.VK_LEFT, 20);
tbStats.Text += string.Format("Steering left: ({0} ms)", 20);
}
else if (DesertBusHelper.lastDiff < 0 + OFFSET)
{
bigCorrect = true;
maxLeft = 0;
}
}
//tScanImage.Start();
}
else
{
tbStats.Text = "Desert Bus not detected";
DesertBusWindow = IntPtr.Zero;
}
B.Dispose();
}
}
}
Comments
0 B
|👍
/👎