you'll get 2 advantages from loading that initialization data from a file:
1. people other than the coders can change the data.
2. no re-compile required when you change the data.
the slick way to do it is to alt-tab out of the game, edit the data file, then use a menu pick in the game to re-load the data file without quitting the game. or better yet, build the data file editor into the game itself - but this might be overkill, depending on the game and the complexity of the data. constant values for object type definitions like you're dealing with can easily be handled with a simple text file. for something more complex like a heightmap, an internal or external editor would probably be called for.
as for the "all-in-one" objecttype struct, i often debate this issue myself when starting a new title. all in one is appealing in its perceived simplicity, but can be inefficient in terms of memory usage, cache friendliness, etc. due to unused variables.
some unused variables are ok. but its usually better to divvy things up into groups with similar sets of variables.
composition and components can reduce / eliminate unused variables, by giving you multiple simple struct types to work with.