Commit 01d3da47 authored by argon.sun's avatar argon.sun

fix

parent 636695b7
...@@ -398,6 +398,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -398,6 +398,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnBP->setVisible(false); mainGame->btnBP->setVisible(false);
mainGame->btnM2->setVisible(false); mainGame->btnM2->setVisible(false);
mainGame->btnEP->setVisible(false); mainGame->btnEP->setVisible(false);
mainGame->wChat->setVisible(true);
mainGame->imgCard->setImage(imageManager.tCover); mainGame->imgCard->setImage(imageManager.tCover);
mainGame->device->setEventReceiver(&mainGame->dField); mainGame->device->setEventReceiver(&mainGame->dField);
if(selftype > 1) { if(selftype > 1) {
...@@ -472,6 +473,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -472,6 +473,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
if(mainGame->chkIgnore1->isChecked()) if(mainGame->chkIgnore1->isChecked())
break; break;
BufferIO::CopyWStr(pkt->msg, msg, 256); BufferIO::CopyWStr(pkt->msg, msg, 256);
msg[(len - 3) / 2] = 0;
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->AddChatMsg(msg, mainGame->LocalPlayer(pkt->player)); mainGame->AddChatMsg(msg, mainGame->LocalPlayer(pkt->player));
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
...@@ -479,6 +481,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -479,6 +481,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
if(mainGame->chkIgnore2->isChecked()) if(mainGame->chkIgnore2->isChecked())
break; break;
BufferIO::CopyWStr(pkt->msg, msg, 256); BufferIO::CopyWStr(pkt->msg, msg, 256);
msg[(len - 3) / 2] = 0;
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->AddChatMsg(msg, 2); mainGame->AddChatMsg(msg, 2);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
...@@ -2021,6 +2024,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) { ...@@ -2021,6 +2024,7 @@ int DuelClient::ClientAnalyze(char* msg, unsigned int len) {
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
int code = BufferIO::ReadInt32(pbuf); int code = BufferIO::ReadInt32(pbuf);
pcard = mainGame->dField.GetCard(player, LOCATION_DECK, mainGame->dField.deck[player].size() - 1 - i); pcard = mainGame->dField.GetCard(player, LOCATION_DECK, mainGame->dField.deck[player].size() - 1 - i);
if(!mainGame->dField.deck_reversed || code)
pcard->SetCode(code); pcard->SetCode(code);
} }
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
......
...@@ -772,7 +772,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -772,7 +772,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->AddChatMsg((wchar_t*)input, 0); mainGame->AddChatMsg((wchar_t*)input, 0);
else mainGame->AddChatMsg((wchar_t*)input, 2); else mainGame->AddChatMsg((wchar_t*)input, 2);
int len = BufferIO::CopyWStr(input, msgbuf, 256); int len = BufferIO::CopyWStr(input, msgbuf, 256);
DuelClient::SendBufferToServer(CTOS_CHAT, msgbuf, len * sizeof(short)); DuelClient::SendBufferToServer(CTOS_CHAT, msgbuf, (len + 1) * sizeof(short));
mainGame->ebChatInput->setText(L""); mainGame->ebChatInput->setText(L"");
} }
break; break;
......
...@@ -441,8 +441,8 @@ bool Game::Initialize() { ...@@ -441,8 +441,8 @@ bool Game::Initialize() {
wChat = env->addWindow(rect<s32>(305, 615, 1020, 640), false, L""); wChat = env->addWindow(rect<s32>(305, 615, 1020, 640), false, L"");
wChat->getCloseButton()->setVisible(false); wChat->getCloseButton()->setVisible(false);
wChat->setDraggable(false); wChat->setDraggable(false);
// wChat->setDrawBackground(false);
wChat->setDrawTitlebar(false); wChat->setDrawTitlebar(false);
wChat->setVisible(false);
ebChatInput = env->addEditBox(L"", rect<s32>(3, 2, 710, 22), true, wChat, EDITBOX_CHAT); ebChatInput = env->addEditBox(L"", rect<s32>(3, 2, 710, 22), true, wChat, EDITBOX_CHAT);
// //
btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L""); btnLeaveGame = env->addButton(rect<s32>(205, 5, 295, 80), 0, BUTTON_LEAVE_GAME, L"");
......
...@@ -171,7 +171,7 @@ void NetServer::DisconnectPlayer(DuelPlayer* dp) { ...@@ -171,7 +171,7 @@ void NetServer::DisconnectPlayer(DuelPlayer* dp) {
void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) { void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
char* pdata = data; char* pdata = data;
unsigned char pktType = BufferIO::ReadUInt8(pdata); unsigned char pktType = BufferIO::ReadUInt8(pdata);
if((pktType != CTOS_SURRENDER) && (dp->state == 0xff || (dp->state && dp->state != pktType))) if((pktType != CTOS_SURRENDER) && (pktType != CTOS_CHAT) && (dp->state == 0xff || (dp->state && dp->state != pktType)))
return; return;
switch(pktType) { switch(pktType) {
case CTOS_RESPONSE: { case CTOS_RESPONSE: {
...@@ -189,7 +189,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) { ...@@ -189,7 +189,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
case CTOS_CHAT: { case CTOS_CHAT: {
if(!dp->game) if(!dp->game)
return; return;
duel_mode->Chat(dp, data, len); duel_mode->Chat(dp, pdata, len - 1);
break; break;
} }
case CTOS_UPDATE_DECK: { case CTOS_UPDATE_DECK: {
......
...@@ -81,7 +81,7 @@ struct STOC_TimeLimit { ...@@ -81,7 +81,7 @@ struct STOC_TimeLimit {
unsigned short left_time; unsigned short left_time;
}; };
struct STOC_Chat { struct STOC_Chat {
unsigned char player; unsigned short player;
unsigned short msg[256]; unsigned short msg[256];
}; };
struct STOC_HS_PlayerEnter { struct STOC_HS_PlayerEnter {
......
...@@ -24,18 +24,17 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) { ...@@ -24,18 +24,17 @@ void SingleDuel::Chat(DuelPlayer* dp, void* pdata, int len) {
scc.player = dp->type; scc.player = dp->type;
unsigned short* msg = (unsigned short*)pdata; unsigned short* msg = (unsigned short*)pdata;
int msglen = BufferIO::CopyWStr(msg, scc.msg, 256); int msglen = BufferIO::CopyWStr(msg, scc.msg, 256);
if(dp->type < 2) { if(dp->type > 1) {
NetServer::SendBufferToPlayer(players[0], STOC_CHAT, &scc, 1 + msglen * 2); NetServer::SendBufferToPlayer(players[0], STOC_CHAT, &scc, 4 + msglen * 2);
NetServer::SendBufferToPlayer(players[1], STOC_CHAT, &scc, 1 + msglen * 2); NetServer::ReSendToPlayer(players[1]);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
if((*pit) != dp) if((*pit) != dp)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} else { } else {
NetServer::SendBufferToPlayer(players[1 - dp->type], STOC_CHAT, &scc, 1 + msglen * 2); NetServer::SendBufferToPlayer(players[1 - dp->type], STOC_CHAT, &scc, 4 + msglen * 2);
for(auto pit = observers.begin(); pit != observers.end(); ++pit) for(auto pit = observers.begin(); pit != observers.end(); ++pit)
NetServer::ReSendToPlayer(*pit); NetServer::ReSendToPlayer(*pit);
} }
} }
void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) { void SingleDuel::JoinGame(DuelPlayer* dp, void* pdata, bool is_creater) {
if(!is_creater) { if(!is_creater) {
......
...@@ -7,5 +7,5 @@ lastdeck = test ...@@ -7,5 +7,5 @@ lastdeck = test
textfont = c:/windows/fonts/simsun.ttc 14 textfont = c:/windows/fonts/simsun.ttc 14
numfont = c:/windows/fonts/arialbd.ttf numfont = c:/windows/fonts/arialbd.ttf
serverport = 7911 serverport = 7911
lastip = 192.168.3.235 lastip = 192.168.2.100
lastport = 7911 lastport = 7911
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