Commit 04aa9301 authored by Chen Bill's avatar Chen Bill

update class field

parent 4f0639dd
...@@ -66,11 +66,11 @@ field::field(duel* pduel) { ...@@ -66,11 +66,11 @@ field::field(duel* pduel) {
player[i].tag_extra_p_count = 0; player[i].tag_extra_p_count = 0;
player[i].list_mzone.resize(7, 0); player[i].list_mzone.resize(7, 0);
player[i].list_szone.resize(8, 0); player[i].list_szone.resize(8, 0);
player[i].list_main.reserve(45); player[i].list_main.reserve(60);
player[i].list_hand.reserve(10); player[i].list_hand.reserve(60);
player[i].list_grave.reserve(30); player[i].list_grave.reserve(75);
player[i].list_remove.reserve(30); player[i].list_remove.reserve(75);
player[i].list_extra.reserve(15); player[i].list_extra.reserve(30);
} }
returns = { 0 }; returns = { 0 };
temp_card = nullptr; temp_card = nullptr;
...@@ -200,9 +200,9 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence ...@@ -200,9 +200,9 @@ void field::add_card(uint8 playerid, card* pcard, uint8 location, uint8 sequence
pcard->unique_fieldid = UINT_MAX; pcard->unique_fieldid = UINT_MAX;
pcard->turnid = infos.turn_id; pcard->turnid = infos.turn_id;
if (location == LOCATION_MZONE) if (location == LOCATION_MZONE)
player[playerid].used_location |= 1 << sequence; player[playerid].used_location |= 0x1 << sequence;
if (location == LOCATION_SZONE) if (location == LOCATION_SZONE)
player[playerid].used_location |= 256 << sequence; player[playerid].used_location |= 0x100 << sequence;
} }
void field::remove_card(card* pcard) { void field::remove_card(card* pcard) {
if (pcard->current.controler == PLAYER_NONE || pcard->current.location == 0) if (pcard->current.controler == PLAYER_NONE || pcard->current.location == 0)
...@@ -243,9 +243,9 @@ void field::remove_card(card* pcard) { ...@@ -243,9 +243,9 @@ void field::remove_card(card* pcard) {
} }
pcard->cancel_field_effect(); pcard->cancel_field_effect();
if (pcard->current.location == LOCATION_MZONE) if (pcard->current.location == LOCATION_MZONE)
player[playerid].used_location &= ~(1 << pcard->current.sequence); player[playerid].used_location &= ~(0x1 << pcard->current.sequence);
if (pcard->current.location == LOCATION_SZONE) if (pcard->current.location == LOCATION_SZONE)
player[playerid].used_location &= ~(256 << pcard->current.sequence); player[playerid].used_location &= ~(0x100 << pcard->current.sequence);
pcard->previous.controler = pcard->current.controler; pcard->previous.controler = pcard->current.controler;
pcard->previous.location = pcard->current.location; pcard->previous.location = pcard->current.location;
pcard->previous.sequence = pcard->current.sequence; pcard->previous.sequence = pcard->current.sequence;
...@@ -321,9 +321,9 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc ...@@ -321,9 +321,9 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
pcard->current.sequence = sequence; pcard->current.sequence = sequence;
} else { } else {
player[preplayer].list_szone[presequence] = 0; player[preplayer].list_szone[presequence] = 0;
player[preplayer].used_location &= ~(256 << presequence); player[preplayer].used_location &= ~(0x100 << presequence);
player[playerid].list_szone[sequence] = pcard; player[playerid].list_szone[sequence] = pcard;
player[playerid].used_location |= 256 << sequence; player[playerid].used_location |= 0x100 << sequence;
pcard->current.controler = playerid; pcard->current.controler = playerid;
pcard->current.sequence = sequence; pcard->current.sequence = sequence;
} }
...@@ -436,13 +436,13 @@ void field::swap_card(card* pcard1, card* pcard2, uint8 new_sequence1, uint8 new ...@@ -436,13 +436,13 @@ void field::swap_card(card* pcard1, card* pcard2, uint8 new_sequence1, uint8 new
player[p1].used_location |= 1 << new_sequence1; player[p1].used_location |= 1 << new_sequence1;
} else if(l1 == LOCATION_SZONE) { } else if(l1 == LOCATION_SZONE) {
player[p1].list_szone[s1] = 0; player[p1].list_szone[s1] = 0;
player[p1].used_location &= ~(256 << s1); player[p1].used_location &= ~(0x100 << s1);
player[p2].list_szone[s2] = 0; player[p2].list_szone[s2] = 0;
player[p2].used_location &= ~(256 << s2); player[p2].used_location &= ~(0x100 << s2);
player[p2].list_szone[new_sequence2] = pcard1; player[p2].list_szone[new_sequence2] = pcard1;
player[p2].used_location |= 256 << new_sequence2; player[p2].used_location |= 0x100 << new_sequence2;
player[p1].list_szone[new_sequence1] = pcard2; player[p1].list_szone[new_sequence1] = pcard2;
player[p1].used_location |= 256 << new_sequence1; player[p1].used_location |= 0x100 << new_sequence1;
} }
} else { } else {
remove_card(pcard1); remove_card(pcard1);
...@@ -513,21 +513,21 @@ card* field::get_field_card(uint32 playerid, uint32 location, uint32 sequence) { ...@@ -513,21 +513,21 @@ card* field::get_field_card(uint32 playerid, uint32 location, uint32 sequence) {
if(sequence < player[playerid].list_mzone.size()) if(sequence < player[playerid].list_mzone.size())
return player[playerid].list_mzone[sequence]; return player[playerid].list_mzone[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_SZONE: { case LOCATION_SZONE: {
if(sequence < player[playerid].list_szone.size()) if(sequence < player[playerid].list_szone.size())
return player[playerid].list_szone[sequence]; return player[playerid].list_szone[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_FZONE: { case LOCATION_FZONE: {
if(sequence == 0) if(sequence == 0)
return player[playerid].list_szone[5]; return player[playerid].list_szone[5];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_PZONE: { case LOCATION_PZONE: {
...@@ -538,46 +538,46 @@ card* field::get_field_card(uint32 playerid, uint32 location, uint32 sequence) { ...@@ -538,46 +538,46 @@ card* field::get_field_card(uint32 playerid, uint32 location, uint32 sequence) {
card* pcard = player[playerid].list_szone[core.duel_rule >= 4 ? 4 : 7]; card* pcard = player[playerid].list_szone[core.duel_rule >= 4 ? 4 : 7];
return pcard && pcard->current.pzone ? pcard : 0; return pcard && pcard->current.pzone ? pcard : 0;
} else } else
return 0; return nullptr;
break; break;
} }
case LOCATION_DECK: { case LOCATION_DECK: {
if(sequence < player[playerid].list_main.size()) if(sequence < player[playerid].list_main.size())
return player[playerid].list_main[sequence]; return player[playerid].list_main[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_HAND: { case LOCATION_HAND: {
if(sequence < player[playerid].list_hand.size()) if(sequence < player[playerid].list_hand.size())
return player[playerid].list_hand[sequence]; return player[playerid].list_hand[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_GRAVE: { case LOCATION_GRAVE: {
if(sequence < player[playerid].list_grave.size()) if(sequence < player[playerid].list_grave.size())
return player[playerid].list_grave[sequence]; return player[playerid].list_grave[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_REMOVED: { case LOCATION_REMOVED: {
if(sequence < player[playerid].list_remove.size()) if(sequence < player[playerid].list_remove.size())
return player[playerid].list_remove[sequence]; return player[playerid].list_remove[sequence];
else else
return 0; return nullptr;
break; break;
} }
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
if(sequence < player[playerid].list_extra.size()) if(sequence < player[playerid].list_extra.size())
return player[playerid].list_extra[sequence]; return player[playerid].list_extra[sequence];
else else
return 0; return nullptr;
break; break;
} }
} }
return 0; return nullptr;
} }
int32 field::is_location_useable(uint32 playerid, uint32 location, uint32 sequence) { int32 field::is_location_useable(uint32 playerid, uint32 location, uint32 sequence) {
uint32 flag = player[playerid].disabled_location | player[playerid].used_location; uint32 flag = player[playerid].disabled_location | player[playerid].used_location;
...@@ -1694,7 +1694,7 @@ effect* field::is_player_affected_by_effect(uint8 playerid, uint32 code) { ...@@ -1694,7 +1694,7 @@ effect* field::is_player_affected_by_effect(uint8 playerid, uint32 code) {
if (peffect->is_target_player(playerid) && peffect->is_available()) if (peffect->is_target_player(playerid) && peffect->is_available())
return peffect; return peffect;
} }
return 0; return nullptr;
} }
int32 field::get_release_list(uint8 playerid, card_set* release_list, card_set* ex_list, card_set* ex_list_oneof, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exc, group* exg) { int32 field::get_release_list(uint8 playerid, card_set* release_list, card_set* ex_list, card_set* ex_list_oneof, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exc, group* exg) {
uint32 rcount = 0; uint32 rcount = 0;
...@@ -2195,7 +2195,7 @@ effect* field::check_unique_onfield(card* pcard, uint8 controler, uint8 location ...@@ -2195,7 +2195,7 @@ effect* field::check_unique_onfield(card* pcard, uint8 controler, uint8 location
cset.insert(pcard); cset.insert(pcard);
if(cset.size() >= 2) if(cset.size() >= 2)
return pcard->unique_effect; return pcard->unique_effect;
return 0; return nullptr;
} }
int32 field::check_spsummon_once(card* pcard, uint8 playerid) { int32 field::check_spsummon_once(card* pcard, uint8 playerid) {
if(pcard->spsummon_code == 0) if(pcard->spsummon_code == 0)
......
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