X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=ff600579fd8150761456211a422276cb30120137;hp=793151ca109bd972eabbfb996811111871b4854a;hb=dd923608f42e41f8d77c5190e5ab613bbc7b6d21;hpb=4fb7d637c3bcc3381918636fdd22733ff7bae3ac diff --git a/src/files.c b/src/files.c index 793151ca..ff600579 100644 --- a/src/files.c +++ b/src/files.c @@ -1608,18 +1608,21 @@ static void setLevelInfoToDefaults_Level(struct LevelInfo *level) level->encoding_16bit_yamyam = TRUE; level->encoding_16bit_amoeba = TRUE; - for (x = 0; x < MAX_LEV_FIELDX; x++) - for (y = 0; y < MAX_LEV_FIELDY; y++) - level->field[x][y] = EL_SAND; - + /* clear level name and level author string buffers */ for (i = 0; i < MAX_LEVEL_NAME_LEN; i++) level->name[i] = '\0'; for (i = 0; i < MAX_LEVEL_AUTHOR_LEN; i++) level->author[i] = '\0'; + /* set level name and level author to default values */ strcpy(level->name, NAMELESS_LEVEL_NAME); strcpy(level->author, ANONYMOUS_NAME); + /* set level playfield to playable default level with player and exit */ + for (x = 0; x < MAX_LEV_FIELDX; x++) + for (y = 0; y < MAX_LEV_FIELDY; y++) + level->field[x][y] = EL_SAND; + level->field[0][0] = EL_PLAYER_1; level->field[STD_LEV_FIELDX - 1][STD_LEV_FIELDY - 1] = EL_EXIT_CLOSED; @@ -3743,7 +3746,8 @@ static void CopyNativeTape_SP_to_RND(struct LevelInfo *level) tape.pos[i].delay = demo_repeat + 1; } - tape.length_seconds = GetTapeLength(); + tape.length_frames = GetTapeLengthFrames(); + tape.length_seconds = GetTapeLengthSeconds(); } @@ -6217,6 +6221,12 @@ static void LoadLevel_InitPlayfield(struct LevelInfo *level, char *filename) level->field[x][y] = getMappedElementByVersion(level->field[x][y], level->game_version); + /* clear unused playfield data (nicer if level gets resized in editor) */ + for (x = 0; x < MAX_LEV_FIELDX; x++) + for (y = 0; y < MAX_LEV_FIELDY; y++) + if (x >= level->fieldx || y >= level->fieldy) + level->field[x][y] = EL_EMPTY; + /* copy elements to runtime playfield array */ for (x = 0; x < MAX_LEV_FIELDX; x++) for (y = 0; y < MAX_LEV_FIELDY; y++) @@ -7430,7 +7440,8 @@ void LoadTape_SokobanSolution(char *filename) if (tape.no_valid_file) return; - tape.length_seconds = GetTapeLength(); + tape.length_frames = GetTapeLengthFrames(); + tape.length_seconds = GetTapeLengthSeconds(); } void LoadTapeFromFilename(char *filename) @@ -7572,7 +7583,8 @@ void LoadTapeFromFilename(char *filename) closeFile(file); - tape.length_seconds = GetTapeLength(); + tape.length_frames = GetTapeLengthFrames(); + tape.length_seconds = GetTapeLengthSeconds(); #if 0 printf("::: tape file version: %d\n", tape.file_version); @@ -8067,21 +8079,20 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_INTEGER,&si.touch.drop_distance, "touch.drop_distance" }, }; -static boolean not_used = FALSE; static struct TokenInfo editor_setup_tokens[] = { - { TYPE_SWITCH, ¬_used, "editor.el_boulderdash" }, - { TYPE_SWITCH, ¬_used, "editor.el_emerald_mine" }, - { TYPE_SWITCH, ¬_used, "editor.el_emerald_mine_club" }, - { TYPE_SWITCH, ¬_used, "editor.el_more" }, - { TYPE_SWITCH, ¬_used, "editor.el_sokoban" }, - { TYPE_SWITCH, ¬_used, "editor.el_supaplex" }, - { TYPE_SWITCH, ¬_used, "editor.el_diamond_caves" }, - { TYPE_SWITCH, ¬_used, "editor.el_dx_boulderdash" }, + { TYPE_SWITCH, &sei.el_boulderdash, "editor.el_boulderdash" }, + { TYPE_SWITCH, &sei.el_emerald_mine, "editor.el_emerald_mine" }, + { TYPE_SWITCH, &sei.el_emerald_mine_club,"editor.el_emerald_mine_club"}, + { TYPE_SWITCH, &sei.el_more, "editor.el_more" }, + { TYPE_SWITCH, &sei.el_sokoban, "editor.el_sokoban" }, + { TYPE_SWITCH, &sei.el_supaplex, "editor.el_supaplex" }, + { TYPE_SWITCH, &sei.el_diamond_caves, "editor.el_diamond_caves" }, + { TYPE_SWITCH, &sei.el_dx_boulderdash,"editor.el_dx_boulderdash" }, { TYPE_SWITCH, &sei.el_chars, "editor.el_chars" }, { TYPE_SWITCH, &sei.el_steel_chars, "editor.el_steel_chars" }, { TYPE_SWITCH, &sei.el_custom, "editor.el_custom" }, - { TYPE_SWITCH, ¬_used, "editor.el_headlines" }, + { TYPE_SWITCH, &sei.el_headlines, "editor.el_headlines" }, { TYPE_SWITCH, &sei.el_user_defined, "editor.el_user_defined" }, { TYPE_SWITCH, &sei.el_dynamic, "editor.el_dynamic" }, { TYPE_SWITCH, &sei.el_by_game, "editor.el_by_game" }, @@ -9761,24 +9772,27 @@ void CreateLevelSketchImages() /* create and save images for custom and group elements (raw BMP format) */ /* ------------------------------------------------------------------------- */ -void CreateCustomElementImages() +void CreateCustomElementImages(char *directory) { #if defined(TARGET_SDL) - char *filename = "graphics.classic/RocksCE.bmp"; - Bitmap *bitmap; + char *src_basename = "RocksCE-template.ilbm"; + char *dst_basename = "RocksCE.bmp"; + char *src_filename = getPath2(directory, src_basename); + char *dst_filename = getPath2(directory, dst_basename); Bitmap *src_bitmap; - int dummy_graphic = IMG_CUSTOM_99; + Bitmap *bitmap; int yoffset_ce = 0; int yoffset_ge = (TILEY * NUM_CUSTOM_ELEMENTS / 16); - int src_x, src_y; int i; + SDLInitVideoDisplay(); + + src_bitmap = LoadImage(src_filename); + bitmap = CreateBitmap(TILEX * 16 * 2, TILEY * (NUM_CUSTOM_ELEMENTS + NUM_GROUP_ELEMENTS) / 16, DEFAULT_DEPTH); - getFixedGraphicSource(dummy_graphic, 0, &src_bitmap, &src_x, &src_y); - for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) { int x = i % 16; @@ -9844,8 +9858,8 @@ void CreateCustomElementImages() } } - if (SDL_SaveBMP(bitmap->surface, filename) != 0) - Error(ERR_EXIT, "cannot save CE graphics file '%s'", filename); + if (SDL_SaveBMP(bitmap->surface, dst_filename) != 0) + Error(ERR_EXIT, "cannot save CE graphics file '%s'", dst_filename); FreeBitmap(bitmap);