Hey all,
So to start, I am not having trouble getting functionality working. I am purely trying to solidify that I understand signals. Spoiler: I don't. The guideline is 'Call down, signal up'. I understand this much and I understand the reasoning behind it as node paths can be easily broken calling up versus calling down in modular scenes.
So here we go. I've created a simple scenario and I have questions.
I have a simple scene comprised of 3 parts.
- level_manager
- player
- enemy

When the player (a characterBody2D) collides with enemy (an area2d), I will simply reload the current scene as a simple 'game over' placeholder.
1st approach -
- Click on enemy node. Go to Signal tab. Double click on body_entered and connect it to enemy script.
- Inside of signal I call up to the LevelManager Node/script and call a game_over function that reloads scene.

It works. Its a bad practice. It goes against the point of the signal up.
2nd Approach -
- Click on enemy node. Go to Signal tab. Double click on body_entered and connect it to level_manager script.
- Inside of signal I call game_over function that reloads scene.

It works. But heres where I don't like something. I don't like a signal called _on_enemy_body_entered inside of my level_manager script. I want my level manager to handle level manager things, not seeing specific logic about whats entering my enemy.
It seems logically I would want my level_manager to reload current scene when it receives a signal called on_game_over, or something like that. I don't understand. Theres a disconnect in my head. I feel like I am almost grasping signals but incorrectly.
My next thought was to emit a custom signal from within the _on_body_entered signal that my level manager would receive. But then I would have a signal sending a signal? Im confused