`typedef struct/union/enum name { ... } name_again;` is not needed whe compiling C++, moving the name at the back to be in front of the object and removing `typedef` makes it usable the very same way.
This also replaces typedefs with the using keyword. They have better readability, especially for function pointer types, and would allow more flexibility when used with templates.
Remove hard dependency on scenery window by calling a new is scenery set invented function. I don't think this the performance is any worse as it called init_scenery anyway for every call to get_available_entertainers.