Commit eaf2c37f authored by salix5's avatar salix5

MSG_SELECT_CHAIN

global effects:
effects registered to the players, characterized by EFFECT_FLAG_FIELD_ONLY
current settings:
1. The max len of card id is 9 digit (< 1e9)
2. For global effects, MSG_SELECT_CHAIN will send 1000000000+id
   For normal effects, MSG_SELECT_CHAIN will send id
3. Global effects are collected in LOCATION_REMOVED
parent ca2ff8fd
......@@ -21,7 +21,7 @@ ClientCard::ClientCard() {
is_conti = false;
cmdFlag = 0;
code = 0;
conti_code = 0;
chain_code = 0;
type = 0;
alias = 0;
level = 0;
......
......@@ -65,7 +65,7 @@ public:
bool is_reversed;
bool is_conti;
u32 code;
u32 conti_code;
u32 chain_code;
u32 alias;
u32 type;
u32 level;
......
......@@ -333,11 +333,12 @@ void ClientField::ClearChainSelect() {
std::vector<ClientCard*>::iterator cit;
for(cit = activatable_cards.begin(); cit != activatable_cards.end(); ++cit) {
(*cit)->cmdFlag = 0;
(*cit)->conti_code = 0;
(*cit)->chain_code = 0;
(*cit)->is_selectable = false;
(*cit)->is_selected = false;
(*cit)->is_conti = false;
}
conti_cards.clear();
grave_act = false;
remove_act = false;
extra_act = false;
......@@ -348,8 +349,8 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
for(size_t i = 0; i < selectable_cards.size(); ++i) {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else if(chain && selectable_cards[i]->is_conti)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->conti_code));
else if(chain)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
......@@ -385,8 +386,8 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
for(int i = 0; i < 5; ++i) {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else if(chain && selectable_cards[i]->is_conti)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->conti_code));
else if(chain)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
......
......@@ -1178,13 +1178,14 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.activatable_cards.push_back(pcard);
mainGame->dField.activatable_descs.push_back(desc);
pcard->is_selected = false;
if(code) {
if(code >= 1000000000) {
pcard->is_conti = true;
pcard->conti_code = code;
pcard->chain_code = code % 1000000000;
mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.remove_act = true;
}
else {
pcard->chain_code = code;
pcard->is_selectable = true;
pcard->cmdFlag |= COMMAND_ACTIVATE;
if(l == LOCATION_GRAVE)
......
......@@ -318,9 +318,9 @@ int32 field::select_chain(uint16 step, uint8 playerid, uint8 spe_count, uint8 fo
effect* peffect = core.select_chains[i].triggering_effect;
card* pcard = peffect->handler;
if(peffect->flag & EFFECT_FLAG_FIELD_ONLY)
pduel->write_buffer32(pcard->data.code);
pduel->write_buffer32(1000000000 + pcard->data.code);
else
pduel->write_buffer32(0);
pduel->write_buffer32(pcard->data.code);
pduel->write_buffer32(pcard->get_info_location());
pduel->write_buffer32(peffect->description);
}
......
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