Commit d75e2be6 authored by mercury233's avatar mercury233

update

parent da4a8b82
...@@ -1294,9 +1294,8 @@ bool ClientField::check_sel_sum_s(const std::set<ClientCard*>& left, int index, ...@@ -1294,9 +1294,8 @@ bool ClientField::check_sel_sum_s(const std::set<ClientCard*>& left, int index,
check_sel_sum_t(left, acc); check_sel_sum_t(left, acc);
return false; return false;
} }
int l = selected_cards[index]->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params(selected_cards[index]->opParam, l1, l2);
int l2 = l >> 16;
bool res1 = false, res2 = false; bool res1 = false, res2 = false;
res1 = check_sel_sum_s(left, index + 1, acc - l1); res1 = check_sel_sum_s(left, index + 1, acc - l1);
if (l2 > 0) if (l2 > 0)
...@@ -1310,9 +1309,8 @@ void ClientField::check_sel_sum_t(const std::set<ClientCard*>& left, int acc) { ...@@ -1310,9 +1309,8 @@ void ClientField::check_sel_sum_t(const std::set<ClientCard*>& left, int acc) {
continue; continue;
std::set<ClientCard*> testlist(left); std::set<ClientCard*> testlist(left);
testlist.erase(*sit); testlist.erase(*sit);
int l = (*sit)->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params((*sit)->opParam, l1, l2);
int l2 = l >> 16;
if (check_sum(testlist.begin(), testlist.end(), acc - l1, count) if (check_sum(testlist.begin(), testlist.end(), acc - l1, count)
|| (l2 > 0 && check_sum(testlist.begin(), testlist.end(), acc - l2, count))) { || (l2 > 0 && check_sum(testlist.begin(), testlist.end(), acc - l2, count))) {
selectsum_cards.insert(*sit); selectsum_cards.insert(*sit);
...@@ -1324,9 +1322,8 @@ bool ClientField::check_sum(std::set<ClientCard*>::const_iterator index, std::se ...@@ -1324,9 +1322,8 @@ bool ClientField::check_sum(std::set<ClientCard*>::const_iterator index, std::se
return count >= select_min && count <= select_max; return count >= select_min && count <= select_max;
if (acc < 0 || index == end) if (acc < 0 || index == end)
return false; return false;
int l = (*index)->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params((*index)->opParam, l1, l2);
int l2 = l >> 16;
if ((l1 == acc || (l2 > 0 && l2 == acc)) && (count + 1 >= select_min) && (count + 1 <= select_max)) if ((l1 == acc || (l2 > 0 && l2 == acc)) && (count + 1 >= select_min) && (count + 1 <= select_max))
return true; return true;
++index; ++index;
...@@ -1341,9 +1338,8 @@ bool ClientField::check_sel_sum_trib_s(const std::set<ClientCard*>& left, int in ...@@ -1341,9 +1338,8 @@ bool ClientField::check_sel_sum_trib_s(const std::set<ClientCard*>& left, int in
check_sel_sum_trib_t(left, acc); check_sel_sum_trib_t(left, acc);
return acc >= select_min && acc <= select_max; return acc >= select_min && acc <= select_max;
} }
int l = selected_cards[index]->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params(selected_cards[index]->opParam, l1, l2);
int l2 = l >> 16;
bool res1 = false, res2 = false; bool res1 = false, res2 = false;
res1 = check_sel_sum_trib_s(left, index + 1, acc + l1); res1 = check_sel_sum_trib_s(left, index + 1, acc + l1);
if(l2 > 0) if(l2 > 0)
...@@ -1356,9 +1352,8 @@ void ClientField::check_sel_sum_trib_t(const std::set<ClientCard*>& left, int ac ...@@ -1356,9 +1352,8 @@ void ClientField::check_sel_sum_trib_t(const std::set<ClientCard*>& left, int ac
continue; continue;
std::set<ClientCard*> testlist(left); std::set<ClientCard*> testlist(left);
testlist.erase(*sit); testlist.erase(*sit);
int l = (*sit)->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params((*sit)->opParam, l1, l2);
int l2 = l >> 16;
if(check_sum_trib(testlist.begin(), testlist.end(), acc + l1) if(check_sum_trib(testlist.begin(), testlist.end(), acc + l1)
|| (l2 > 0 && check_sum_trib(testlist.begin(), testlist.end(), acc + l2))) { || (l2 > 0 && check_sum_trib(testlist.begin(), testlist.end(), acc + l2))) {
selectsum_cards.insert(*sit); selectsum_cards.insert(*sit);
...@@ -1370,9 +1365,8 @@ bool ClientField::check_sum_trib(std::set<ClientCard*>::const_iterator index, st ...@@ -1370,9 +1365,8 @@ bool ClientField::check_sum_trib(std::set<ClientCard*>::const_iterator index, st
return true; return true;
if(acc > select_max || index == end) if(acc > select_max || index == end)
return false; return false;
int l = (*index)->opParam; int l1, l2;
int l1 = l & 0xffff; get_sum_params((*index)->opParam, l1, l2);
int l2 = l >> 16;
if((acc + l1 >= select_min && acc + l1 <= select_max) || (acc + l2 >= select_min && acc + l2 <= select_max)) if((acc + l1 >= select_min && acc + l1 <= select_max) || (acc + l2 >= select_min && acc + l2 <= select_max))
return true; return true;
++index; ++index;
......
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