Making different weapons have different commands from inputs

The way I have it in my game is I have the weapon stored in an “Actor object reference” type variable, so no need for casting, it announces itself to the player and then with an interface I call the function “Shoot”

No dependencies, size-map is nice and clean.