{
// check if the program's main data base directory is configured
if (!strEqual(base_path, "."))
- return base_path;
+ return getStringCopy(base_path);
/* if the program is configured to start from current directory (default),
determine program package directory from program binary (some versions
createDirectory(getUserLevelDir(NULL), "main user level", PERMS_PRIVATE);
createDirectory(getUserLevelDir(level_subdir), "user level", PERMS_PRIVATE);
- SaveUserLevelInfo();
+ if (setup.internal.create_user_levelset)
+ SaveUserLevelInfo();
}
}
while (node)
{
- if (node->graphics_set_ecs && !setup.prefer_aga_graphics &&
- !strEqual(node->graphics_set, node->graphics_set_ecs))
- {
- setString(&node->graphics_set, node->graphics_set_ecs);
- settings_changed = TRUE;
- }
- else if (node->graphics_set_aga && setup.prefer_aga_graphics &&
- !strEqual(node->graphics_set, node->graphics_set_aga))
+ boolean want_ecs = (setup.prefer_aga_graphics == FALSE);
+ boolean want_aga = (setup.prefer_aga_graphics == TRUE);
+ boolean has_only_ecs = (!node->graphics_set && !node->graphics_set_aga);
+ boolean has_only_aga = (!node->graphics_set && !node->graphics_set_ecs);
+ char *graphics_set = NULL;
+
+ if (node->graphics_set_ecs && (want_ecs || has_only_ecs))
+ graphics_set = node->graphics_set_ecs;
+
+ if (node->graphics_set_aga && (want_aga || has_only_aga))
+ graphics_set = node->graphics_set_aga;
+
+ if (graphics_set && !strEqual(node->graphics_set, graphics_set))
{
- setString(&node->graphics_set, node->graphics_set_aga);
+ setString(&node->graphics_set, graphics_set);
settings_changed = TRUE;
}
#define LEVELINFO_TOKEN_SPECIAL_FLAGS 24
#define LEVELINFO_TOKEN_HANDICAP 25
#define LEVELINFO_TOKEN_SKIP_LEVELS 26
+#define LEVELINFO_TOKEN_USE_EMC_TILES 27
-#define NUM_LEVELINFO_TOKENS 27
+#define NUM_LEVELINFO_TOKENS 28
static LevelDirTree ldi;
{ TYPE_STRING, &ldi.level_filetype, "filetype" },
{ TYPE_STRING, &ldi.special_flags, "special_flags" },
{ TYPE_BOOLEAN, &ldi.handicap, "handicap" },
- { TYPE_BOOLEAN, &ldi.skip_levels, "skip_levels" }
+ { TYPE_BOOLEAN, &ldi.skip_levels, "skip_levels" },
+ { TYPE_BOOLEAN, &ldi.use_emc_tiles, "use_emc_tiles" }
};
static struct TokenInfo artworkinfo_tokens[] =
ti->readonly = TRUE;
ti->handicap = TRUE;
ti->skip_levels = FALSE;
+
+ ti->use_emc_tiles = FALSE;
}
}
ti->readonly = parent->readonly;
ti->handicap = parent->handicap;
ti->skip_levels = parent->skip_levels;
+
+ ti->use_emc_tiles = parent->use_emc_tiles;
}
}
ti_copy->handicap = ti->handicap;
ti_copy->skip_levels = ti->skip_levels;
+ ti_copy->use_emc_tiles = ti->use_emc_tiles;
+
ti_copy->color = ti->color;
ti_copy->class_desc = getStringCopy(ti->class_desc);
ti_copy->handicap_level = ti->handicap_level;
{
// get level info tree node of personal user level set
tree_node_old = getTreeInfoFromIdentifier(leveldir_first, getLoginName());
+
+ // this may happen if "setup.internal.create_user_levelset" is FALSE
+ // or if file "levelinfo.conf" is missing in personal user level set
+ if (tree_node_old == NULL)
+ tree_node_old = leveldir_first->node_group;
}
else
{