Commit 1a754caf authored by edo9300's avatar edo9300

Update

parent 05afcad7
...@@ -127,23 +127,25 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) { ...@@ -127,23 +127,25 @@ void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
cscg.info.draw_count = _wtoi(mainGame->ebDrawCount->getText()); cscg.info.draw_count = _wtoi(mainGame->ebDrawCount->getText());
cscg.info.time_limit = _wtoi(mainGame->ebTimeLimit->getText()); cscg.info.time_limit = _wtoi(mainGame->ebTimeLimit->getText());
cscg.info.lflist = mainGame->cbLFlist->getItemData(mainGame->cbLFlist->getSelected()); cscg.info.lflist = mainGame->cbLFlist->getItemData(mainGame->cbLFlist->getSelected());
cscg.info.duel_rule = mainGame->GetMasterRule(mainGame->duel_param);
cscg.info.duel_flag = mainGame->duel_param; cscg.info.duel_flag = mainGame->duel_param;
cscg.info.no_check_deck = mainGame->chkNoCheckDeck->isChecked(); cscg.info.no_check_deck = mainGame->chkNoCheckDeck->isChecked();
cscg.info.no_shuffle_deck = mainGame->chkNoShuffleDeck->isChecked(); cscg.info.no_shuffle_deck = mainGame->chkNoShuffleDeck->isChecked();
cscg.info.sealed = mainGame->chkRules[0]->isChecked() ? 2 : 0; cscg.info.check = 2;
cscg.info.booster = mainGame->chkRules[1]->isChecked() ? 2 : 0; cscg.info.sealed = mainGame->chkRules[0]->isChecked();
cscg.info.destiny_draw = mainGame->chkRules[2]->isChecked() ? 2 : 0; cscg.info.booster = mainGame->chkRules[1]->isChecked();
cscg.info.speed = mainGame->chkRules[3]->isChecked() ? 2 : 0; cscg.info.destiny_draw = mainGame->chkRules[2]->isChecked();
cscg.info.concentration = mainGame->chkRules[4]->isChecked() ? 2 : 0; cscg.info.speed = mainGame->chkRules[3]->isChecked();
cscg.info.boss = mainGame->chkRules[5]->isChecked() ? 2 : 0; cscg.info.concentration = mainGame->chkRules[4]->isChecked();
cscg.info.city = mainGame->chkRules[6]->isChecked() ? 2 : 0; cscg.info.boss = mainGame->chkRules[5]->isChecked();
cscg.info.kingdom = mainGame->chkRules[7]->isChecked() ? 2 : 0; cscg.info.city = mainGame->chkRules[6]->isChecked();
cscg.info.dimension = mainGame->chkRules[8]->isChecked() ? 2 : 0; cscg.info.kingdom = mainGame->chkRules[7]->isChecked();
cscg.info.doubled = mainGame->chkRules[9]->isChecked() ? 2 : 0; cscg.info.dimension = mainGame->chkRules[8]->isChecked();
cscg.info.turbo2 = mainGame->chkRules[10]->isChecked() ? 2 : 0; cscg.info.doubled = mainGame->chkRules[9]->isChecked();
cscg.info.turbo1 = mainGame->chkRules[11]->isChecked() ? 2 : 0; cscg.info.turbo2 = mainGame->chkRules[10]->isChecked();
cscg.info.command = mainGame->chkRules[12]->isChecked() ? 2 : 0; cscg.info.turbo1 = mainGame->chkRules[11]->isChecked();
cscg.info.master = mainGame->chkRules[13]->isChecked() ? 2 : 0; cscg.info.command = mainGame->chkRules[12]->isChecked();
cscg.info.master = mainGame->chkRules[13]->isChecked();
cscg.info.rule_count = 0; cscg.info.rule_count = 0;
for (int i = 0; i < 14; ++i) { for (int i = 0; i < 14; ++i) {
if (mainGame->chkRules[i]->isChecked() && i != 3 && i != 11) { if (mainGame->chkRules[i]->isChecked() && i != 3 && i != 11) {
...@@ -377,122 +379,109 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -377,122 +379,109 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
str.append(msgbuf); str.append(msgbuf);
myswprintf(msgbuf, L"%ls%d\n", dataManager.GetSysString(1233), pkt->info.draw_count); myswprintf(msgbuf, L"%ls%d\n", dataManager.GetSysString(1233), pkt->info.draw_count);
str.append(msgbuf); str.append(msgbuf);
uint32 rule = 5; int rule;
mainGame->dInfo.duel_rule = 2; if (pkt->info.check == 2) {
if(pkt->info.duel_flag == MASTER_RULE_1) { mainGame->dInfo.duel_rule = mainGame->GetMasterRule(pkt->info.duel_flag, &rule);
rule = 1; } else {
mainGame->dInfo.duel_rule = 1; rule = pkt->info.duel_rule;
} if (rule == 0) {
else if(pkt->info.duel_flag == MASTER_RULE_2) {
rule = 2;
mainGame->dInfo.duel_rule = 2;
}
else if(pkt->info.duel_flag == MASTER_RULE_3) {
rule = 3;
mainGame->dInfo.duel_rule = 3;
}
else if(pkt->info.duel_flag == MASTER_RULE_4) {
rule = 4;
mainGame->dInfo.duel_rule = 4;
}
else if((pkt->info.duel_flag) & DUEL_EMZONE) {
rule = 5;
mainGame->dInfo.duel_rule = 4;
}
else if((pkt->info.duel_flag) & DUEL_PZONE) {
rule = 5;
mainGame->dInfo.duel_rule = 3; mainGame->dInfo.duel_rule = 3;
rule = 3;
} else
mainGame->dInfo.duel_rule = rule;
} }
if(rule == 5) { if (rule == 5) {
uint32 flag = pkt->info.duel_flag & 0xffff, filter = 0x100; uint32 filter = 0x100;
for (int i = 0; i < 5; ++i, filter <<= 1) for (int i = 0; i < 5; ++i, filter <<= 1)
if (flag & filter) { if (pkt->info.duel_flag & filter) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1265 + i)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1265 + i));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
} else if(rule != DEFAULT_DUEL_RULE) { } else if (rule != DEFAULT_DUEL_RULE) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1260 + rule - 1)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1260 + rule - 1));
str.append(msgbuf); str.append(msgbuf);
} }
if(pkt->info.no_check_deck) { if(pkt->info.check == 2) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1229)); if (pkt->info.destiny_draw) {
str.append(msgbuf);
}
if(pkt->info.no_shuffle_deck) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1230));
str.append(msgbuf);
}
if(pkt->info.destiny_draw==2) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1134)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1134));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.sealed == 2) { if (pkt->info.sealed) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1132)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1132));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.booster == 2) { if (pkt->info.booster) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1133)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1133));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.speed == 2) { if (pkt->info.speed) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1135)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1135));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.concentration == 2) { if (pkt->info.concentration) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1136)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1136));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.boss == 2) { if (pkt->info.boss) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1137)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1137));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.city == 2) { if (pkt->info.city) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1138)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1138));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.kingdom == 2) { if (pkt->info.kingdom) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1139)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1139));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.dimension == 2) { if (pkt->info.dimension) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1140)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1140));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.doubled == 2) { if (pkt->info.doubled) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1141)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1141));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.turbo2 == 2) { if (pkt->info.turbo2) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1142)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1142));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.turbo1 == 2) { if (pkt->info.turbo1) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1143)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1143));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.command == 2) { if (pkt->info.command) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1144)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1144));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
if(pkt->info.master == 2) { if (pkt->info.master) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1145)); myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1145));
str2.append(msgbuf); str2.append(msgbuf);
host2 = true; host2 = true;
} }
}
if(pkt->info.no_check_deck) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1229));
str.append(msgbuf);
}
if(pkt->info.no_shuffle_deck) {
myswprintf(msgbuf, L"*%ls\n", dataManager.GetSysString(1230));
str.append(msgbuf);
}
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
if(pkt->info.mode == 2) { if(pkt->info.mode == 2) {
mainGame->dInfo.isTag = true; mainGame->dInfo.isTag = true;
...@@ -530,10 +519,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -530,10 +519,10 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->RefreshDeck(mainGame->cbDeckSelect); mainGame->RefreshDeck(mainGame->cbDeckSelect);
mainGame->RefreshDeck(mainGame->cbDeckSelect2); mainGame->RefreshDeck(mainGame->cbDeckSelect2);
mainGame->cbDeckSelect->setEnabled(true); mainGame->cbDeckSelect->setEnabled(true);
if (pkt->info.doubled == 2) { if (pkt->info.check == 2 && pkt->info.doubled) {
mainGame->cbDeckSelect2->setVisible(true); mainGame->cbDeckSelect2->setVisible(true);
mainGame->cbDeckSelect2->setEnabled(true); mainGame->cbDeckSelect2->setEnabled(true);
}else{ } else {
mainGame->cbDeckSelect2->setVisible(false); mainGame->cbDeckSelect2->setVisible(false);
mainGame->cbDeckSelect2->setEnabled(false); mainGame->cbDeckSelect2->setEnabled(false);
} }
...@@ -546,7 +535,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -546,7 +535,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->ShowElement(mainGame->wHostPrepare2); mainGame->ShowElement(mainGame->wHostPrepare2);
mainGame->wChat->setVisible(true); mainGame->wChat->setVisible(true);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
mainGame->dInfo.speed = (pkt->info.speed == 2) ? 1 : 0; mainGame->dInfo.speed = (pkt->info.check == 2 && pkt->info.speed) ? 1 : 0;
watching = 0; watching = 0;
connect_state |= 0x4; connect_state |= 0x4;
break; break;
...@@ -3880,16 +3869,12 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) { ...@@ -3880,16 +3869,12 @@ void DuelClient::BroadcastReply(evutil_socket_t fd, short events, void * arg) {
myswprintf(msgbuf, L"%X.0%X.%X", pHP->version >> 12, (pHP->version >> 4) & 0xff, pHP->version & 0xf); myswprintf(msgbuf, L"%X.0%X.%X", pHP->version >> 12, (pHP->version >> 4) & 0xff, pHP->version & 0xf);
hoststr.append(msgbuf); hoststr.append(msgbuf);
hoststr.append(L"]["); hoststr.append(L"][");
int rule = 5; int rule;
if (pHP->host.duel_flag == MASTER_RULE_1) if(pHP->host.check == 2) {
rule = 1; mainGame->GetMasterRule(pHP->host.duel_flag, &rule);
else if (pHP->host.duel_flag == MASTER_RULE_2) } else
rule = 2; rule = pHP->host.duel_rule;
else if (pHP->host.duel_flag == MASTER_RULE_3) if(rule == 5)
rule = 3;
else if (pHP->host.duel_flag == MASTER_RULE_4)
rule = 4;
if (rule == 5)
myswprintf(msgbuf, L"Custom MR"); myswprintf(msgbuf, L"Custom MR");
else else
myswprintf(msgbuf, L"MR %d", (rule == 0) ? 3 : rule); myswprintf(msgbuf, L"MR %d", (rule == 0) ? 3 : rule);
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "duelclient.h" #include "duelclient.h"
#include "netserver.h" #include "netserver.h"
#include "single_mode.h" #include "single_mode.h"
#include "../ocgcore/duel.h"
#include <sstream> #include <sstream>
#include "utils.h" #include "utils.h"
...@@ -1395,6 +1396,44 @@ int Game::LocalPlayer(int player) { ...@@ -1395,6 +1396,44 @@ int Game::LocalPlayer(int player) {
const wchar_t* Game::LocalName(int local_player) { const wchar_t* Game::LocalName(int local_player) {
return local_player == 0 ? dInfo.hostname : dInfo.clientname; return local_player == 0 ? dInfo.hostname : dInfo.clientname;
} }
int Game::GetMasterRule(uint32 param, int* truerule) {
switch(param) {
case MASTER_RULE_1: {
if (truerule)
*truerule = 1;
return 1;
break;
}
case MASTER_RULE_2: {
if (truerule)
*truerule = 2;
return 2;
break;
}
case MASTER_RULE_3: {
if (truerule)
*truerule = 3;
return 3;
break;
}
case MASTER_RULE_4: {
if (truerule)
*truerule = 4;
return 4;
break;
}
default: {
if (truerule)
*truerule = 5;
if(param & DUEL_EMZONE)
return 4;
else if (param & DUEL_PZONE)
return 3;
else
return 2;
}
}
}
void Game::OnResize() void Game::OnResize()
{ {
wMainMenu->setRelativePosition(ResizeWin(370, 200, 650, 415)); wMainMenu->setRelativePosition(ResizeWin(370, 200, 650, 415));
......
...@@ -126,6 +126,7 @@ public: ...@@ -126,6 +126,7 @@ public:
int LocalPlayer(int player); int LocalPlayer(int player);
const wchar_t* LocalName(int local_player); const wchar_t* LocalName(int local_player);
int GetMasterRule(uint32 param, int* truerule = 0);
bool HasFocus(EGUI_ELEMENT_TYPE type) const { bool HasFocus(EGUI_ELEMENT_TYPE type) const {
irr::gui::IGUIElement* focus = env->getFocus(); irr::gui::IGUIElement* focus = env->getFocus();
......
...@@ -15,27 +15,29 @@ struct HostInfo { ...@@ -15,27 +15,29 @@ struct HostInfo {
unsigned int lflist; unsigned int lflist;
unsigned char rule; unsigned char rule;
unsigned char mode; unsigned char mode;
unsigned int duel_flag; unsigned char duel_rule;
bool no_check_deck; bool no_check_deck;
bool no_shuffle_deck; bool no_shuffle_deck;
unsigned int start_lp; unsigned int start_lp;
unsigned char start_hand; unsigned char start_hand;
unsigned char draw_count; unsigned char draw_count;
unsigned short time_limit; unsigned short time_limit;
int destiny_draw; unsigned char check;
int sealed; unsigned int duel_flag;
int booster; bool destiny_draw;
int speed; bool sealed;
int concentration; bool booster;
int boss; bool speed;
int city; bool concentration;
int kingdom; bool boss;
int dimension; bool city;
int turbo1; bool kingdom;
int turbo2; bool dimension;
int doubled; bool turbo1;
int command; bool turbo2;
int master; bool doubled;
bool command;
bool master;
int rule_count; int rule_count;
}; };
struct HostPacket { struct HostPacket {
......
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