rnd-20040918-1-src
[rocksndiamonds.git] / src / files.h
1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
3 *----------------------------------------------------------*
4 * (c) 1995-2002 Artsoft Entertainment                      *
5 *               Holger Schemel                             *
6 *               Detmolder Strasse 189                      *
7 *               33604 Bielefeld                            *
8 *               Germany                                    *
9 *               e-mail: info@artsoft.org                   *
10 *----------------------------------------------------------*
11 * files.h                                                  *
12 ***********************************************************/
13
14 #ifndef FILES_H
15 #define FILES_H
16
17 #include "main.h"
18
19
20 /* values for level file type identifier */
21 #define LEVEL_FILE_TYPE_UNKNOWN         0
22 #define LEVEL_FILE_TYPE_RND             1
23 #define LEVEL_FILE_TYPE_BD              2
24 #define LEVEL_FILE_TYPE_EM              3
25 #define LEVEL_FILE_TYPE_SP              4
26 #define LEVEL_FILE_TYPE_DX              5
27 #define LEVEL_FILE_TYPE_SB              6
28 #define LEVEL_FILE_TYPE_DC              7
29
30 #define NUM_LEVEL_FILE_TYPES            8
31
32 #define GAME_ENGINE_TYPE_UNKNOWN        LEVEL_FILE_TYPE_UNKNOWN
33 #define GAME_ENGINE_TYPE_RND            LEVEL_FILE_TYPE_RND
34 #define GAME_ENGINE_TYPE_EM             LEVEL_FILE_TYPE_EM
35
36 #define NUM_ENGINE_TYPES                3
37
38 #define LEVEL_PACKED_START              100
39 #define PACKED_LEVELS(x)                (LEVEL_PACKED_START + x)
40
41 #define LEVEL_FILE_TYPE_RND_PACKED      PACKED_LEVELS(LEVEL_FILE_TYPE_RND)
42 #define LEVEL_FILE_TYPE_EM_PACKED       PACKED_LEVELS(LEVEL_FILE_TYPE_EM)
43
44 #define IS_SINGLE_LEVEL_FILE(x)         (x < LEVEL_PACKED_START)
45 #define IS_PACKED_LEVEL_FILE(x)         (x > LEVEL_PACKED_START)
46
47
48 void setElementChangePages(struct ElementInfo *, int);
49 void setElementChangeInfoToDefaults(struct ElementChangeInfo *);
50
51 char *getDefaultLevelFilename(int);
52
53 void LoadLevelFromFilename(struct LevelInfo *, char *);
54 void LoadLevel(int);
55 void LoadLevelTemplate(int);
56 void SaveLevel(int);
57 void SaveLevelTemplate();
58 void DumpLevel(struct LevelInfo *);
59
60 void CopyNativeLevel_RND_to_EM(struct LevelInfo *);
61 void CopyNativeLevel_EM_to_RND(struct LevelInfo *);
62
63 void LoadTapeFromFilename(char *);
64 void LoadTape(int);
65 void LoadSolutionTape(int);
66 void SaveTape(int);
67 void DumpTape(struct TapeInfo *);
68
69 void LoadScore(int);
70 void SaveScore(int);
71
72 void LoadSetup();
73 void SaveSetup();
74
75 void LoadCustomElementDescriptions();
76 void LoadSpecialMenuDesignSettings();
77 void LoadUserDefinedEditorElementList(int **, int *);
78 void LoadMusicInfo();
79 void LoadHelpAnimInfo();
80 void LoadHelpTextInfo();
81
82 void ConvertLevels(void);
83
84 #endif  /* FILES_H */