about summary refs log tree commit diff
path: root/src/tools/map_resave.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/map_resave.cpp')
-rw-r--r--src/tools/map_resave.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/tools/map_resave.cpp b/src/tools/map_resave.cpp
new file mode 100644
index 00000000..a6c55c43
--- /dev/null
+++ b/src/tools/map_resave.cpp
@@ -0,0 +1,44 @@
+// copyright (c) 2007 magnus auvinen, see licence.txt for more info
+#include <base/system.h>
+#include <engine/shared/datafile.h>
+#include <engine/storage.h>
+
+int main(int argc, const char **argv)
+{
+	IStorage *pStorage = CreateStorage("Teeworlds", argv[0]);
+	int Index, Id = 0, Type = 0, Size;
+	void *pPtr;
+	char aFileName[1024];
+	CDataFileReader DataFile;
+	CDataFileWriter df;
+
+	if(argc != 3)
+		return -1;
+
+	str_format(aFileName, sizeof(aFileName), "maps/%s", argv[2]);
+
+	if(!DataFile.Open(pStorage, argv[1]))
+		return -1;
+	if(!df.Open(pStorage, aFileName))
+		return -1;
+
+	// add all items
+	for(Index = 0; Index < DataFile.NumItems(); Index++)
+	{	
+		pPtr = DataFile.GetItem(Index, &Type, &Id);
+		Size = DataFile.GetItemSize(Index);
+		df.AddItem(Type, Id, Size, pPtr);
+	}
+
+	// add all data
+	for(Index = 0; Index < DataFile.NumData(); Index++)
+	{
+		pPtr = DataFile.GetData(Index);
+		Size = DataFile.GetDataSize(Index);
+		df.AddData(Size, pPtr);
+	}
+
+	DataFile.Close();
+	df.Finish();
+	return 0;
+}