typedef enum AUTOMATA_BATLE
{
AS_BATLE_BEGIN,
AS_BATLE_END,
AS_BATLE_ERROR,
AS_BATLE_TEST2MOB,
AS_BATLE_WAIT2NICK,
AS_BATLE_WAIT2MOB,
AS_BATLE_PROCESS,
AS_BATLE_CLICK2OK_1,
AS_BATLE_WAITCHANGE,
AS_BATLE_CLICK2MONEY,
AS_BATLE_TEST2DROP,
AS_BATLE_CLICK2DROP,
AS_BATLE_CLICK2CLOSE,
AS_BATLE_WAIT2DROP,
AS_BATLE_CLICK2TAKEALL,
AS_BATLE_WAIT2CONFIRM,
AS_BATLE_CLICK2OK_2,
AS_BATLE_WAIT2BACK,
AS_BATLE_CLICK2BACK,
AS_BATLE_WAIT2STARTWINDOW,
AS_BATLE_WAIT2NEXT
};
AUTOMATA_BATLE CAutomataBatle::GoStep(HDC hdc)
{
char szMessage[255];
switch (m_automata_batle)
{
case AS_BATLE_BEGIN:
m_automata_batle = AS_BATLE_WAIT2STARTWINDOW;
SetWindowText(m_hwndControl, " ");
break;
case AS_BATLE_WAIT2STARTWINDOW:
if (IsStartPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_TEST2MOB;
}
break;
case AS_BATLE_TEST2MOB:
if (IsMechPresent(hdc))
if (!ClickMenuItem(INDEX_GOBATLE))
return AS_BATLE_ERROR;
if (IsCellEmpty(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_END;
}
else
{
hwndBatle = NULL;
EnumChildWindows(m_hwndMain, EnumWindowsProcBatle, NULL);
if (NULL != hwndBatle)
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAIT2NICK;
}
}
break;
case AS_BATLE_WAIT2NICK:
if (IsNickPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAIT2MOB;
}
break;
case AS_BATLE_WAIT2MOB:
if (!IsNickOpEmpty(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_PROCESS;
}
break;
case AS_BATLE_PROCESS:
if (!IsBatleEnd(hdc))
{
if (!ClickMenuItem2Window(hwndBatle, INDEX_STRIKE))
return AS_BATLE_ERROR;
}
else
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_CLICK2OK_1;
}
break;
case AS_BATLE_CLICK2OK_1:
if (!ClickMenuItem2Window(hwndBatle, INDEX_OK2BATLEEND))
return AS_BATLE_ERROR;
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAITCHANGE;
break;
case AS_BATLE_WAITCHANGE:
if (IsChangePresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_CLICK2MONEY;
}
break;
case AS_BATLE_CLICK2MONEY:
if (!ClickMenuItem(INDEX_MONEY))
return AS_BATLE_ERROR;
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_TEST2DROP;
break;
case AS_BATLE_TEST2DROP:
if (IsButtonDropPresent(hdc))
{
SetWindowText(m_hwndControl, " \"\"");
m_automata_batle = AS_BATLE_CLICK2DROP;
}
else if (IsButtonClosePresent(hdc))
{
SetWindowText(m_hwndControl, " , \"\"");
m_automata_batle = AS_BATLE_CLICK2CLOSE;
}
break;
case AS_BATLE_CLICK2DROP:
if (IsButtonDropPresent(hdc))
{
if (!ClickMenuItem(INDEX_DROP))
return AS_BATLE_ERROR;
}
else
if (IsDropPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAIT2DROP;
}
else if (IsStartPresent(hdc))
m_automata_batle = AS_BATLE_WAIT2STARTWINDOW;
break;
case AS_BATLE_CLICK2CLOSE:
if (!ClickMenuItem(INDEX_CLOSE))
return AS_BATLE_ERROR;
if (IsStartPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_dwWait = 0;
m_automata_batle = AS_BATLE_WAIT2NEXT;
}
break;
case AS_BATLE_WAIT2DROP:
if (IsDropPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_CLICK2TAKEALL;
}
break;
case AS_BATLE_CLICK2TAKEALL:
if (!ClickMenuItem(INDEX_TAKEALL))
return AS_BATLE_ERROR;
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAIT2CONFIRM;
break;
case AS_BATLE_WAIT2CONFIRM:
if (IsConfirmPresent(hdc))
{
SetWindowText(m_hwndControl, "");
m_automata_batle = AS_BATLE_CLICK2OK_2;
}
break;
case AS_BATLE_CLICK2OK_2:
if (!ClickMenuItem(INDEX_OK2TAKEALL))
return AS_BATLE_ERROR;
if (!IsConfirmPresent(hdc))
{
SetWindowText(m_hwndControl, " \"\"");
m_automata_batle = AS_BATLE_WAIT2BACK;
}
break;
case AS_BATLE_WAIT2BACK:
if (IsBackPresent(hdc))
{
SetWindowText(m_hwndControl, " \"\"");
m_automata_batle = AS_BATLE_CLICK2BACK;
}
break;
case AS_BATLE_CLICK2BACK:
if (!ClickMenuItem(INDEX_BACK))
return AS_BATLE_ERROR;
if (IsStartPresent(hdc))
{
SetWindowText(m_hwndControl, " ");
m_dwWait = 0;
m_automata_batle = AS_BATLE_WAIT2NEXT;
}
break;
case AS_BATLE_WAIT2NEXT:
if (m_dwWait >= WAIT_2NEXTBATTLE)
{
SetWindowText(m_hwndControl, " ");
m_automata_batle = AS_BATLE_WAIT2STARTWINDOW;
}
else
{
wsprintf(szMessage, "(%d %d) ...", m_dwWait/2, WAIT_2NEXTBATTLE/2);
SetWindowText(m_hwndControl, szMessage);
m_dwWait++;
}
break;
case AS_BATLE_END:
m_automata_batle = AS_BATLE_BEGIN;
break;
}