I'm usually organizing my objects so that in the primary class, there are no media objects at all.
This started when I had issues serializing a player object because it contained picture objects, in LOVE2D.
Since then I'm strictly dividing "raw data" and everything else (textfields, images, sounds, ...), resulting in a "Character" class and a "CharacterScreen" class for example.
While going with this approach I see myself getting more and more lost in bad code. Where do I save whose turn it is to hit? In the "Character" class? The information whose turn it is is not essential to the player's data, so no. Put in in the "CharacterScreen" class? I guess not, because this should only contain media, not data that's essential to the game.
So what now, do I create a "Fight" class, which stores the turn? (That's what i actually did). I also created a "FightScreen" class of course. This strict kind of thinking has got out of hand by now, and I'm not able to debug my current application, because attributes/funtions from one "logical" object is spread over several classes.
A fight in my game starts from a button element on the screen, transitions into the fight object, reads the players stats, computes some shit, and end up in some sprites which check something each frame. I'm not even sure anymore what happens where.
Am I going into a completely wrong direction with my approach? Or is it maybe the nature of scripting languages, that you can/should just put everyting into one object, while more traditional language like Java would fit better for me?
Captain Obvious is welcome