From 1944bfa6fb9a995c28c7c98975cbb1c90150610f Mon Sep 17 00:00:00 2001
From: Joris <joris.dauphin@gmail.com>
Date: Thu, 10 May 2012 17:44:26 +0200
Subject: [PATCH] Add a lua call back when game ends : CleanGame_Lua.

---
 src/include/script.h        |  2 ++
 src/stratagus/script.cpp    | 14 ++++++++++++++
 src/stratagus/stratagus.cpp |  1 +
 3 files changed, 17 insertions(+)

diff --git a/src/include/script.h b/src/include/script.h
index f576b94d1..a359979c4 100644
--- a/src/include/script.h
+++ b/src/include/script.h
@@ -341,6 +341,8 @@ void FreeNumberDesc(NumberDesc *number);  /// Free number description content. (
 void FreeUnitDesc(UnitDesc *unitdesc);    /// Free unit description content. (no pointer itself).
 void FreeStringDesc(StringDesc *s);       /// Frre string description content. (no pointer itself).
 
+// call the lua function: CleanGame_Lua.
+void CleanGame_Lua();
 
 //@}
 
diff --git a/src/stratagus/script.cpp b/src/stratagus/script.cpp
index d01478b32..56ec97a06 100644
--- a/src/stratagus/script.cpp
+++ b/src/stratagus/script.cpp
@@ -2834,4 +2834,18 @@ void SaveCcl(CFile &file)
 	file.printf("SetSpeedResearch(%d)\n", SpeedResearch);
 }
 
+
+
+void CleanGame_Lua()
+{
+	lua_getglobal(Lua, "CleanGame_Lua");
+	if (lua_isfunction(Lua, -1)) {
+		LuaCall(0, 1);
+	} else {
+		lua_pop(Lua, 1);
+	}
+}
+
+
+
 //@}
diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp
index a2d3bde9c..2161e1482 100644
--- a/src/stratagus/stratagus.cpp
+++ b/src/stratagus/stratagus.cpp
@@ -403,6 +403,7 @@ void CleanGame()
 	EndReplayLog();
 	CleanMessages();
 
+	CleanGame_Lua();
 	CleanTriggers();
 	CleanAi();
 	CleanGroups();