- if (top_dir != NULL)
- {
- if (tree_type == TREE_TYPE_LEVEL_DIR)
- AddUserLevelSetToLevelInfo(top_dir);
- else
- AddUserArtworkSetToArtworkInfo(top_dir, tree_type);
- }
+ return FALSE;
+ }
+
+ char *top_dir = ExtractZipFileIntoDirectory(filename, directory, tree_type);
+
+ if (top_dir == NULL)
+ {
+ // error message already issued by "ExtractZipFileIntoDirectory()"
+
+ return FALSE;
+ }
+
+ AddUserTreeSetToTreeInfo(top_dir, tree_type);
+
+ // when adding new level set in main menu, select it as current level set
+ if (tree_type == TREE_TYPE_LEVEL_DIR &&
+ game_status == GAME_MODE_MAIN &&
+ !game.request_active)
+ {
+ // change current level set to newly added level set from zip file
+ leveldir_current = getTreeInfoFromIdentifier(leveldir_first, top_dir);
+
+ // change current level number to first level of newly added level set
+ level_nr = leveldir_current->first_level;
+
+ // redraw screen to reflect changed level set
+ DrawMainMenu();
+
+ // save this level set and level number as last selected level set
+ SaveLevelSetup_LastSeries();
+ SaveLevelSetup_SeriesInfo();