-Pre-Release Version 2.2.0rc2 [?? ??? ????]
+Pre-Release Version 2.2.0rc2 [13 JAN 2003]
------------------------------------------
- added support for stereo WAV sound files
+ - moving objects can now have arbitrary animation length
+ - new batch command for dumping level information
+ - added support for background images for all menu screens
+ - added 128 custom elements that can be decorated with own graphics
+ - added some example levels showing how to create custom artwork
+ - added new contributed levels from the following players:
+ + Emanuel Schmieg: "Into The Ice Caves" (22 levels + artwork)
Pre-Release Version 2.2.0rc1 [31 DEC 2002]
------------------------------------------
enginetest:
./Scripts/make_enginetest.sh
+enginetestfast:
+ ./Scripts/make_enginetest.sh fast
+
backup:
./Scripts/make_backup.sh src
-#define COMPILE_DATE_STRING "[2003-01-12 04:55]"
+#define COMPILE_DATE_STRING "[2003-01-13 02:38]"
BorderElement = EL_STEELWALL;
+ level.no_level_file = FALSE;
+
+ if (leveldir_current == NULL) /* only when dumping level */
+ return;
+
/* try to determine better author name than 'anonymous' */
if (strcmp(leveldir_current->author, ANONYMOUS_NAME) != 0)
{
break;
}
}
-
- level.no_level_file = FALSE;
}
static int checkLevelElement(int element)
return chunk_size;
}
-void LoadLevel(int level_nr)
+void LoadLevelFromFilename(char *filename)
{
- char *filename = getLevelFilename(level_nr);
char cookie[MAX_LINE_LEN];
char chunk_name[CHUNK_ID_LEN + 1];
int chunk_size;
fclose(file);
+ if (leveldir_current == NULL) /* only when dumping level */
+ return;
+
if (IS_LEVELCLASS_CONTRIBUTION(leveldir_current) ||
IS_LEVELCLASS_USER(leveldir_current))
{
SetBorderElement();
}
+void LoadLevel(int level_nr)
+{
+ char *filename = getLevelFilename(level_nr);
+
+ LoadLevelFromFilename(filename);
+}
+
static void SaveLevel_VERS(FILE *file, struct LevelInfo *level)
{
putFileVersion(file, level->file_version);
SetFilePermissions(filename, PERMS_PRIVATE);
}
+void DumpLevel(struct LevelInfo *level)
+{
+ printf_line('-', 79);
+ printf("Level xxx (file version %06d, game version %06d)\n",
+ level->file_version, level->game_version);
+ printf_line('-', 79);
+
+ printf("Level Author: '%s'\n", level->author);
+ printf("Level Title: '%s'\n", level->name);
+ printf("\n");
+ printf("Playfield Size: %d x %d\n", level->fieldx, level->fieldy);
+ printf("\n");
+ printf("Level Time: %d seconds\n", level->time);
+ printf("Gems needed: %d\n", level->gems_needed);
+ printf("\n");
+ printf("Time for Magic Wall: %d seconds\n", level->time_magic_wall);
+ printf("Time for Wheel: %d seconds\n", level->time_wheel);
+ printf("Time for Light: %d seconds\n", level->time_light);
+ printf("Time for Timegate: %d seconds\n", level->time_timegate);
+ printf("\n");
+ printf("Amoeba Speed: %d\n", level->amoeba_speed);
+ printf("\n");
+ printf("Gravity: %s\n", (level->gravity ? "yes" : "no"));
+ printf("Double Speed Movement: %s\n", (level->double_speed ? "yes" : "no"));
+ printf("EM style slippery gems: %s\n", (level->em_slippery_gems ? "yes" : "no"));
+
+ printf_line('-', 79);
+}
+
/* ========================================================================= */
/* tape file functions */
}
printf_line('-', 79);
- printf("Tape of Level %d (file version %06d, game version %06d)\n",
+ printf("Tape of Level %03d (file version %06d, game version %06d)\n",
tape->level_nr, tape->file_version, tape->game_version);
printf_line('-', 79);
#include "main.h"
+void LoadLevelFromFilename(char *);
void LoadLevel(int);
void SaveLevel(int);
+void DumpLevel(struct LevelInfo *);
void LoadTapeFromFilename(char *);
void LoadTape(int);
}
#if 1
-static void CheckBuggyBase(int x, int y)
+void CheckBuggyBase(int x, int y)
{
int element = Feld[x][y];
}
#if 1
-static void CheckTrap(int x, int y)
+void CheckTrap(int x, int y)
{
int element = Feld[x][y];
element == EL_SP_BUGGY_BASE_ACTIVATING ||
element == EL_SP_BUGGY_BASE_ACTIVE)
CheckBuggyBase(x, y);
-#endif
-#if 0
else if (element == EL_TRAP ||
element == EL_TRAP_ACTIVE)
CheckTrap(x, y);
-#endif
-#if 0
- else if (element == EL_TRAP)
- CheckTrap(x, y);
-#endif
-#if 0
- else if (element == EL_TRAP_ACTIVE)
- CheckTrap(x, y);
-#endif
-#if 0
else if (IS_BELT_ACTIVE(element))
DrawBeltAnimation(x, y, element);
else if (element == EL_SWITCHGATE_OPENING)
exit(0);
}
+ else if (strncmp(command, "dump level ", 11) == 0)
+ {
+ char *filename = &command[11];
+
+ if (access(filename, F_OK) != 0)
+ Error(ERR_EXIT, "cannot open file '%s'", filename);
+
+ LoadLevelFromFilename(filename);
+ DumpLevel(&level);
+
+ exit(0);
+ }
else if (strncmp(command, "dump tape ", 10) == 0)
{
char *filename = &command[10];
" \"print graphicsinfo.conf\" print default graphics config\n"
" \"print soundsinfo.conf\" print default sounds config\n"
" \"print musicinfo.conf\" print default music config\n"
+ " \"dump level FILE\" dump level data from FILE\n"
" \"dump tape FILE\" dump tape data from FILE\n"
" \"autoplay LEVELDIR\" play level tapes for LEVELDIR\n"
"\n",
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 2
#define PROGRAM_VERSION_PATCH 0
-#define PROGRAM_VERSION_STRING "2.2.0rc2"
+#define PROGRAM_VERSION_STRING "2.2.0rc3"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"