projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added checkbox to player settings in editor if first player solves level
[rocksndiamonds.git]
/
src
/
files.c
diff --git
a/src/files.c
b/src/files.c
index bb1ce49770b1e3b4a85995485ecb586cd958b0b6..eb9d37e304878de634d0df8f435989f73d730d3d 100644
(file)
--- a/
src/files.c
+++ b/
src/files.c
@@
-251,6
+251,12
@@
static struct LevelFileConfigInfo chunk_config_INFO[] =
&li.auto_count_gems, FALSE
},
&li.auto_count_gems, FALSE
},
+ {
+ -1, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(11),
+ &li.solved_by_one_player, FALSE
+ },
+
{
-1, -1,
-1, -1,
{
-1, -1,
-1, -1,
@@
-1915,6
+1921,9
@@
static void ActivateLevelTemplate()
/* overwrite all individual level settings from template level settings */
level = level_template;
/* overwrite all individual level settings from template level settings */
level = level_template;
+ /* restore level file info */
+ level.file_info = level_backup.file_info;
+
/* restore playfield size */
level.fieldx = level_backup.fieldx;
level.fieldy = level_backup.fieldy;
/* restore playfield size */
level.fieldx = level_backup.fieldx;
level.fieldy = level_backup.fieldy;
@@
-6392,6
+6401,10
@@
static void LoadLevel_InitVersion(struct LevelInfo *level)
/* EM style elements always chain-exploded in R'n'D engine before 3.2.6 */
if (level->game_version < VERSION_IDENT(3,2,6,0))
level->em_explodes_by_fire = TRUE;
/* EM style elements always chain-exploded in R'n'D engine before 3.2.6 */
if (level->game_version < VERSION_IDENT(3,2,6,0))
level->em_explodes_by_fire = TRUE;
+
+ /* levels were solved by the first player entering an exit up to 4.1.0.0 */
+ if (level->game_version <= VERSION_IDENT(4,1,0,0))
+ level->solved_by_one_player = TRUE;
}
static void LoadLevel_InitStandardElements(struct LevelInfo *level)
}
static void LoadLevel_InitStandardElements(struct LevelInfo *level)
@@
-6617,21
+6630,21
@@
void LoadLevelTemplate(int nr)
LoadLevelTemplate_LoadAndInit();
}
LoadLevelTemplate_LoadAndInit();
}
-static void Load
LevelTemplateFromNetwork(struct LevelFileInfo *lfi_network_template
)
+static void Load
NetworkLevelTemplate(struct NetworkLevelInfo *network_level
)
{
{
- copyLevelFileInfo(
lfi_network_template
, &level_template.file_info);
+ copyLevelFileInfo(
&network_level->tmpl_info
, &level_template.file_info);
LoadLevelTemplate_LoadAndInit();
}
LoadLevelTemplate_LoadAndInit();
}
-static void LoadLevel_LoadAndInit(struct
LevelFileInfo *lfi_network_template
)
+static void LoadLevel_LoadAndInit(struct
NetworkLevelInfo *network_level
)
{
LoadLevelFromFileInfo(&level, &level.file_info, FALSE);
if (level.use_custom_template)
{
{
LoadLevelFromFileInfo(&level, &level.file_info, FALSE);
if (level.use_custom_template)
{
- if (
lfi_network_template
!= NULL)
- Load
LevelTemplateFromNetwork(lfi_network_template
);
+ if (
network_level
!= NULL)
+ Load
NetworkLevelTemplate(network_level
);
else
LoadLevelTemplate(-1);
}
else
LoadLevelTemplate(-1);
}
@@
-6645,6
+6658,8
@@
static void LoadLevel_LoadAndInit(struct LevelFileInfo *lfi_network_template)
void LoadLevel(int nr)
{
void LoadLevel(int nr)
{
+ SetLevelSetInfo(leveldir_current->identifier, nr);
+
setLevelFileInfo(&level.file_info, nr);
LoadLevel_LoadAndInit(NULL);
setLevelFileInfo(&level.file_info, nr);
LoadLevel_LoadAndInit(NULL);
@@
-6657,12
+6672,14
@@
void LoadLevelInfoOnly(int nr)
LoadLevelFromFileInfo(&level, &level.file_info, TRUE);
}
LoadLevelFromFileInfo(&level, &level.file_info, TRUE);
}
-void LoadLevelFromNetwork(struct LevelFileInfo *lfi_network_level,
- struct LevelFileInfo *lfi_network_template)
+void LoadNetworkLevel(struct NetworkLevelInfo *network_level)
{
{
- copyLevelFileInfo(lfi_network_level, &level.file_info);
+ SetLevelSetInfo(network_level->leveldir_identifier,
+ network_level->file_info.nr);
+
+ copyLevelFileInfo(&network_level->file_info, &level.file_info);
- LoadLevel_LoadAndInit(
lfi_network_template
);
+ LoadLevel_LoadAndInit(
network_level
);
}
static int SaveLevel_VERS(FILE *file, struct LevelInfo *level)
}
static int SaveLevel_VERS(FILE *file, struct LevelInfo *level)
@@
-8281,7
+8298,8
@@
void SaveScore(int nr)
char *filename = getScoreFilename(nr);
FILE *file;
char *filename = getScoreFilename(nr);
FILE *file;
- InitScoreDirectory(leveldir_current->subdir);
+ /* used instead of "leveldir_current->subdir" (for network games) */
+ InitScoreDirectory(levelset.identifier);
if (!(file = fopen(filename, MODE_WRITE)))
{
if (!(file = fopen(filename, MODE_WRITE)))
{