I am using Cocos2d game development framework for iPhone.
Let’s focus on the battle scene:
The battle scene has as children: battlers layer, HUD layer, menu layer, background layer, etc…
Sometimes, it is necessary that my battlers layer “contacts” my HUD layer (like call a function within it).
I find this hard. Basically, my battlers layer needs some kind of.. instance or reference of the HUD layer in order to call a function within it, right? But I don’t know how to have such thing.
Currently, this is what I do:
The battlers layer will run a function in the scene (its parent), and, inside such function, I will “locate” the HUD layer child, and call the function I need in it.
Now, that is kind of inconvenient. What would you do in such situation?
It sounds to me that you may have over-designed this. What I might do is something like this.
I’d have an IScene. Each of my scene classes implements this IScene. IScene has a property called “HUD”, another called “Menu”, etc.
The current IScene is set into a global static instance ::CurrentScene
When the current scene needs to contact the menu, I say: ::CurrentScene->Menu->SomeFuncion().
Would that work for you?