Max mtg wrote:It looked like Sol was pointing me what to do, and I've had enough of that refactoring last Sunday. So, maybe we should (have it all centralized)... but we can't have that for now.
That zone centralization is in relativelly good condition now. Player.getCardsIn(Zone) is an utility function, which wraps a CardList around what's found in zone.getCards(). Any code comes to querying zone anyway. We cannot make private getZone() in Player, nor limit the visibility of getCards(), because many pieces of code need zones themselves (to move a card to that zone for instance)
There are lots of places which need programmers' attention more than this zone-peeking.
Understandable. Refactoring is a huge drain, and will rarely feel as rewarding as adding new features.
I'll figure something out when I have some time to get everything on the same track. This way Phased Out cards will be ignored when requesting through that centralized pipeline, but during the Phasing portion of the Untap step they will be available through a unique function call.