I agree with Mathew overall for sub famillies, but more importantly I would open families. Where I can mix sprites, TileBG, 9Patch. I want this desperatly because I tried to make a UI with a common behaviour of such example
OnEnter
OnExit
OnClick
OnRelease
Params
......
unfortunatlly because I have Sprite for Buttons and other graphical widgets and have 9Patch for the panels because obviosly using 9patch border and internal scaling makes sense. This has led to two different objects that cannot share the same event code.
So there is a very good reason to have mutual object families. Also as a complain I would like TextObject and SpriteFont to have a collision object. That way I can compare if these objects are over my panel(9patch) so I can auto pin to the overlapping panel... which again leads to the silly thing that I need to numerous families with Pin and extra actions and events conditions to do this.
Also yes we can use variables, but since building and SOL requires itteration through the Object/Family in question. Large object lists that can be the result of large projects as the OP is posting in theory will result in longer SOL building times. Where as if Families could have sub Families could allow for faster SOL building; especially for EveryTick situations.
Family Inheretence and Open Families are just over all good OOP design. Actually it's very common for other OOP languges to support such design as
class goo{
public function(){ do stuff };
}
class foo extends goo{
public function(){do foo stuff};
}
class doo extends goo{
public function(){ youknow what};
}
class bada extends foo{
public function(){ yeah}
since this extends foo it also get's the featues of goo
}
this is common in good OOP design. Something that C2 doesnt' let us do. Working around situation doesn't make the work around good. Heck anyone remember the days before Function?
edit:
I also requested this many months ago and got the reply from Ashley that I could just use variables