I would like to know the best way/best practice to handle the following situation. Suppose the project you are working on is split in two sub-projects:
game engine lib
editor gui.
Now, you have a method bool Method( const MethodParams ¶ms ) that will be called during game-level initialization. So it is a method belonging to the game engine lib. Now, the parameters of this method, passed as a reference the structure MethodParams can be decided via the editor, in the level design phase. Suppose the structure is the following:
enum Enum1
{
E1_VAL1,
E1_VAL2,
};
enum Enum2
{
E2_VAL1,
E2_VAL2,
E2_VAL3,
};
struct MethodParams
{
float value;
Enum1 e1;
Enum2 e2;
// some other member
}
The editor should present a dialog that will let the user set the MethodParams struct.
A text control for the field value. Furthermore, the editor needs to let the user set the fields e1 and e2 using, for example, two combo boxes (a combo box is a window control that has a list of choices). Obviously, every enum should be mapped to a string, so the user can make an informed selection (i have used E1_VAL1 etc.., but normally the enum would be more meaningful). One could even want to map every enum to a string more informative (E1_VAL1 to "Image union algorithm", E1_VAL2 to "Image intersection algorithm" and so on...).
The editor will include all the relevant game egine lib files (.h etc...), but this mapping is not automatic and i am confused on how to handle it in a way that, if in future i add E1_VAL3 and E1_VAL4, the code change will be minimal.