I lied - one more diary entry with magic card placeholder images
I ended up with only about 3 hours to work on the game yesterday, so not enough time to make a progress report. I was going to add a few more SPACE types (spaces are a logical grouping of cards), and then hopefully start adding some basic gameplay. I started by adding a deck that you can draw from into your hand. But I had some issues with my 100 line code that syncs the state.
Both the deck and the hand have slightly different properties whether it is YOUR space and whether it is your OPPONENTS space. Clearly, you should be able to draw from your deck into your hand. In addition, your hand should be faceup while your opponents is facedown. With the existing architecture, I would have had to add even more if statements to support the deck. And then when I got to the other and even more complicated spaces, like the play area, there would be even more if statements, to sync the state into the appropriate widget objects.
So I spent most of my time yesterday trying to generalize this process - and I'm still not quite happy with it. Essentially, we can now set up a filter when we create a widget that helps it connect to where it should sync from later. One niggle is that when you host a game, it gives you a player object which randomly assigns you to player 1 or player 2. So to determine who the "other" player might be, we just set a string based on which player you were randomly assigned. This is pretty ugly but it works OK for the time being. Refactoring was a pain with having to change code in the model, the server, and the client. Why am I doing multiplayer for pyweek...
After messing with refactoring for a while, I did manage to quickly implement a deck construct.
Tonight - you will hopefully see the real cards.