Commit 1865f9a0 authored by argon.sun's avatar argon.sun

recon

parent 2b9d65a0
......@@ -10,6 +10,9 @@ namespace ygo {
unsigned DuelClient::connect_state = 0;
unsigned char DuelClient::response_buf[64];
unsigned char DuelClient::response_len = 0;
unsigned int DuelClient::watching = 0;
unsigned char DuelClient::selftype = 0;
bool DuelClient::is_host = false;
event_base* DuelClient::client_base = 0;
bufferevent* DuelClient::client_bev = 0;
char DuelClient::duel_client_read[0x2000];
......@@ -139,9 +142,6 @@ int DuelClient::ClientThread(void* param) {
}
void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
char* pdata = data;
static unsigned int watching = 0;
static unsigned char selftype = 0;
static bool is_host = false;
unsigned char pktType = BufferIO::ReadUInt8(pdata);
switch(pktType) {
case STOC_GAME_MSG: {
......@@ -191,10 +191,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
case STOC_HAND_RESULT: {
STOC_HandResult* pkt = (STOC_HandResult*)pdata;
mainGame->showcard = 100;
mainGame->showcardcode = pkt->res1 + (pkt->res2 << 16);
mainGame->showcarddif = 50;
mainGame->showcardp = 0;
mainGame->showcard = 100;
mainGame->WaitFrameSignal(60);
break;
}
......@@ -272,13 +272,20 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
case STOC_DUEL_START: {
mainGame->HideElement(mainGame->wHostSingle);
mainGame->WaitFrameSignal(10);
mainGame->WaitFrameSignal(11);
mainGame->gMutex.Lock();
mainGame->dField.Clear();
mainGame->dInfo.isStarted = true;
mainGame->wCardImg->setVisible(true);
mainGame->wInfos->setVisible(true);
mainGame->device->setEventReceiver(&mainGame->dField);
if(selftype != 1) {
BufferIO::CopyWStr(mainGame->stHostSingleDuelist[0]->getText(), mainGame->dInfo.hostname, 20);
BufferIO::CopyWStr(mainGame->stHostSingleDuelist[1]->getText(), mainGame->dInfo.hostname, 20);
} else {
BufferIO::CopyWStr(mainGame->stHostSingleDuelist[1]->getText(), mainGame->dInfo.hostname, 20);
BufferIO::CopyWStr(mainGame->stHostSingleDuelist[0]->getText(), mainGame->dInfo.hostname, 20);
}
mainGame->gMutex.Unlock();
break;
}
......
......@@ -19,6 +19,9 @@ private:
static unsigned int connect_state;
static unsigned char response_buf[64];
static unsigned char response_len;
static unsigned int watching;
static unsigned char selftype;
static bool is_host;
static event_base* client_base;
static bufferevent* client_bev;
static char duel_client_read[0x2000];
......
......@@ -22,6 +22,23 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->logParam.clear();
break;
}
case BUTTON_HAND1:
case BUTTON_HAND2:
case BUTTON_HAND3: {
mainGame->HideElement(mainGame->wHand);
CTOS_HandResult cshr;
cshr.res = id - BUTTON_HAND1;
DuelClient::SendPacketToServer(CTOS_HAND_RESULT, cshr);
break;
}
case BUTTON_FIRST:
case BUTTON_SECOND: {
mainGame->HideElement(mainGame->wFTSelect);
CTOS_TPResult cstr;
cstr.res = BUTTON_SECOND - id;
DuelClient::SendPacketToServer(CTOS_TP_RESULT, cstr);
break;
}
case BUTTON_REPLAY_START: {
if(!mainGame->dField.is_replaying)
break;
......
......@@ -733,5 +733,25 @@ void Game::ClearTextures() {
mainGame->btnCardSelect[4]->setImage();
imageManager.ClearTexture();
}
void Game::CloseDuelWindow() {
wACMessage->setVisible(false);
wANAttribute->setVisible(false);
wANCard->setVisible(false);
wANNumber->setVisible(false);
wANRace->setVisible(false);
wCardImg->setVisible(false);
wCardSelect->setVisible(false);
wCmdMenu->setVisible(false);
wFTSelect->setVisible(false);
wHand->setVisible(false);
wInfos->setVisible(false);
wMessage->setVisible(false);
wOptions->setVisible(false);
wPhase->setVisible(false);
wPosSelect->setVisible(false);
wQuery->setVisible(false);
wSelectOption->setVisible(false);
wSelectYesNo->setVisible(false);
}
}
......@@ -60,6 +60,7 @@ public:
void SaveConfig();
void ShowCardInfo(int code);
void ClearTextures();
void CloseDuelWindow();
int LocalPlayer(int player);
const wchar_t* LocalName(int local_player);
......
......@@ -106,23 +106,6 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->HideElement(mainGame->wHostSingle, false, mainGame->wLanWindow);
break;
}
case BUTTON_HAND1:
case BUTTON_HAND2:
case BUTTON_HAND3: {
mainGame->HideElement(mainGame->wHand);
CTOS_HandResult cshr;
cshr.res = id - BUTTON_HAND1;
DuelClient::SendPacketToServer(CTOS_HAND_RESULT, cshr);
break;
}
case BUTTON_FIRST:
case BUTTON_SECOND: {
mainGame->HideElement(mainGame->wFTSelect);
CTOS_TPResult cstr;
cstr.res = BUTTON_SECOND - id;
DuelClient::SendPacketToServer(CTOS_TP_RESULT, cstr);
break;
}
case BUTTON_DECK_EDIT: {
mainGame->RefreshDeck(mainGame->cbDBDecks);
if(mainGame->cbDBDecks->getSelected() != -1)
......
......@@ -254,10 +254,12 @@ void SingleDuel::HandResult(DuelPlayer* dp, unsigned char res) {
if(hand_result[0] && hand_result[1]) {
STOC_HandResult schr;
schr.res1 = hand_result[0];
schr.res1 = hand_result[1];
schr.res2 = hand_result[1];
NetServer::SendPacketToPlayer(players[0], STOC_HAND_RESULT, schr);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
NetServer::ReSendToPlayer(*oit);
schr.res1 = hand_result[1];
schr.res1 = hand_result[0];
schr.res2 = hand_result[0];
NetServer::SendPacketToPlayer(players[1], STOC_HAND_RESULT, schr);
if(hand_result[0] == hand_result[1]) {
NetServer::SendPacketToPlayer(players[0], STOC_SELECT_HAND);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment