genworld.c
changeset 5145 d4a8882b32ef
parent 5048 b784951def0a
child 5155 a479ef9c16a5
--- a/genworld.c	Wed Nov 22 08:49:40 2006 +0000
+++ b/genworld.c	Wed Nov 22 14:14:02 2006 +0000
@@ -165,6 +165,15 @@
 }
 
 /**
+ * Set here the function, if any, that you want to be called when landscape
+ *  generation is aborted.
+ */
+void GenerateWorldSetAbortCallback(gw_abort_proc *proc)
+{
+	_gw.abortp = proc;
+}
+
+/**
  * This will wait for the thread to finish up his work. It will not continue
  *  till the work is done.
  */
@@ -201,12 +210,15 @@
 	/* Clean up - in SE create an empty map, otherwise, go to intro menu */
 	_switch_mode = (_game_mode == GM_EDITOR) ? SM_EDITOR : SM_MENU;
 
+	if (_gw.abortp != NULL) _gw.abortp();
+
 	if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE);
 	/* Show all vital windows again, because we have hidden them */
 	if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows();
 	_gw.active   = false;
 	_gw.thread   = NULL;
 	_gw.proc     = NULL;
+	_gw.abortp   = NULL;
 	_gw.threaded = false;
 
 	DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0);
@@ -229,6 +241,7 @@
 	_gw.size_y = size_y;
 	_gw.active = true;
 	_gw.abort  = false;
+	_gw.abortp = NULL;
 	_gw.lp     = _local_player;
 	_gw.wait_for_draw = false;
 	_gw.quit_thread   = false;