I already have a small hierarchy going on. The classes are used to create one instance of an object eventually that is handled by ONE game component depending on what the object does. I have a SpriteManager and a TileManager, both are actual game components. One controls the sprite objects, the other controls tiles.
Even though I haven't posted it, I already have integrated the tiling component. What need to be done now, is writing some sort code to read from files. I have been looking over my C# book and not really turning up any leads thus far. I can make it work by writing all the tiles out in a cs file. However, this is not only time consuming, but once the engine is released open-source, I doubt people would want to go through the same process to make just a house let alone the entire overworld.
That is why I need to make a basic level editor where it will store the tile information into a file that can be loaded into the game.
Making everything a game component seems to defeat the purpose of OOP. It would be that same as using Game Maker with only creating everything in it's own object instead of having parents that object inherit from. I am not too sure but I also think that performance would also be hampered.
The way I have it now is quite simple. The ideas I have will make it even more simple. Everything that is a sprite draws it's variables from the baseSprite class.
baseSprite---------nonPlayer----------NPCs
|||||||||| ||||||| |||||
player Enemies |||||
|||||||||| |||||| |||||
Sprite Manager -------------------------------
Crude way of showing it but that is how it breaks down. Where as if I did it your way, I would have to have at least three different game components: the player, NPCs, and enemies. That means a new instance of a game component every time I created just say an enemy for example. It may seem simple but it defeats the purpose of what I am trying to learn. I can have all the objects(like I am doing now) created and controlled within the SpriteManager.
Hell, my Game1.cs has hardly any code whatsoever in it. It just has the calls to create 1 instance of the Sprite and Tile Managers and load them to be updated....about 4 lines of code.
Just saying. I may not know everything but from experience and what I have read in 4 books about XNA, doing everything in game components is bad.