X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;fp=src%2Flibgame%2Fsetup.c;h=32ae11215a1a87626d9acdac70e99d6ea62cafaf;hp=9c21b95ac4dd19a4e692780e60bbef679667251f;hb=3bb225da5092d0741870829d9f8f8642070d29c5;hpb=7c04ddc404bb1d13df41a1f808924f5f89c6749b diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 9c21b95a..32ae1121 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -4609,6 +4609,35 @@ static void UpdateLastPlayedLevels_List(void) setString(&last_level_series[0], leveldir_current->identifier); } +static TreeInfo *StoreOrRestoreLastPlayedLevels(TreeInfo *node, boolean store) +{ + static char *identifier = NULL; + + if (store) + { + setString(&identifier, (node && node->is_copy ? node->identifier : NULL)); + + return NULL; // not used + } + else + { + TreeInfo *node_new = getTreeInfoFromIdentifierExt(leveldir_first, + identifier, + TREE_NODE_TYPE_COPY); + return (node_new != NULL ? node_new : node); + } +} + +void StoreLastPlayedLevels(TreeInfo *node) +{ + StoreOrRestoreLastPlayedLevels(node, TRUE); +} + +void RestoreLastPlayedLevels(TreeInfo **node) +{ + *node = StoreOrRestoreLastPlayedLevels(*node, FALSE); +} + void LoadLevelSetup_LastSeries(void) { // --------------------------------------------------------------------------