void dock_dead_undock_objects(object *objp1, object *objp2) { #ifndef NDEBUG if ((dead_dock_find_instance(objp1, objp2) == NULL) || (dead_dock_find_instance(objp2, objp1) == NULL)) { Error(LOCATION, "Trying to undock an object that isn't docked!\n"); } #endif // remove objects from each others' dock lists dead_dock_remove_instance(objp1, objp2); dead_dock_remove_instance(objp2, objp1); }
// dock management functions ------------------------------------------------------------------------------------- void dock_dead_dock_objects(object *objp1, int dockpoint1, object *objp2, int dockpoint2) { #ifndef NDEBUG if ((dead_dock_find_instance(objp1, objp2) != NULL) || (dead_dock_find_instance(objp2, objp1) != NULL)) { Error(LOCATION, "Trying to dock an object that's already docked!\n"); } if ((dead_dock_find_instance(objp1, dockpoint1) != NULL) || (dead_dock_find_instance(objp2, dockpoint2) != NULL)) { Error(LOCATION, "Trying to dock to a dockpoint that's in use!\n"); } #endif // put objects on each others' dock lists dead_dock_add_instance(objp1, dockpoint1, objp2); dead_dock_add_instance(objp2, dockpoint2, objp1); }
int dock_find_dead_dockpoint_used_by_object(object *objp, object *other_objp) { Assert(objp != NULL); Assert(other_objp != NULL); dock_instance *result = dead_dock_find_instance(objp, other_objp); if (result == NULL) return -1; else return result->dockpoint_used; }