--- On Fri, 8/14/09, David E Jones <d...@me.com> wrote: > On Aug 14, 2009, at 7:15 PM, Adrian Crum wrote: > > > --- On Fri, 8/14/09, David E Jones <d...@me.com> > wrote: > > > >> Simpler yes (for the framework implementation at > least, not > >> for the code that uses it), cleaner... I don't > know. > >> > >> Please keep in mind that the branch I've been > working on is > >> not complete, and eventually there will be no > dependencies > >> from the context component code to the other > components... > >> ie that's the whole goal, it's just not done yet. > > > > Then you must have access to some voodoo I'm not aware > of. If an interface references a class in the entity > component, then how will there be no dependency on it? > > That's where the choice I was talking about a long time ago > comes in... there may be other options but these are the > main two ones I've been working with: > > 1. create an interface for the class referenced by the > other interface, making it part of the high level > interfaces > > 2. remove the method from the interface, leaving it on the > implementing class meaning you have to use a type cast to > the implementing class in order to use it (and it won't work > for other implementations of the interface) > > This is not always an easy decision... so I imagine we'll > have various discussions about specific methods. For my part > I'm taking a first pass and trying to keep things at a high > level and somewhat simplified, and we may decide to expand > the interfaces in the future by adding the methods and > creating additional interfaces. The distinction I'm trying > to go for is those methods/classes that are likely to be > used in applications that those that are lower-level.
That's what I started to do, and I ended up with a lot of interfaces. Then there are classes that the interfaces reference, but are only used internally, so I moved those into the same folder as the interfaces. In the end I had twice as many files (interface plus implementation), and a folder that nearly mirrored the entity component. That's why I came to the conclusion that it would make more sense to just put the whole entity component in that folder. Anyways, the branch I created builds and runs. Everything is still in the entity component though. If you start moving the interfaces to another folder, you will get a good grasp of the scope of the problem. -Adrian