Hi, I'm working on Wormux source code. I try to kill all (I said ALL!) global variarbles.
I choosed to move camera, action_handler, game_mode, ... to GameLoop class (because it's the center class of the game). But there is no more "game_loop" global variable, so each class have its own protected/private reference to the instance. Example of Camera class: ------------------------ 8< -------------------------------------------- class GameLoop; class Camera { GameLoop &game_loop; public: Camera(GameLoop &game_loop); ... }; Camera::Camera(GameLoop &p_game_loop) : game_loop(p_game_loop) { ... } ------------------------ 8< -------------------------------------------- I removed, now useless, namespace Wormux. I changed some names: - instance curseur_ver => game_loop.cursor - class ImagesParSeconde => FramePerSecond - ... I moved some functions: - ActiveCharacter() => game_loop.ActiveCharacter() - ActiveTeam() => game_loop.ActiveTeam() - ... I changed ResourceManager mechanism: LoadImage and LoadSprite are part of Profile and not ResourceManager, which is more logic! I splitted Sprite to BasicSprite (not animated) and Sprite (animated) because BasicSprite is used in menu (for buttons) and Sprite need to access world to update the graphic cache. I splitted Font to Font and GameFont because Font is used in Menu when game_loop doesn't exit (and GameFont needs world.ToRedrawOnScreen). Same with Text and GameText. I splitted Profile to Profile and GameProfile. Profile can only load Image and BasicSprite. GameProfile inherits from Profile and can load Sprite. I changed constructor of Text => Text(std::string, Font&, SDL_Color), it was Text(std::string, SDL_Color, Font*). Menu does create their own fonts. Game fonts are game_loop.font.big, game_loop.font.small, game_loop.font.normal, ... I didn't finish my patch, it's a really huge work! "svn diff|wc -l" say +15.000 lines :-P *The* question: should I create a "0.7" branch, and commit my patch to trunk or ... just commit ? :-) I can't wait 0.7 release because my local repository will be too old and merge current svn with my local directory will be a very hard work :-P Bye, Haypo