How approach weapons framework?

How should code a weapons framework? How make them easy to create and change the code over time? Like, for example, maybe I need an automatic weapon, a semi one, a shotgun, maybe one that shots projectile bullets, or has a sight, or is just a knife, what is the best approach? I was researching and find things about OOP and Composition, or Inheritance with classes, but not sure how start, does someone has a bit of experience on this?



I would recommend that you try out this tutorial:

It seems really easy to add more guns. How ever shotguns are more difficult because of the spread. I’m sure you can find some posts about that though!