Commit 1ed80e02 authored by argon.sun's avatar argon.sun

recon

parent a74e5e5b
...@@ -46,7 +46,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -46,7 +46,6 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame->cbDBDecks->setSelected(sel); mainGame->cbDBDecks->setSelected(sel);
else { else {
mainGame->cbDBDecks->addItem(dname); mainGame->cbDBDecks->addItem(dname);
mainGame->cbDeckSel->addItem(dname);
mainGame->cbDBDecks->setSelected(mainGame->cbDBDecks->getItemCount() - 1); mainGame->cbDBDecks->setSelected(mainGame->cbDBDecks->getItemCount() - 1);
} }
mainGame->deckManager.SaveDeck(mainGame->deckManager.deckhost, dname); mainGame->deckManager.SaveDeck(mainGame->deckManager.deckhost, dname);
......
...@@ -88,60 +88,60 @@ bool Game::Initialize() { ...@@ -88,60 +88,60 @@ bool Game::Initialize() {
btnCreateHost = env->addButton(rect<s32>(460, 25, 570, 50), wLanWindow, BUTTON_CREATE_HOST, dataManager.GetSysString(1224)); btnCreateHost = env->addButton(rect<s32>(460, 25, 570, 50), wLanWindow, BUTTON_CREATE_HOST, dataManager.GetSysString(1224));
wLanWindow->setVisible(false); wLanWindow->setVisible(false);
//create host //create host
wHostWindow = env->addWindow(rect<s32>(320, 100, 700, 520), false, dataManager.GetSysString(1224)); wCreateHost = env->addWindow(rect<s32>(320, 100, 700, 520), false, dataManager.GetSysString(1224));
wHostWindow->getCloseButton()->setVisible(false); wCreateHost->getCloseButton()->setVisible(false);
env->addStaticText(dataManager.GetSysString(1225), rect<s32>(20, 30, 220, 50), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1225), rect<s32>(20, 30, 220, 50), false, false, wCreateHost);
cbRule = env->addComboBox(rect<s32>(140, 25, 300, 50), wHostWindow); cbRule = env->addComboBox(rect<s32>(140, 25, 300, 50), wCreateHost);
cbRule->addItem(dataManager.GetSysString(1240)); cbRule->addItem(dataManager.GetSysString(1240));
cbRule->addItem(dataManager.GetSysString(1241)); cbRule->addItem(dataManager.GetSysString(1241));
cbRule->addItem(dataManager.GetSysString(1242)); cbRule->addItem(dataManager.GetSysString(1242));
env->addStaticText(dataManager.GetSysString(1226), rect<s32>(20, 60, 220, 80), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1226), rect<s32>(20, 60, 220, 80), false, false, wCreateHost);
cbLFlist = env->addComboBox(rect<s32>(140, 55, 300, 80), wHostWindow); cbLFlist = env->addComboBox(rect<s32>(140, 55, 300, 80), wCreateHost);
for(int i = 0; i < deckManager._lfList.size(); ++i) for(int i = 0; i < deckManager._lfList.size(); ++i)
cbLFlist->addItem(deckManager._lfList[i].listName); cbLFlist->addItem(deckManager._lfList[i].listName);
env->addStaticText(dataManager.GetSysString(1227), rect<s32>(20, 90, 220, 110), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1227), rect<s32>(20, 90, 220, 110), false, false, wCreateHost);
cbMatchMode = env->addComboBox(rect<s32>(140, 85, 300, 110), wHostWindow); cbMatchMode = env->addComboBox(rect<s32>(140, 85, 300, 110), wCreateHost);
cbMatchMode->addItem(dataManager.GetSysString(1243)); cbMatchMode->addItem(dataManager.GetSysString(1243));
cbMatchMode->addItem(dataManager.GetSysString(1244)); cbMatchMode->addItem(dataManager.GetSysString(1244));
env->addStaticText(dataManager.GetSysString(1228), rect<s32>(20, 120, 320, 140), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1228), rect<s32>(20, 120, 320, 140), false, false, wCreateHost);
chkNoCheckDeck = env->addCheckBox(false, rect<s32>(20, 150, 320, 170), wHostWindow, -1, dataManager.GetSysString(1229)); chkNoCheckDeck = env->addCheckBox(false, rect<s32>(20, 150, 320, 170), wCreateHost, -1, dataManager.GetSysString(1229));
chkNoShuffleDeck = env->addCheckBox(false, rect<s32>(20, 180, 320, 200), wHostWindow, -1, dataManager.GetSysString(1230)); chkNoShuffleDeck = env->addCheckBox(false, rect<s32>(20, 180, 320, 200), wCreateHost, -1, dataManager.GetSysString(1230));
env->addStaticText(dataManager.GetSysString(1231), rect<s32>(20, 210, 320, 230), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1231), rect<s32>(20, 210, 320, 230), false, false, wCreateHost);
myswprintf(dataManager.strBuffer, L"%d", 8000); myswprintf(dataManager.strBuffer, L"%d", 8000);
ebStartLP = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 205, 220, 230), true, wHostWindow); ebStartLP = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 205, 220, 230), true, wCreateHost);
ebStartLP->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebStartLP->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
env->addStaticText(dataManager.GetSysString(1232), rect<s32>(20, 240, 320, 260), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1232), rect<s32>(20, 240, 320, 260), false, false, wCreateHost);
myswprintf(dataManager.strBuffer, L"%d", 5); myswprintf(dataManager.strBuffer, L"%d", 5);
ebStartHand = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 235, 220, 260), true, wHostWindow); ebStartHand = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 235, 220, 260), true, wCreateHost);
ebStartHand->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebStartHand->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
env->addStaticText(dataManager.GetSysString(1233), rect<s32>(20, 270, 320, 290), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1233), rect<s32>(20, 270, 320, 290), false, false, wCreateHost);
myswprintf(dataManager.strBuffer, L"%d", 1); myswprintf(dataManager.strBuffer, L"%d", 1);
ebDrawCount = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 265, 220, 290), true, wHostWindow); ebDrawCount = env->addEditBox(dataManager.strBuffer, rect<s32>(140, 265, 220, 290), true, wCreateHost);
ebDrawCount->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebDrawCount->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
env->addStaticText(dataManager.GetSysString(1234), rect<s32>(10, 360, 220, 380), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1234), rect<s32>(10, 360, 220, 380), false, false, wCreateHost);
ebServerName = env->addEditBox(gameConf.gamename, rect<s32>(110, 355, 250, 380), true, wHostWindow); ebServerName = env->addEditBox(gameConf.gamename, rect<s32>(110, 355, 250, 380), true, wCreateHost);
ebServerName->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebServerName->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
env->addStaticText(dataManager.GetSysString(1235), rect<s32>(10, 390, 220, 410), false, false, wHostWindow); env->addStaticText(dataManager.GetSysString(1235), rect<s32>(10, 390, 220, 410), false, false, wCreateHost);
ebServerPass = env->addEditBox(L"", rect<s32>(110, 385, 250, 410), true, wHostWindow); ebServerPass = env->addEditBox(L"", rect<s32>(110, 385, 250, 410), true, wCreateHost);
ebServerPass->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebServerPass->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
btnHostConfirm = env->addButton(rect<s32>(260, 355, 370, 380), wHostWindow, BUTTON_HOST_CONFIRM, dataManager.GetSysString(1211)); btnHostConfirm = env->addButton(rect<s32>(260, 355, 370, 380), wCreateHost, BUTTON_HOST_CONFIRM, dataManager.GetSysString(1211));
btnHostCancel = env->addButton(rect<s32>(260, 385, 370, 410), wHostWindow, BUTTON_HOST_CANCEL, dataManager.GetSysString(1212)); btnHostCancel = env->addButton(rect<s32>(260, 385, 370, 410), wCreateHost, BUTTON_HOST_CANCEL, dataManager.GetSysString(1212));
wHostWindow->setVisible(false); wCreateHost->setVisible(false);
/* chkNoCheckDeck = env->addCheckBox(false, rect<s32>(10, 10, 210, 30), tabLanS, -1, L"不检查卡组"); //create host
wHostSingle = env->addWindow(rect<s32>(220, 100, 800, 520), false, dataManager.GetSysString(1245));
lstReplayList = env->addListBox(rect<s32>(10, 10, 460, 190), tabReplay, LISTBOX_REPLAY_LIST, true); wHostSingle->getCloseButton()->setVisible(false);
lstReplayList->setItemHeight(18); btnHostSingleDuelist = env->addButton(rect<s32>(10, 30, 110, 55), wHostSingle, BUTTON_HS_DUELIST, dataManager.GetSysString(1246));
btnLoadReplay = env->addButton(rect<s32>(180, 200, 280, 225), tabReplay, BUTTON_LOAD_REPLAY, L"载入录像"); stHostSingleDuelist[0] = env->addStaticText(L"", rect<s32>(120, 30, 320, 50), true, false, wHostSingle);
env->addStaticText(L"昵称:", rect<s32>(10, 30, 90, 50), false, false, wModeSelection); stHostSingleDuelist[1] = env->addStaticText(L"", rect<s32>(120, 55, 320, 75), true, false, wHostSingle);
ebUsername = env->addEditBox(L"", rect<s32>(80, 25, 240, 50), true, wModeSelection); chkHostSingleReady[0] = env->addCheckBox(false, rect<s32>(330, 30, 350, 50), wHostSingle, -1, L"");
ebUsername->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); chkHostSingleReady[0]->setEnabled(false);
env->addStaticText(L"卡组:", rect<s32>(250, 30, 350, 50), false, false, wModeSelection); chkHostSingleReady[1] = env->addCheckBox(false, rect<s32>(330, 55, 350, 75), wHostSingle, -1, L"");
cbDeckSel = env->addComboBox(rect<s32>(310, 25, 410, 50), wModeSelection, -1); chkHostSingleReady[1]->setEnabled(false);
RefreshDeck(cbDeckSel); btnHostSingleOB = env->addButton(rect<s32>(10, 80, 110, 105), wHostSingle, BUTTON_HS_OBSERVER, dataManager.GetSysString(1247));
btnDeckEdit = env->addButton(rect<s32>(420, 25, 470, 50), wModeSelection, BUTTON_DECK_EDIT, L"编辑"); for(int i = 0; i < 8; ++i)
stModeStatus = env->addStaticText(L"", rect<s32>(20, 360, 350, 380), false, false, wModeSelection); stHostSingleOB[i] = env->addStaticText(L"", rect<s32>(120, 80 + 25 * i, 320, 100 + 25 * i), true, false, wHostSingle);
btnHostSingleStart = env->addButton(rect<s32>(460, 355, 570, 380), wHostSingle, BUTTON_HS_START, dataManager.GetSysString(1215));
*/ btnHostSingleCancel = env->addButton(rect<s32>(460, 385, 570, 410), wHostSingle, BUTTON_HS_CANCEL, dataManager.GetSysString(1212));
//img //img
wCardImg = env->addStaticText(L"", rect<s32>(1, 1, 199, 273), true, false, 0, -1, true); wCardImg = env->addStaticText(L"", rect<s32>(1, 1, 199, 273), true, false, 0, -1, true);
wCardImg->setBackgroundColor(0xc0c0c0c0); wCardImg->setBackgroundColor(0xc0c0c0c0);
......
...@@ -216,6 +216,7 @@ public: ...@@ -216,6 +216,7 @@ public:
irr::gui::IGUIButton* btnTestMode; irr::gui::IGUIButton* btnTestMode;
irr::gui::IGUIButton* btnDeckEdit; irr::gui::IGUIButton* btnDeckEdit;
irr::gui::IGUIButton* btnModeExit; irr::gui::IGUIButton* btnModeExit;
//lan
irr::gui::IGUIWindow* wLanWindow; irr::gui::IGUIWindow* wLanWindow;
irr::gui::IGUIEditBox* ebNickName; irr::gui::IGUIEditBox* ebNickName;
irr::gui::IGUIListBox* lstHostList; irr::gui::IGUIListBox* lstHostList;
...@@ -225,7 +226,8 @@ public: ...@@ -225,7 +226,8 @@ public:
irr::gui::IGUIButton* btnJoinHost; irr::gui::IGUIButton* btnJoinHost;
irr::gui::IGUIButton* btnJoinCancel; irr::gui::IGUIButton* btnJoinCancel;
irr::gui::IGUIButton* btnCreateHost; irr::gui::IGUIButton* btnCreateHost;
irr::gui::IGUIWindow* wHostWindow; //create host
irr::gui::IGUIWindow* wCreateHost;
irr::gui::IGUIComboBox* cbLFlist; irr::gui::IGUIComboBox* cbLFlist;
irr::gui::IGUIComboBox* cbMatchMode; irr::gui::IGUIComboBox* cbMatchMode;
irr::gui::IGUIComboBox* cbRule; irr::gui::IGUIComboBox* cbRule;
...@@ -238,12 +240,21 @@ public: ...@@ -238,12 +240,21 @@ public:
irr::gui::IGUICheckBox* chkNoShuffleDeck; irr::gui::IGUICheckBox* chkNoShuffleDeck;
irr::gui::IGUIButton* btnHostConfirm; irr::gui::IGUIButton* btnHostConfirm;
irr::gui::IGUIButton* btnHostCancel; irr::gui::IGUIButton* btnHostCancel;
//host(single)
irr::gui::IGUIWindow* wHostSingle;
irr::gui::IGUIButton* btnHostSingleDuelist;
irr::gui::IGUIButton* btnHostSingleOB;
irr::gui::IGUIStaticText* stHostSingleDuelist[2];
irr::gui::IGUIStaticText* stHostSingleOB[8];
irr::gui::IGUIStaticText* stHostSingleRule;
irr::gui::IGUICheckBox* chkHostSingleReady[2];
irr::gui::IGUIComboBox* cbDeckSelect;
irr::gui::IGUIButton* btnHostSingleReady;
irr::gui::IGUIButton* btnHostSingleStart;
irr::gui::IGUIButton* btnHostSingleCancel;
//replay
irr::gui::IGUIListBox* lstReplayList; irr::gui::IGUIListBox* lstReplayList;
irr::gui::IGUIButton* btnLoadReplay; irr::gui::IGUIButton* btnLoadReplay;
irr::gui::IGUIEditBox* ebUsername;
irr::gui::IGUIComboBox* cbDeckSel;
irr::gui::IGUIStaticText* stModeStatus;
irr::gui::IGUIComboBox* cbIPList;
//message //message
irr::gui::IGUIWindow* wMessage; irr::gui::IGUIWindow* wMessage;
irr::gui::IGUIStaticText* stMessage; irr::gui::IGUIStaticText* stMessage;
...@@ -376,61 +387,66 @@ extern Game* mainGame; ...@@ -376,61 +387,66 @@ extern Game* mainGame;
#define BUTTON_CREATE_HOST 113 #define BUTTON_CREATE_HOST 113
#define BUTTON_HOST_CONFIRM 114 #define BUTTON_HOST_CONFIRM 114
#define BUTTON_HOST_CANCEL 115 #define BUTTON_HOST_CANCEL 115
#define BUTTON_MSG_OK 150 #define BUTTON_HS_DUELIST 120
#define BUTTON_YES 151 #define BUTTON_HS_OBSERVER 121
#define BUTTON_NO 152 #define BUTTON_HS_READY 122
#define BUTTON_POS_AU 160 #define BUTTON_HS_START 123
#define BUTTON_POS_AD 161 #define BUTTON_HS_CANCEL 124
#define BUTTON_POS_DU 162 #define BUTTON_MSG_OK 200
#define BUTTON_POS_DD 163 #define BUTTON_YES 201
#define BUTTON_OPTION_PREV 170 #define BUTTON_NO 202
#define BUTTON_OPTION_NEXT 171 #define BUTTON_POS_AU 210
#define BUTTON_OPTION_OK 172 #define BUTTON_POS_AD 211
#define BUTTON_CARD_0 180 #define BUTTON_POS_DU 212
#define BUTTON_CARD_1 181 #define BUTTON_POS_DD 213
#define BUTTON_CARD_2 182 #define BUTTON_OPTION_PREV 220
#define BUTTON_CARD_3 183 #define BUTTON_OPTION_NEXT 221
#define BUTTON_CARD_4 184 #define BUTTON_OPTION_OK 222
#define SCROLL_CARD_SELECT 185 #define BUTTON_CARD_0 230
#define BUTTON_CARD_SEL_OK 186 #define BUTTON_CARD_1 231
#define BUTTON_CMD_ACTIVATE 190 #define BUTTON_CARD_2 232
#define BUTTON_CMD_SUMMON 191 #define BUTTON_CARD_3 233
#define BUTTON_CMD_SPSUMMON 192 #define BUTTON_CARD_4 234
#define BUTTON_CMD_MSET 193 #define SCROLL_CARD_SELECT 235
#define BUTTON_CMD_SSET 194 #define BUTTON_CARD_SEL_OK 236
#define BUTTON_CMD_REPOS 195 #define BUTTON_CMD_ACTIVATE 240
#define BUTTON_CMD_ATTACK 196 #define BUTTON_CMD_SUMMON 241
#define BUTTON_CMD_SHOWLIST 197 #define BUTTON_CMD_SPSUMMON 242
#define BUTTON_ANNUMBER_OK 200 #define BUTTON_CMD_MSET 243
#define BUTTON_ANCARD_OK 201 #define BUTTON_CMD_SSET 244
#define EDITBOX_ANCARD 202 #define BUTTON_CMD_REPOS 245
#define LISTBOX_ANCARD 203 #define BUTTON_CMD_ATTACK 246
#define CHECK_ATTRIBUTE 204 #define BUTTON_CMD_SHOWLIST 247
#define CHECK_RACE 205 #define BUTTON_ANNUMBER_OK 250
#define BUTTON_BP 210 #define BUTTON_ANCARD_OK 251
#define BUTTON_M2 211 #define EDITBOX_ANCARD 252
#define BUTTON_EP 212 #define LISTBOX_ANCARD 253
#define BUTTON_CLEAR_LOG 220 #define CHECK_ATTRIBUTE 254
#define LISTBOX_LOG 221 #define CHECK_RACE 255
#define BUTTON_CATEGORY_OK 250 #define BUTTON_BP 260
#define COMBOBOX_DBLFLIST 251 #define BUTTON_M2 261
#define COMBOBOX_DBDECKS 252 #define BUTTON_EP 262
#define BUTTON_CLEAR_DECK 253 #define BUTTON_CLEAR_LOG 270
#define BUTTON_SAVE_DECK 254 #define LISTBOX_LOG 271
#define BUTTON_SAVE_DECK_AS 255 #define BUTTON_CATEGORY_OK 300
#define BUTTON_DBEXIT 256 #define COMBOBOX_DBLFLIST 301
#define BUTTON_SORT_DECK 257 #define COMBOBOX_DBDECKS 302
#define COMBOBOX_MAINTYPE 260 #define BUTTON_CLEAR_DECK 303
#define BUTTON_EFFECT_FILTER 261 #define BUTTON_SAVE_DECK 304
#define BUTTON_START_FILTER 262 #define BUTTON_SAVE_DECK_AS 305
#define BUTTON_RESULT_FILTER 263 #define BUTTON_DBEXIT 306
#define SCROLL_FILTER 264 #define BUTTON_SORT_DECK 307
#define SCROLL_KEYWORD 265 #define COMBOBOX_MAINTYPE 310
#define BUTTON_REPLAY_START 270 #define BUTTON_EFFECT_FILTER 311
#define BUTTON_REPLAY_PAUSE 271 #define BUTTON_START_FILTER 312
#define BUTTON_REPLAY_STEP 272 #define BUTTON_RESULT_FILTER 313
#define BUTTON_REPLAY_EXIT 273 #define SCROLL_FILTER 314
#define BUTTON_REPLAY_SWAP 274 #define SCROLL_KEYWORD 315
#define BUTTON_REPLAY_SAVE 280 #define BUTTON_REPLAY_START 320
#define BUTTON_REPLAY_CANCEL 281 #define BUTTON_REPLAY_PAUSE 321
#define BUTTON_REPLAY_STEP 322
#define BUTTON_REPLAY_EXIT 323
#define BUTTON_REPLAY_SWAP 324
#define BUTTON_REPLAY_SAVE 330
#define BUTTON_REPLAY_CANCEL 331
#endif // GAME_H #endif // GAME_H
...@@ -28,14 +28,29 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -28,14 +28,29 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_CREATE_HOST: { case BUTTON_CREATE_HOST: {
mainGame->HideElement(mainGame->wLanWindow, false, mainGame->wHostWindow); mainGame->HideElement(mainGame->wLanWindow, false, mainGame->wCreateHost);
break; break;
} }
case BUTTON_HOST_CONFIRM: { case BUTTON_HOST_CONFIRM: {
break; break;
} }
case BUTTON_HOST_CANCEL: { case BUTTON_HOST_CANCEL: {
mainGame->HideElement(mainGame->wHostWindow, false, mainGame->wLanWindow); mainGame->HideElement(mainGame->wCreateHost, false, mainGame->wLanWindow);
break;
}
case BUTTON_HS_DUELIST: {
break;
}
case BUTTON_HS_OBSERVER: {
break;
}
case BUTTON_HS_READY: {
break;
}
case BUTTON_HS_START: {
break;
}
case BUTTON_HS_CANCEL: {
break; break;
} }
case BUTTON_DECK_EDIT: { case BUTTON_DECK_EDIT: {
...@@ -166,6 +181,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -166,6 +181,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
} }
break; break;
} }
case irr::EET_USER_EVENT: {
break;
}
} }
return false; return false;
} }
......
...@@ -211,19 +211,11 @@ int Game::EngineThread(void* pd) { ...@@ -211,19 +211,11 @@ int Game::EngineThread(void* pd) {
mainGame->lastReplay.BeginRecord(); mainGame->lastReplay.BeginRecord();
mainGame->lastReplay.WriteHeader(rh); mainGame->lastReplay.WriteHeader(rh);
mainGame->rnd.reset(seed); mainGame->rnd.reset(seed);
if(mainGame->netManager.hInfo.no_shuffle_player || mainGame->rnd.real() < 0.5) { pdInfo->is_host_player[0] = false;
pdInfo->is_host_player[0] = true; pdInfo->is_host_player[1] = true;
pdInfo->is_host_player[1] = false; pdInfo->is_first_turn = false;
pdInfo->is_first_turn = true; mainGame->lastReplay.WriteData(pdInfo->clientname, 40, false);
mainGame->lastReplay.WriteData(pdInfo->hostname, 40, false); mainGame->lastReplay.WriteData(pdInfo->hostname, 40, false);
mainGame->lastReplay.WriteData(pdInfo->clientname, 40, false);
} else {
pdInfo->is_host_player[0] = false;
pdInfo->is_host_player[1] = true;
pdInfo->is_first_turn = false;
mainGame->lastReplay.WriteData(pdInfo->clientname, 40, false);
mainGame->lastReplay.WriteData(pdInfo->hostname, 40, false);
}
if(!mainGame->netManager.hInfo.no_shuffle_deck) { if(!mainGame->netManager.hInfo.no_shuffle_deck) {
for(int i = 0; i < mainGame->deckManager.deckhost.main.size(); ++i) { for(int i = 0; i < mainGame->deckManager.deckhost.main.size(); ++i) {
int swap = mainGame->rnd.real() * mainGame->deckManager.deckhost.main.size(); int swap = mainGame->rnd.real() * mainGame->deckManager.deckhost.main.size();
...@@ -251,10 +243,6 @@ int Game::EngineThread(void* pd) { ...@@ -251,10 +243,6 @@ int Game::EngineThread(void* pd) {
set_player_info(pdInfo->pDuel, 0, hi.start_lp, hi.start_hand, hi.draw_count); set_player_info(pdInfo->pDuel, 0, hi.start_lp, hi.start_hand, hi.draw_count);
set_player_info(pdInfo->pDuel, 1, hi.start_lp, hi.start_hand, hi.draw_count); set_player_info(pdInfo->pDuel, 1, hi.start_lp, hi.start_hand, hi.draw_count);
int opt = 0; int opt = 0;
if(mainGame->netManager.hInfo.no_chain_hint)
opt |= DUEL_NO_CHAIN_HINT;
if(mainGame->netManager.hInfo.attack_ft)
opt |= DUEL_ATTACK_FIRST_TURN;
mainGame->lastReplay.WriteInt32(hi.start_lp, false); mainGame->lastReplay.WriteInt32(hi.start_lp, false);
mainGame->lastReplay.WriteInt32(hi.start_hand, false); mainGame->lastReplay.WriteInt32(hi.start_hand, false);
mainGame->lastReplay.WriteInt32(hi.draw_count, false); mainGame->lastReplay.WriteInt32(hi.draw_count, false);
...@@ -3019,7 +3007,6 @@ int Game::ReplayThread(void* pd) { ...@@ -3019,7 +3007,6 @@ int Game::ReplayThread(void* pd) {
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->stModeStatus->setText(L"");
mainGame->btnReplayStart->setVisible(false); mainGame->btnReplayStart->setVisible(false);
mainGame->btnReplayPause->setVisible(true); mainGame->btnReplayPause->setVisible(true);
mainGame->btnReplayStep->setVisible(false); mainGame->btnReplayStep->setVisible(false);
......
...@@ -19,11 +19,6 @@ bool NetManager::CreateHost(int ipindex) { ...@@ -19,11 +19,6 @@ bool NetManager::CreateHost(int ipindex) {
hInfo.start_lp = _wtoi(mainGame->ebStartLP->getText()); hInfo.start_lp = _wtoi(mainGame->ebStartLP->getText());
hInfo.start_hand = _wtoi(mainGame->ebStartHand->getText()); hInfo.start_hand = _wtoi(mainGame->ebStartHand->getText());
hInfo.draw_count = _wtoi(mainGame->ebDrawCount->getText()); hInfo.draw_count = _wtoi(mainGame->ebDrawCount->getText());
hInfo.is_match = mainGame->cbMatchMode->getSelected() == 0 ? false : true;
hInfo.lfindex = mainGame->cbLFlist->getSelected();
for(wp = 0, pstr = (wchar_t*)mainGame->cbLFlist->getItem(mainGame->cbLFlist->getSelected()); wp < 19 && pstr[wp]; ++wp)
hInfo.lflist[wp] = pstr[wp];
hInfo.lflist[wp] = 0;
sBHost = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); sBHost = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(sBHost == INVALID_SOCKET) if(sBHost == INVALID_SOCKET)
return false; return false;
...@@ -217,8 +212,7 @@ int NetManager::BroadcastClient(void* np) { ...@@ -217,8 +212,7 @@ int NetManager::BroadcastClient(void* np) {
std::vector<HostInfo>::iterator it; std::vector<HostInfo>::iterator it;
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
for(it = net->hosts.begin(); it != net->hosts.end(); ++it) { for(it = net->hosts.begin(); it != net->hosts.end(); ++it) {
if(!it->no_check_deck && !it->no_shuffle_deck && !it->no_shuffle_deck && !it->attack_ft && !it->no_chain_hint if(!it->no_check_deck && !it->no_shuffle_deck && it->start_lp == 8000 && it->start_hand == 5 && it->draw_count == 1)
&& it->start_lp == 8000 && it->start_hand == 5 && it->draw_count == 1)
mode = L"标准设定"; mode = L"标准设定";
else mode = L"自定义设定"; else mode = L"自定义设定";
} }
...@@ -256,8 +250,7 @@ int NetManager::ListenThread(void* np) { ...@@ -256,8 +250,7 @@ int NetManager::ListenThread(void* np) {
continue; continue;
} }
int mode = ReadInt16(pbuf); int mode = ReadInt16(pbuf);
if(mode == 1 && (net->hInfo.no_chain_hint || net->hInfo.no_check_deck || net->hInfo.no_shuffle_deck || net->hInfo.no_shuffle_player || net->hInfo.attack_ft if(mode == 1 && (net->hInfo.no_check_deck || net->hInfo.no_shuffle_deck || net->hInfo.start_lp != 8000 || net->hInfo.start_hand != 5 || net->hInfo.draw_count != 1 )) {
|| net->hInfo.start_lp != 8000 || net->hInfo.start_hand != 5 || net->hInfo.draw_count != 1 )) {
psbuf = net->send_buf; psbuf = net->send_buf;
WriteInt8(psbuf, 0x4); WriteInt8(psbuf, 0x4);
send(net->sRemote, net->send_buf, 1, 0); send(net->sRemote, net->send_buf, 1, 0);
...@@ -290,22 +283,13 @@ int NetManager::ListenThread(void* np) { ...@@ -290,22 +283,13 @@ int NetManager::ListenThread(void* np) {
int maincount = ReadInt16(pbuf); int maincount = ReadInt16(pbuf);
int sidecount = ReadInt16(pbuf); int sidecount = ReadInt16(pbuf);
mainGame->deckManager.LoadDeck(mainGame->deckManager.deckclient, (int*)pbuf, maincount, sidecount); mainGame->deckManager.LoadDeck(mainGame->deckManager.deckclient, (int*)pbuf, maincount, sidecount);
if(!net->hInfo.no_check_deck && !mainGame->deckManager.CheckLFList(mainGame->deckManager.deckclient, net->hInfo.lfindex)) {
psbuf = net->send_buf;
WriteInt8(psbuf, 0x2);
send(net->sRemote, net->send_buf, 1, 0);
closesocket(net->sRemote);
net->sRemote = accept(net->sListen, 0, 0);
continue;
}
psbuf = net->send_buf; psbuf = net->send_buf;
WriteInt8(psbuf, 0); WriteInt8(psbuf, 0);
const wchar_t* ln = mainGame->ebUsername->getText();
int li = 0; int li = 0;
while(ln[li] && li < 19) { // while(ln[li] && li < 19) {
mainGame->dInfo.hostname[li] = ln[li]; // mainGame->dInfo.hostname[li] = ln[li];
WriteInt16(psbuf, ln[li++]); // WriteInt16(psbuf, ln[li++]);
} // }
mainGame->dInfo.hostname[li] = 0; mainGame->dInfo.hostname[li] = 0;
WriteInt16(psbuf, 0); WriteInt16(psbuf, 0);
send(net->sRemote, net->send_buf, 3 + li * 2, 0); send(net->sRemote, net->send_buf, 3 + li * 2, 0);
...@@ -317,7 +301,6 @@ int NetManager::ListenThread(void* np) { ...@@ -317,7 +301,6 @@ int NetManager::ListenThread(void* np) {
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->stModeStatus->setText(L"");
mainGame->dInfo.engLen = 0; mainGame->dInfo.engLen = 0;
mainGame->dInfo.msgLen = 0; mainGame->dInfo.msgLen = 0;
mainGame->dField.Clear(); mainGame->dField.Clear();
...@@ -341,7 +324,7 @@ int NetManager::JoinThread(void* adr) { ...@@ -341,7 +324,7 @@ int NetManager::JoinThread(void* adr) {
if(connect(pnet->sRemote, (sockaddr*)&server, sizeof(sockaddr)) == SOCKET_ERROR) { if(connect(pnet->sRemote, (sockaddr*)&server, sizeof(sockaddr)) == SOCKET_ERROR) {
closesocket(pnet->sRemote); closesocket(pnet->sRemote);
if(!mainGame->is_closing) { if(!mainGame->is_closing) {
mainGame->stModeStatus->setText(L"无法连接至主机"); // mainGame->stModeStatus->setText(L"无法连接至主机");
} }
return 0; return 0;
} }
...@@ -354,7 +337,7 @@ int NetManager::JoinThread(void* adr) { ...@@ -354,7 +337,7 @@ int NetManager::JoinThread(void* adr) {
NetManager::WriteInt16(pbuf, pname[i++]); NetManager::WriteInt16(pbuf, pname[i++]);
NetManager::WriteInt16(pbuf, 0); NetManager::WriteInt16(pbuf, 0);
i = 0; i = 0;
pname = mainGame->ebUsername->getText(); // pname = mainGame->ebUsername->getText();
while(pname[i] != 0 && i < 19) { while(pname[i] != 0 && i < 19) {
mainGame->dInfo.hostname[i] = pname[i]; mainGame->dInfo.hostname[i] = pname[i];
NetManager::WriteInt16(pbuf, pname[i++]); NetManager::WriteInt16(pbuf, pname[i++]);
...@@ -373,24 +356,7 @@ int NetManager::JoinThread(void* adr) { ...@@ -373,24 +356,7 @@ int NetManager::JoinThread(void* adr) {
int result = recv(pnet->sRemote, pnet->recv_buf, 4096, 0); int result = recv(pnet->sRemote, pnet->recv_buf, 4096, 0);
if(result == SOCKET_ERROR || pnet->recv_buf[0] != 0) { if(result == SOCKET_ERROR || pnet->recv_buf[0] != 0) {
closesocket(pnet->sRemote); closesocket(pnet->sRemote);
if(!mainGame->is_closing) {
if(result == SOCKET_ERROR)
mainGame->stModeStatus->setText(L"网络连接发生错误");
else if(pnet->recv_buf[0] == 0x1) {
wchar_t errorbuf[32];
myswprintf(errorbuf, L"当前版本(0x%X)与主机版本(0x%X)不匹配", PROTO_VERSION, (int)(*(short*)&pnet->recv_buf[1]));
mainGame->stModeStatus->setText(errorbuf);
} else if(pnet->recv_buf[0] == 0x2)
mainGame->stModeStatus->setText(L"无效卡组或者卡组不符合禁卡表规范");
else if(pnet->recv_buf[0] == 0x3)
mainGame->stModeStatus->setText(L"密码错误");
else if(pnet->recv_buf[0] == 0x4)
mainGame->stModeStatus->setText(L"主机非标准对战模式,拒绝连接");
else mainGame->stModeStatus->setText(L"未知错误");
}
return 0;
} }
mainGame->stModeStatus->setText(L"");
wchar_t* pn = (wchar_t*)&pnet->recv_buf[1]; wchar_t* pn = (wchar_t*)&pnet->recv_buf[1];
int pi = 0; int pi = 0;
while(pn[pi] && pi < 19) { while(pn[pi] && pi < 19) {
...@@ -406,7 +372,7 @@ int NetManager::JoinThread(void* adr) { ...@@ -406,7 +372,7 @@ int NetManager::JoinThread(void* adr) {
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->stModeStatus->setText(L""); // mainGame->stModeStatus->setText(L"");
mainGame->dInfo.engLen = 0; mainGame->dInfo.engLen = 0;
mainGame->dInfo.msgLen = 0; mainGame->dInfo.msgLen = 0;
mainGame->dInfo.is_local_host = false; mainGame->dInfo.is_local_host = false;
......
...@@ -13,19 +13,15 @@ struct HostInfo { ...@@ -13,19 +13,15 @@ struct HostInfo {
unsigned short version; unsigned short version;
unsigned int address; unsigned int address;
unsigned short port; unsigned short port;
wchar_t name[20]; char name[32];
unsigned char rule;
unsigned char mode;
unsigned int lflist;
bool no_check_deck; bool no_check_deck;
bool no_shuffle_deck; bool no_shuffle_deck;
bool no_shuffle_player; unsigned int start_lp;
bool attack_ft;
bool no_chain_hint;
int start_lp;
unsigned char start_hand; unsigned char start_hand;
unsigned char draw_count; unsigned char draw_count;
wchar_t lflist[20];
bool is_match;
unsigned char lfindex;
unsigned char time_limit;
}; };
struct HostRequest { struct HostRequest {
......
...@@ -177,15 +177,16 @@ ...@@ -177,15 +177,16 @@
!system 1158 查看列表 !system 1158 查看列表
#menu #menu
!system 1200 局域网模式 !system 1200 局域网模式
!system 1201 ??? !system 1201 N/A
!system 1202 观看录像 !system 1202 观看录像
!system 1203 ??? !system 1203 N/A
!system 1204 编辑卡组 !system 1204 编辑卡组
!system 1210 退出 !system 1210 退出
!system 1211 确定 !system 1211 确定
!system 1212 取消 !system 1212 取消
!system 1213 !system 1213
!system 1214 !system 1214
!system 1215 开始
!system 1220 昵称: !system 1220 昵称:
!system 1221 主机信息: !system 1221 主机信息:
!system 1222 主机密码: !system 1222 主机密码:
...@@ -207,6 +208,11 @@ ...@@ -207,6 +208,11 @@
!system 1242 世界赛 !system 1242 世界赛
!system 1243 单局模式 !system 1243 单局模式
!system 1244 比赛模式 !system 1244 比赛模式
!system 1245 决斗准备
!system 1246 决斗者
!system 1247 OB
!system 1248 卡组选择
!system 1249 准备完成
#vistory reason #vistory reason
!victory 0x1 LP变成0 !victory 0x1 LP变成0
!victory 0x2 没有卡可抽 !victory 0x2 没有卡可抽
......
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