leveleditor level-settings menu is working now. introduced string_list_type.
[supertux.git] / src / type.c
index 69c61f3..ee23c27 100644 (file)
@@ -11,6 +11,8 @@
 //
 
 #include "SDL_image.h"
+#include "string.h"
+#include "stdlib.h"
 #include "setup.h"
 #include "globals.h"
 #include "screen.h"
 #include "type.h"
 #include "scene.h"
 
+void string_list_init(string_list_type* pstring_list)
+{
+pstring_list->num_items = 0;
+pstring_list->active_item = -1;
+pstring_list->item = NULL;
+}
 
+char* string_list_active(string_list_type* pstring_list)
+{
+if(pstring_list == NULL)
+return "";
+
+if(pstring_list->active_item != -1)
+return pstring_list->item[pstring_list->active_item];
+else
+return "";
+}
+
+void string_list_add_item(string_list_type* pstring_list, char* str)
+{
+char *pnew_string;
+pnew_string = (char*) malloc(sizeof(char)*(strlen(str)+1));
+strcpy(pnew_string,str);
+++pstring_list->num_items;
+pstring_list->item = (char**) realloc(pstring_list->item,sizeof(char**)*pstring_list->num_items);
+pstring_list->item[pstring_list->num_items-1] = pnew_string;
+if(pstring_list->active_item == -1)
+pstring_list->active_item = 0;
+}
+
+void string_list_copy(string_list_type* pstring_list, string_list_type pstring_list_orig)
+{
+int i;
+string_list_free(pstring_list);
+for(i = 0; i < pstring_list_orig.num_items; ++i)
+string_list_add_item(pstring_list,pstring_list_orig.item[i]);
+}
+
+void string_list_free(string_list_type* pstring_list)
+{
+if(pstring_list != NULL)
+{
+  int i;
+  for(i=0; i < pstring_list->num_items; ++i)
+    free(pstring_list->item[i]);
+free(pstring_list->item);
+pstring_list->item = NULL;
+pstring_list->num_items = 0;
+pstring_list->active_item = -1;
+}
+}