#ifndef DEMO_H
#define DEMO_H
+#include <time.h>
+#include "level.h"
+
+/*---------------------------------------------------------------------------*/
+
+/* Demo information structure (header) */
+struct demo
+{
+ char name[PATHMAX]; /* demo basename */
+ char filename[MAXSTR]; /* demo path */
+
+ /* The following reflects the file structure. */
+
+ /* magic number */
+ /* replay file version */
+ int timer; /* elapsed time */
+ int coins; /* coin number */
+ int state; /* how the replay end */
+ int mode; /* game mode */
+ time_t date; /* date of creation */
+ char player[MAXNAM]; /* player name */
+ char shot[PATHMAX]; /* image filename */
+ char file[PATHMAX]; /* level filename */
+ char back[PATHMAX]; /* level bg filename */
+ char grad[PATHMAX]; /* level gradiant filename */
+ char song[PATHMAX]; /* level song filename */
+ int time; /* time limit (! training mode) */
+ int goal; /* coin to open the goal (! training mode) */
+ int score; /* sum of coins (challenge mode) */
+ int balls; /* number of balls (challenge mode) */
+ int times; /* total time (challenge mode) */
+};
+
+
/*---------------------------------------------------------------------------*/
-#define MAXDEMO 64
+#define MAXDEMO 256
+
+int demo_scan(void);
+const char *demo_pick(void);
+const struct demo *demo_get(int);
-int demo_scan(void);
-const char *demo_pick(void);
-const char *demo_name(int);
-const char *demo_shot(int);
-int demo_coins(int);
-int demo_clock(int);
+const char *date_to_str(time_t);
-int demo_exists(char *);
+int demo_exists(const char *);
void demo_unique(char *);
/*---------------------------------------------------------------------------*/
-int demo_play_init(const char *, const char *, const char *,
- const char *, const char *, const char *,
- int, int, int, int, int);
+int demo_play_init(const char *, const struct level *,
+ const struct level_game *);
void demo_play_step(float);
-void demo_play_stat(int, int);
-void demo_play_stop(const char *);
+void demo_play_stop(const struct level_game *);
+int demo_play_saved(void);
+void demo_play_save(const char *);
/*---------------------------------------------------------------------------*/
-int demo_replay_init(const char *, int *, int *, int *, int *);
+int demo_replay_init(const char *, struct level_game *);
int demo_replay_step(float *);
void demo_replay_stop(int);
+void demo_replay_dump_info(void);
+const struct demo *curr_demo_replay(void);
/*---------------------------------------------------------------------------*/