Commit 86805bc8 authored by fallenstardust's avatar fallenstardust

test bool is_selectable

parent 0e2adde6
...@@ -24,6 +24,7 @@ ClientField::ClientField() { ...@@ -24,6 +24,7 @@ ClientField::ClientField() {
is_dragging_CardDisplay = false; is_dragging_CardDisplay = false;
is_dragging_tabHelper = false; is_dragging_tabHelper = false;
is_dragging_tabSystem = false; is_dragging_tabSystem = false;
is_selectable = true;
dragging_tab_start_pos = 0; dragging_tab_start_pos = 0;
dragging_tab_start_x = 0; dragging_tab_start_x = 0;
dragging_tab_start_y = 0; dragging_tab_start_y = 0;
......
...@@ -129,6 +129,7 @@ public: ...@@ -129,6 +129,7 @@ public:
bool is_dragging_CardDisplay; bool is_dragging_CardDisplay;
bool is_dragging_tabHelper; bool is_dragging_tabHelper;
bool is_dragging_tabSystem; bool is_dragging_tabSystem;
bool is_selectable;
int dragging_tab_start_pos; int dragging_tab_start_pos;
int dragging_tab_start_x; int dragging_tab_start_x;
int dragging_tab_start_y; int dragging_tab_start_y;
......
...@@ -641,150 +641,152 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -641,150 +641,152 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case BUTTON_CARD_2: case BUTTON_CARD_2:
case BUTTON_CARD_3: case BUTTON_CARD_3:
case BUTTON_CARD_4: { case BUTTON_CARD_4: {
if(mainGame->dInfo.isReplay) if (is_selectable) {
break; if(mainGame->dInfo.isReplay)
switch(mainGame->dInfo.curMsg) { break;
case MSG_SELECT_IDLECMD: switch(mainGame->dInfo.curMsg) {
case MSG_SELECT_BATTLECMD: case MSG_SELECT_IDLECMD:
case MSG_SELECT_CHAIN: { case MSG_SELECT_BATTLECMD:
if(list_command == COMMAND_LIST) case MSG_SELECT_CHAIN: {
break; if(list_command == COMMAND_LIST)
if(list_command == COMMAND_SPSUMMON) { break;
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; if(list_command == COMMAND_SPSUMMON) {
int index = 0; command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
while(spsummonable_cards[index] != command_card) index++; int index = 0;
DuelClient::SetResponseI((index << 16) + 1); while(spsummonable_cards[index] != command_card) index++;
mainGame->HideElement(mainGame->wCardSelect, true); DuelClient::SetResponseI((index << 16) + 1);
ShowCancelOrFinishButton(0); mainGame->HideElement(mainGame->wCardSelect, true);
break; ShowCancelOrFinishButton(0);
} break;
if(list_command == COMMAND_ACTIVATE || list_command == COMMAND_OPERATION) { }
int index = -1; if(list_command == COMMAND_ACTIVATE || list_command == COMMAND_OPERATION) {
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; int index = -1;
select_options.clear(); command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
for (size_t i = 0; i < activatable_cards.size(); ++i) { select_options.clear();
if (activatable_cards[i] == command_card) { for (size_t i = 0; i < activatable_cards.size(); ++i) {
if(activatable_descs[i].second == EDESC_OPERATION) { if (activatable_cards[i] == command_card) {
if(list_command == COMMAND_ACTIVATE) continue; if(activatable_descs[i].second == EDESC_OPERATION) {
} else { if(list_command == COMMAND_ACTIVATE) continue;
if(list_command == COMMAND_OPERATION) continue; } else {
} if(list_command == COMMAND_OPERATION) continue;
select_options.push_back(activatable_descs[i].first); }
if (index == -1) index = i; select_options.push_back(activatable_descs[i].first);
} if (index == -1) index = i;
} }
if (select_options.size() == 1) { }
if (mainGame->dInfo.curMsg == MSG_SELECT_IDLECMD) { if (select_options.size() == 1) {
DuelClient::SetResponseI((index << 16) + 5); if (mainGame->dInfo.curMsg == MSG_SELECT_IDLECMD) {
} else if (mainGame->dInfo.curMsg == MSG_SELECT_BATTLECMD) { DuelClient::SetResponseI((index << 16) + 5);
DuelClient::SetResponseI(index << 16); } else if (mainGame->dInfo.curMsg == MSG_SELECT_BATTLECMD) {
} else { DuelClient::SetResponseI(index << 16);
DuelClient::SetResponseI(index); } else {
} DuelClient::SetResponseI(index);
mainGame->HideElement(mainGame->wCardSelect, true); }
} else { mainGame->HideElement(mainGame->wCardSelect, true);
mainGame->wCardSelect->setVisible(false); } else {
ShowSelectOption(); mainGame->wCardSelect->setVisible(false);
} ShowSelectOption();
break; }
} break;
break; }
} break;
case MSG_SELECT_CARD: { }
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; case MSG_SELECT_CARD: {
if (command_card->is_selected) { command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
command_card->is_selected = false; if (command_card->is_selected) {
int i = 0; command_card->is_selected = false;
while(selected_cards[i] != command_card) i++; int i = 0;
selected_cards.erase(selected_cards.begin() + i); while(selected_cards[i] != command_card) i++;
if(command_card->controler) selected_cards.erase(selected_cards.begin() + i);
mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xff5a5a5a); if(command_card->controler)
else mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xff56649f); mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xff5a5a5a);
} else { else mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xff56649f);
command_card->is_selected = true; } else {
mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0x6011113d); command_card->is_selected = true;
selected_cards.push_back(command_card); mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0x6011113d);
} selected_cards.push_back(command_card);
int sel = selected_cards.size(); }
if (sel >= select_max) { int sel = selected_cards.size();
SetResponseSelectedCards(); if (sel >= select_max) {
ShowCancelOrFinishButton(0); SetResponseSelectedCards();
mainGame->HideElement(mainGame->wCardSelect, true); ShowCancelOrFinishButton(0);
} else if (sel >= select_min) { mainGame->HideElement(mainGame->wCardSelect, true);
select_ready = true; } else if (sel >= select_min) {
mainGame->btnSelectOK->setVisible(true); select_ready = true;
ShowCancelOrFinishButton(2); mainGame->btnSelectOK->setVisible(true);
} else { ShowCancelOrFinishButton(2);
select_ready = false; } else {
mainGame->btnSelectOK->setVisible(false); select_ready = false;
if (select_cancelable && sel == 0) mainGame->btnSelectOK->setVisible(false);
ShowCancelOrFinishButton(1); if (select_cancelable && sel == 0)
else ShowCancelOrFinishButton(1);
ShowCancelOrFinishButton(0); else
} ShowCancelOrFinishButton(0);
break; }
} break;
case MSG_SELECT_UNSELECT_CARD: { }
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; case MSG_SELECT_UNSELECT_CARD: {
if (command_card->is_selected) { command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
command_card->is_selected = false; if (command_card->is_selected) {
if(command_card->controler) command_card->is_selected = false;
mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffd0d0d0); if(command_card->controler)
else mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffffffff); mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffd0d0d0);
} else { else mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffffffff);
command_card->is_selected = true; } else {
mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffffff00); command_card->is_selected = true;
} mainGame->stCardPos[id - BUTTON_CARD_0]->setBackgroundColor(0xffffff00);
selected_cards.push_back(command_card); }
if (selected_cards.size() > 0) { selected_cards.push_back(command_card);
SetResponseSelectedCards(); if (selected_cards.size() > 0) {
ShowCancelOrFinishButton(0); SetResponseSelectedCards();
mainGame->HideElement(mainGame->wCardSelect, true); ShowCancelOrFinishButton(0);
} mainGame->HideElement(mainGame->wCardSelect, true);
break; }
} break;
case MSG_SELECT_SUM: { }
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; case MSG_SELECT_SUM: {
selected_cards.push_back(command_card); command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
ShowSelectSum(true); selected_cards.push_back(command_card);
break; ShowSelectSum(true);
} break;
case MSG_SORT_CARD: { }
int offset = mainGame->scrCardList->getPos() / 10; case MSG_SORT_CARD: {
int sel_seq = id - BUTTON_CARD_0 + offset; int offset = mainGame->scrCardList->getPos() / 10;
wchar_t formatBuffer[2048]; int sel_seq = id - BUTTON_CARD_0 + offset;
if(sort_list[sel_seq]) { wchar_t formatBuffer[2048];
select_min--; if(sort_list[sel_seq]) {
int sel = sort_list[sel_seq]; select_min--;
sort_list[sel_seq] = 0; int sel = sort_list[sel_seq];
for(int i = 0; i < select_max; ++i) sort_list[sel_seq] = 0;
if(sort_list[i] > sel) for(int i = 0; i < select_max; ++i)
sort_list[i]--; if(sort_list[i] > sel)
for(int i = 0; i < 5; ++i) { sort_list[i]--;
if(offset + i >= select_max) for(int i = 0; i < 5; ++i) {
break; if(offset + i >= select_max)
if(sort_list[offset + i]) { break;
myswprintf(formatBuffer, L"%d", sort_list[offset + i]); if(sort_list[offset + i]) {
mainGame->stCardPos[i]->setText(formatBuffer); myswprintf(formatBuffer, L"%d", sort_list[offset + i]);
} else mainGame->stCardPos[i]->setText(L""); mainGame->stCardPos[i]->setText(formatBuffer);
} } else mainGame->stCardPos[i]->setText(L"");
} else { }
select_min++; } else {
sort_list[sel_seq] = select_min; select_min++;
myswprintf(formatBuffer, L"%d", select_min); sort_list[sel_seq] = select_min;
mainGame->stCardPos[id - BUTTON_CARD_0]->setText(formatBuffer); myswprintf(formatBuffer, L"%d", select_min);
if(select_min == select_max) { mainGame->stCardPos[id - BUTTON_CARD_0]->setText(formatBuffer);
unsigned char respbuf[64]; if(select_min == select_max) {
for(int i = 0; i < select_max; ++i) unsigned char respbuf[64];
respbuf[i] = sort_list[i] - 1; for(int i = 0; i < select_max; ++i)
DuelClient::SetResponseB(respbuf, select_max); respbuf[i] = sort_list[i] - 1;
mainGame->HideElement(mainGame->wCardSelect, true); DuelClient::SetResponseB(respbuf, select_max);
sort_list.clear(); mainGame->HideElement(mainGame->wCardSelect, true);
} sort_list.clear();
} }
break; }
} break;
} }
}
}
break; break;
} }
case BUTTON_CARD_SEL_OK: { case BUTTON_CARD_SEL_OK: {
...@@ -1976,8 +1978,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -1976,8 +1978,13 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
case irr::EET_MOUSE_INPUT_EVENT: { case irr::EET_MOUSE_INPUT_EVENT: {
IGUIElement* root = mainGame->env->getRootGUIElement(); IGUIElement* root = mainGame->env->getRootGUIElement();
position2di mousepos = position2di(event.MouseInput.X, event.MouseInput.Y); position2di mousepos = position2di(event.MouseInput.X, event.MouseInput.Y);
int presstime, leftuptime;
switch(event.MouseInput.Event) { switch(event.MouseInput.Event) {
case irr::EMIE_LMOUSE_PRESSED_DOWN: { case irr::EMIE_LMOUSE_PRESSED_DOWN: {
presstime = os::Timer::getTime();
char logPresstime[256];
sprintf(logPresstime, "按下time=%d", presstime);
os::Printer::log(logPresstime);
//vertical scrollbar //vertical scrollbar
if(root->getElementFromPoint(mousepos) == mainGame->stText) { if(root->getElementFromPoint(mousepos) == mainGame->stText) {
if(!mainGame->scrCardText->isVisible()) { if(!mainGame->scrCardText->isVisible()) {
...@@ -2086,6 +2093,10 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -2086,6 +2093,10 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
break; break;
} }
case irr::EMIE_LMOUSE_LEFT_UP: { case irr::EMIE_LMOUSE_LEFT_UP: {
leftuptime = os::Timer::getTime();
char logleftuptime[256];
sprintf(logleftuptime, "放开time=%d", leftuptime);
os::Printer::log(logleftuptime);
if (root->getElementFromPoint(mousepos) == mainGame->stText || if (root->getElementFromPoint(mousepos) == mainGame->stText ||
root->getElementFromPoint(mousepos) == mainGame->wHostPrepare) { root->getElementFromPoint(mousepos) == mainGame->wHostPrepare) {
mainGame->gMutex.lock(); mainGame->gMutex.lock();
...@@ -2094,6 +2105,12 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -2094,6 +2105,12 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
mainGame->gMutex.unlock(); mainGame->gMutex.unlock();
break; break;
}//touch the target place to refresh textfonts }//touch the target place to refresh textfonts
if(leftuptime - presstime > 200) {
is_selectable = false;
} else {
is_selectable = true;
}
is_dragging_cardtext = false; is_dragging_cardtext = false;
is_dragging_lstLog = false; is_dragging_lstLog = false;
is_dragging_lstReplayList = false; is_dragging_lstReplayList = false;
......
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