Kreator reports that "Pyramids of Luxoran" crashes due to a valptridx
sanity check. The level incorrectly attempts to open a wall on a
segment/side which has no wall.
Add an error check and a con_printf suggesting that the level author
needs to fix the invalid trigger.
Kreator reports that a level from back when Descent was new fails the
test for bogus matcen triggers. This level cannot be played when that
test throws an exception, so downgrade the exception to a CON_URGENT
message. This will hopefully deter level authors from creating any new
levels with this problem, but will allow users to play existing levels.
escort_get_goal_segment expected exists_in_mine to return object_none or
a valid object. In some mines, exists_in_mine will return
object_guidebot_cannot_reach, which is neither object_none nor a valid
object. Exclude reading the segment of the unreachable object.
Allow dcx::window struct to be subclassed step 3. This step adds the window destructor and both requires and implements the window to be deleted by the event handler/client in all cases.
Allow dcx::window struct to be subclassed step 2. This step renames and reconfigures window_create in window.cpp to be the main constructor. Also add a template constructor that allows an event handler that takes a subclass of window.
Allow dcx::window struct to be subclassed step 1. This step moves the definition for the window struct into window.h, keeping all member variables private and declaring the window related functions as 'friends'. This avoids changes to source files that use the window struct at this stage. Also moving some of the simpler functions in window.cpp into the struct definition to inline them. I would prefer to use class methods, so changing some of these to class methods as well.