X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=581aac21420c1ce6cb6a12f1a660ca31b52f68c9;hb=f44158a4e1de9725bdd1d751b4a4005d29b51271;hp=a135b0d58cf694259d16568d5f4d45dd1aee30f3;hpb=5985bdeb8c45af7f98466f3bda30b1913a2fc9cf;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index a135b0d5..581aac21 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -1511,6 +1511,8 @@ char *getHomeDir(void) if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, dir))) strcpy(dir, "."); } +#elif defined(PLATFORM_EMSCRIPTEN) + dir = "/persistent"; #elif defined(PLATFORM_UNIX) if (dir == NULL) { @@ -2518,6 +2520,7 @@ static void setTreeInfoToDefaults(TreeInfo *ti, int type) ti->sort_priority = LEVELCLASS_UNDEFINED; // default: least priority ti->latest_engine = FALSE; // default: get from level ti->parent_link = FALSE; + ti->is_copy = FALSE; ti->in_user_dir = FALSE; ti->user_defined = FALSE; ti->color = 0; @@ -2599,6 +2602,7 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ti, TreeInfo *parent) ti->sort_priority = parent->sort_priority; ti->latest_engine = parent->latest_engine; ti->parent_link = FALSE; + ti->is_copy = FALSE; ti->in_user_dir = parent->in_user_dir; ti->user_defined = parent->user_defined; ti->color = parent->color; @@ -2699,6 +2703,7 @@ static TreeInfo *getTreeInfoCopy(TreeInfo *ti) ti_copy->level_group = ti->level_group; ti_copy->parent_link = ti->parent_link; + ti_copy->is_copy = ti->is_copy; ti_copy->in_user_dir = ti->in_user_dir; ti_copy->user_defined = ti->user_defined; ti_copy->readonly = ti->readonly; @@ -2854,7 +2859,7 @@ static TreeInfo *createParentTreeInfoNode(TreeInfo *node_parent) setString(&ti_new->subdir, STRING_PARENT_DIRECTORY); setString(&ti_new->fullpath, node_parent->fullpath); - ti_new->sort_priority = node_parent->sort_priority; + ti_new->sort_priority = LEVELCLASS_PARENT; ti_new->latest_engine = node_parent->latest_engine; setString(&ti_new->class_desc, getLevelClassDescription(ti_new)); @@ -2877,14 +2882,14 @@ static TreeInfo *createTopTreeInfoNode(TreeInfo *node_first) ti_new->node_parent = NULL; ti_new->parent_link = FALSE; - setString(&ti_new->identifier, node_first->identifier); + setString(&ti_new->identifier, "top_tree_node"); setString(&ti_new->name, TREE_INFOTEXT(type)); setString(&ti_new->name_sorting, ti_new->name); setString(&ti_new->subdir, STRING_TOP_DIRECTORY); setString(&ti_new->fullpath, "."); - ti_new->sort_priority = node_first->sort_priority;; + ti_new->sort_priority = LEVELCLASS_TOP; ti_new->latest_engine = node_first->latest_engine; setString(&ti_new->class_desc, TREE_INFOTEXT(type)); @@ -4506,9 +4511,11 @@ static void InitLastPlayedLevels_ParentNode(void) setTreeInfoToDefaultsFromParent(leveldir_new, leveldir_first); leveldir_new->level_group = TRUE; + leveldir_new->sort_priority = LEVELCLASS_LAST_PLAYED_LEVEL; setString(&leveldir_new->identifier, TOKEN_STR_LAST_LEVEL_SERIES); setString(&leveldir_new->name, "<< (last played level sets)"); + setString(&leveldir_new->name_sorting, leveldir_new->name); pushTreeInfo(leveldir_top, leveldir_new); @@ -4543,16 +4550,22 @@ void UpdateLastPlayedLevels_TreeInfo(void) freeTreeInfo(*node_new); + *node_new = NULL; + for (i = 0; last_level_series[i] != NULL; i++) { LevelDirTree *node_last = getTreeInfoFromIdentifier(leveldir_first, last_level_series[i]); + if (node_last == NULL) + continue; *node_new = getTreeInfoCopy(node_last); // copy complete node (*node_new)->node_top = &leveldir_first; // correct top node link (*node_new)->node_parent = leveldir_last; // correct parent node link + (*node_new)->is_copy = TRUE; // mark entry as node copy + (*node_new)->node_group = NULL; (*node_new)->next = NULL;