private static void FastAttackAsync(object stateInfo)
{
var ai = (AttackInfo) stateInfo;
var nick = StripItalic(ai.TargetNick);
var userInfo = NeverApi.GetAll(nick);
if (userInfo == null)
{
if (AppVars.MainForm != null)
AppVars.MainForm.WriteChatMsgSafe("Ошибка анализа инфы атакуемого.");
return;
}
var flog = userInfo.FightLog;
if (flog.Equals("0", StringComparison.Ordinal))
{
flog = string.Empty;
}
if (!string.IsNullOrEmpty(flog))
{
var scans = 0;
var swatch = new Stopwatch();
swatch.Start();
AppVars.FastWaitEndOfBoiCancel = false;
while (!AppVars.FastWaitEndOfBoiCancel)
{
AppVars.FastWaitEndOfBoiActive = true;
var html = NeverApi.GetFlog(flog);
if (string.IsNullOrEmpty(html))
continue;
scans++;
// var off = 1;
// var off = 0;
var off = HelperStrings.SubString(html, "var off = ", ";");
if (string.IsNullOrEmpty(off))
continue;
if (off.Equals("1"))
{
break;
}
if (
(html.IndexOf("нападение бота", StringComparison.CurrentCultureIgnoreCase) == -1) &&
(html.IndexOf("закрытый бой", StringComparison.CurrentCultureIgnoreCase) == -1) &&
(html.IndexOf("закрытое нападение", StringComparison.CurrentCultureIgnoreCase) == -1) &&
(html.IndexOf("закрытое кулачное нападение", StringComparison.CurrentCultureIgnoreCase) == -1) &&
(html.IndexOf("закрытое боевое нападение", StringComparison.CurrentCultureIgnoreCase) == -1)
)
{
if (!AppVars.WaitOpen)
{
break;
}
}
if (scans == 1)
{
if (AppVars.MainForm != null)
AppVars.MainForm.WriteChatMsgSafe("Ожидание окончания боя (отмена: меню/быстрые действия/отмена).");
}
else
{
if ((scans%100) == 0)
{
if (AppVars.MainForm != null)
AppVars.MainForm.WriteChatMsgSafe(
$"Ожидание окончания боя (запросов: {scans}, средн: {swatch.ElapsedMilliseconds / scans}мс)");
}
}
}
}
AppVars.FastWaitEndOfBoiActive = false;
if (AppVars.FastWaitEndOfBoiCancel)
{
AppVars.FastWaitEndOfBoiCancel = false;
if (AppVars.MainForm != null)
AppVars.MainForm.WriteChatMsgSafe("Ожидание окончания боя прекращено.");
}
else
{
if (AppVars.MainForm != null)
{
AppVars.MainForm.FastStartSafe(ai.Weapon, nick, AppVars.DoPerenap ? int.MaxValue : 1);
ReloadMainFrame();
}
}
}