On Thu, 17 Mar 2005 09:58:08 -0700, Ben Olsen <bolsen@verio.net> wrote:
Henning,
I realize the error isn't specific to pygame in any way, I was just hoping to give everyone enough context. I'm getting the error because a pygame.Rect isn't a jellyable object. But so far I haven't been able to make a jellyable object out of it. The problem for me is that this Rect object is inside of another class (i.e. a GameState class). I can set pb.Copyable and pb.RemoteCopy on the GameState class, and it goes back and forth just fine, but *only* if I remove the pygame.Rect attributes from it.
I searched the twisted site for "declare pb.Copyable once," and even just the word "Henning," but I couldn't find any threads about this. And unfortunately the howto doesn't help, since all it shows is how to send a simple class back and forth, which I can do fine.
Any other suggestions for getting a class with non-standard objects in it to jelly properly?
One approach is to override getStateToCopy (or jellyFor, or getStateToCopyFor, or __getstate__, or several of the above, or all of the above, depending) on your GameState class. Your implementation can do something like convert the rect to a tuple (or something else easily jellyable). Similarly, your unjellier can convert the tuple back to a rect. Jp