Responsibility: to identify character states, initialized in BattleController
It has a bunch of dependencies, like HealthProvider, DistanceProvider, etc.
There’s a specific controller for each state in the constructor to create state controllers.
Every frame the Battle controller calls Calculate(), inside method based on the amount of health or distance to the opponent character, etc.
class determines whether the character’s state should change or not