Need advice for good practice

Let’s say I have a racing game and there are three parts:

  1. A first person level where you are in a car dealership. This is where you buy cars and look at them
  2. A time attack level where you choose one of your cars and do a time attack level
  3. A versus level where you go against 1 computer AI and comepete to this finish

For each of these scenarios, should I make a different player controller for each?

The reason why I’m asking this is because I’ve been following the Blueprint Time Attack tutorial, provided by UE, for my game. The video is a little outdated and the tutors logic is not straightforward and messy. He made a player controller that had certain variables specific to the time attack game mode, which worries me because if I were to expand upon this to my game, it would make everything complicated.

So 1 player controller or multiple? What’s the best practice?

I don’t know much, but I think, that different player controllers would be easier to use (for example, you don’t need to steer in a car dealership, right?). On the other hand, I suppose, some of code in the second and third parts would be the same (driving a car). In this case, I would create an ActorComponent that can be added and used in both of these Controllers.