#include "config.h"
#include "demo.h"
+#include "text.h"
#include "level.h"
#include "mode.h"
#include "set.h"
memset(level, 0, sizeof (struct level));
memset(&sol, 0, sizeof (sol));
- /* Try to load the sol file */
- if (!sol_load_only_file(&sol, config_data(filename)))
+#define format \
+ L_("Error while loading level file '%s': %s\n")
+#define default_error \
+ L_("Not a valid level file")
+
+ if (!sol_load_only_head(&sol, config_data(filename)))
{
- fprintf(stderr,
- _("Error while loading level file '%s': %s\n"), filename,
- errno ? strerror(errno) : _("Not a valid level file"));
+ const char *error = errno ? strerror(errno) : default_error;
+ fprintf(stderr, format, filename, error);
return 0;
}
+#undef format
+#undef default_error
+
strcpy(level->file, filename);
/* Init hs with default values */
/*---------------------------------------------------------------------------*/
+static unsigned int do_level_init = 1;
+
int level_replay(const char *filename)
{
return demo_replay_init(filename, curr_lg());
{
struct level_game *lg = curr_lg();
- memset(lg, 0, sizeof (struct level_game));
+ if (do_level_init)
+ {
+ memset(lg, 0, sizeof (struct level_game));
- lg->mode = m;
- lg->level = l;
- lg->balls = 3;
+ lg->mode = m;
+ lg->level = l;
+ lg->balls = 3;
+ }
lg->goal = (lg->mode == MODE_PRACTICE) ? 0 : lg->level->goal;
lg->time = (lg->mode == MODE_PRACTICE) ? 0 : lg->level->time;
void level_stop(void)
{
demo_play_stop();
+ do_level_init = 1;
}
int level_next(void)
level_stop();
lg->level = lg->next_level;
+ do_level_init = 0;
+
return level_play(lg->level, lg->mode);
}
int level_same(void)
{
level_stop();
+ do_level_init = 0;
return level_play(curr_lg()->level, curr_lg()->mode);
}