Weapon swapping + switching best practices FPS ???

I’m looking for high level logic for the best way to handle weapon swapping + switching in a full FPS game.

Example: A halo type weapon swapping / switching system where I have two weapon on my person that I can switch between with their own properties and animations on my skeletal mesh arms. An I can pick up new weapons and replace them with other weapons on my person.

Problem: Most tutorials I have found only show the concept of handling one weapon directly in the PlayerCharacter blueprint. Or what seems like to me a messy multiple branch system to control logic all in the PlayerCharacter, which doesn’t seem correct for any type of game more than a test environment.(I could be wrong)

My first instinct is to create a weapons base class then extend that class to create the various weapon variations (Rifle,Shotgun,etc). Causing each weapon to be its own Blueprint. Then it gets fuzzy, should I use an enumeration in the player at this point to let it know which weapon is being equip or held, should I cast to the weapon to fire it or just handle it all in the PlayerCharacter? Any and all insight into just the logic layout for how a real full sized game would handle it would be great. Thanks!

Weapons Base Class - yes for the weapons. Enum - for the character. An Enum allows you to list several ‘states’ (ie. pistol, shotgun, smg) and access them via blueprints. I have a system that switches weapons based on either the number or numpad keys.