-Release Version 3.1.0 [?? ??? ????]
+Release Version 3.1.0 [07 JUN 2004]
-----------------------------------
+ - fixed obvious bug with wrong "Murphy" graphics (when digging etc.)
+ - fixed a lot of Emerald Mine and Supaplex game engine emulation bugs
+ - re-converted Emerald Mine and Supaplex levels to apply engine fixes
+ - changed default snap/drop keys from left/right Shift to Control keys
+ - added level loader for loading native Emerald Mine levels
+ - added level loader for loading native Supaplex packed levels
+ - added group elements for multiple matches and random element creation
+ - added elements that can be digged or left behind by custom elements
+ - added element "Sokoban field with player" missing for Sokoban levels
+ - added custom element features to allow building of teleporters
+ - added option to use step limit instead of time limit for level
+ - added pressing "space" key as valid action to select menu options
+ - added clipboard (cut and paste buttons) for custom and group elements
+ - added shortcut to dump brush (type ":DB" in editor) for use in forum
+ - added network multiplayer code for Windows (still only command line)
+ - replaced old tutorial level set with far better one by Niko Böhm
+ - "contributions" levels now separate package to make base set smaller
+ - too many bugfixes and changes to list them all here (see ChangeLog)
Release Version 3.0.8 [14 DEC 2003]
-----------------------------------
XINC_PATH = $(X11_PATH)/include
XLIB_PATH = $(X11_PATH)/lib
X11_INCL = -I$(XINC_PATH)
-X11_LIBS = -L$(XLIB_PATH)
+X11_LIBS = -L$(XLIB_PATH) -lX11
endif
AR = ar
ifeq ($(PLATFORM),macosx)
PLATFORM = unix
-TARGET=sdl
+TARGET = sdl
endif
ifeq ($(PLATFORM),os2)
EXTRA_CFLAGS = -Zbin-files -D__ST_MT_ERRNO__ -Zmtd -fomit-frame-pointer
EXTRA_LDFLAGS = -lsocket
PLATFORM = unix
-TARGET=x11
+TARGET = x11
endif
ifeq ($(PLATFORM),unix)
ifeq ($(TARGET),x11)
SYS_CFLAGS = -DTARGET_X11 $(X11_INCL)
-SYS_LDFLAGS = $(X11_LIBS) -lX11
+SYS_LDFLAGS = $(X11_LIBS)
endif
ifeq ($(TARGET),sdl)
SYS_CFLAGS = -DTARGET_SDL $(shell sdl-config --cflags)
-ifeq ($(PLATFORM),macosx)
-SYS_LDFLAGS = -lSDL_image -lSDL_mixer -lsmpeg $(shell sdl-config --libs)
-else
-SYS_LDFLAGS = -lSDL_image -lSDL_mixer -lSDL_net $(shell sdl-config --libs)
-endif
+SDL_LIBS = -lSDL_image -lSDL_mixer -lSDL_net -lsmpeg
+SYS_LDFLAGS = $(SDL_LIBS) $(shell sdl-config --libs)
endif
ifeq ($(TARGET),allegro)
CONFIG = $(CONFIG_GAME_DIR) $(CONFIG_SCORE_ENTRIES) $(JOYSTICK)
-DEBUG = -DDEBUG -g
+# DEBUG = -DDEBUG -g
# PROFILING = $(PROFILING_FLAGS)
# OPTIONS = $(DEBUG) -Wall # only for debugging purposes
static struct TokenInfo levelinfo_tokens[] =
{
/* level directory info */
- { TYPE_STRING, &ldi.identifier, "identifier" },
- { TYPE_STRING, &ldi.name, "name" },
- { TYPE_STRING, &ldi.name_sorting, "name_sorting" },
- { TYPE_STRING, &ldi.author, "author" },
- { TYPE_STRING, &ldi.imported_from, "imported_from" },
- { TYPE_INTEGER, &ldi.levels, "levels" },
- { TYPE_INTEGER, &ldi.first_level, "first_level" },
- { TYPE_INTEGER, &ldi.sort_priority, "sort_priority" },
- { TYPE_BOOLEAN, &ldi.latest_engine, "latest_engine" },
- { TYPE_BOOLEAN, &ldi.level_group, "level_group" },
- { TYPE_BOOLEAN, &ldi.readonly, "readonly" },
- { TYPE_STRING, &ldi.graphics_set, "graphics_set" },
- { TYPE_STRING, &ldi.sounds_set, "sounds_set" },
- { TYPE_STRING, &ldi.music_set, "music_set" },
- { TYPE_STRING, &ldi.level_filename, "filename" },
- { TYPE_STRING, &ldi.level_filetype, "filetype" },
- { TYPE_STRING, &ldi.handicap, "handicap" }
+ { TYPE_STRING, &ldi.identifier, "identifier" },
+ { TYPE_STRING, &ldi.name, "name" },
+ { TYPE_STRING, &ldi.name_sorting, "name_sorting" },
+ { TYPE_STRING, &ldi.author, "author" },
+ { TYPE_STRING, &ldi.imported_from, "imported_from" },
+ { TYPE_INTEGER, &ldi.levels, "levels" },
+ { TYPE_INTEGER, &ldi.first_level, "first_level" },
+ { TYPE_INTEGER, &ldi.sort_priority, "sort_priority" },
+ { TYPE_BOOLEAN, &ldi.latest_engine, "latest_engine" },
+ { TYPE_BOOLEAN, &ldi.level_group, "level_group" },
+ { TYPE_BOOLEAN, &ldi.readonly, "readonly" },
+ { TYPE_STRING, &ldi.graphics_set, "graphics_set" },
+ { TYPE_STRING, &ldi.sounds_set, "sounds_set" },
+ { TYPE_STRING, &ldi.music_set, "music_set" },
+ { TYPE_STRING, &ldi.level_filename, "filename" },
+ { TYPE_STRING, &ldi.level_filetype, "filetype" },
+ { TYPE_BOOLEAN, &ldi.handicap, "handicap" }
};
static void setTreeInfoToDefaults(TreeInfo *ldi, int type)
if (ldi->type == TREE_TYPE_LEVEL_DIR)
{
+ checked_free(ldi->imported_from);
+
checked_free(ldi->graphics_set);
checked_free(ldi->sounds_set);
checked_free(ldi->music_set);
checked_free(ldi->graphics_path);
checked_free(ldi->sounds_path);
checked_free(ldi->music_path);
+
+ checked_free(ldi->level_filename);
+ checked_free(ldi->level_filetype);
}
}
for (i = 0; i < NUM_LEVELINFO_TOKENS; i++)
if (i != LEVELINFO_TOKEN_IDENTIFIER &&
i != LEVELINFO_TOKEN_NAME_SORTING &&
- i != LEVELINFO_TOKEN_IMPORTED_FROM)
+ i != LEVELINFO_TOKEN_IMPORTED_FROM &&
+ i != LEVELINFO_TOKEN_FILENAME &&
+ i != LEVELINFO_TOKEN_FILETYPE)
fprintf(file, "%s\n", getSetupLine(levelinfo_tokens, "", i));
fclose(file);