Hi,
I had a look at your diagrams: if those are classes and inheritance, then it is looking more & more like you might need to start again, old sport :+)
OOP design is harder than what one might first imagine: it is not enough to know what a class is, then tear into writing lots of code.
There are a bunch of concepts which I am not sure whether you know about or not:
Not every class has to fit into an inheritance tree.
"IS A" relationship, implies public inheritance - have to be careful as to what this means exactly.
https://en.wikipedia.org/wiki/Liskov_substitution_principle
https://en.wikipedia.org/wiki/Open/closed_principle
"HAS A" relationship, the class has a member which is the type of another class
"USES A" relationship, a class function has another class type as an argument
Polymorphism - using virtual functions, a very powerful concept that helps write more generic code, and provide an interface.
Generic naming, as in this example:
1 2 3 4
|
class Animal;
class Cow : pubic Animal;
class Dog : public Animal;
class Cat : public Animal;
|
Each of those classes might have a Speak() function, not CowSpeak, DogSpeak, CatSpeak
The concept of "pushing things up the tree": place variables and functions as high up the tree as valid to do so (not gratuitously though), create new classes if necessary and valid. So one can define things once, and they apply to all things below it in the tree. For example: we might have Player and Enemy classes. Both have a Health value, so we can create the Actor class which Player and Enemy derive from. So now Health appears once in the Actor class.
Things such HealthPacks, Weapons, Ammo, Vehicles, Money, Tools etcetera are resources, so one might have a
Resource
base class.
If you are going to start again, I would recommend starting out small: 1 each of the basic things - Player, Enemy, Resource, Tool. Get that right first, then add more complexity gradually. Add in the design patterns when you see a need to decouple things, or make it easier to reuse and provide flexibility.
Some more links:
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html
http://www.dre.vanderbilt.edu/~sutambe/documents/More%20C++%20Idioms.pdf
https://isocpp.org/faq
http://gameprogrammingpatterns.com/