rnd-20030912-1-src
authorHolger Schemel <info@artsoft.org>
Fri, 12 Sep 2003 06:42:29 +0000 (08:42 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:43:45 +0000 (10:43 +0200)
* Version number set to 3.0.4.
* Version 3.0.3 released.
* added music to Supaplex classic level set

CHANGES
ChangeLog [new file with mode: 0644]
src/Makefile
src/conftime.h
src/files.c
src/game.c
src/main.h

diff --git a/CHANGES b/CHANGES
index 6f704695e25a08524f35fc008135b791b539f084..182a8b2e24c6f222676f389edddeb4297141fc73 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+Release Version 3.0.4 [?? ??? ????]
+-----------------------------------
+
 Release Version 3.0.3 [08 SEP 2003]
 -----------------------------------
        - fixed bug (missing array boundary check) which could crash the game
@@ -8,6 +11,7 @@ Release Version 3.0.3 [08 SEP 2003]
        - added envelope content which gets displayed when collecting envelope
        - added multiple change event pages for custom elements
        - added support for loading various music formats through SDL_mixer
+       - added music to Supaplex classic level set
 
 Release Version 3.0.2 [22 AUG 2003]
 -----------------------------------
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..c8b50dc
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,338 @@
+2003-09-08
+       * Version number set to 3.0.4.
+
+2003-09-08
+       * Version 3.0.3 released.
+
+2003-09-07
+       * added music to Supaplex classic level set
+
+2003-09-07     src/libgame/misc.c
+       * added support for loading various music formats through SDL_mixer
+
+2003-09-06     (various source files)
+       * fixed several nasty bugs that may have caused crashes on some systems
+       * added envelope content which gets displayed when collecting envelope
+       * added multiple change event pages for custom elements
+
+2003-08-24     src/game.c
+       * fixed problem with player animation when snapping and moving
+
+2003-08-23     src/screens.c, src/cartoons.c, src/libgame/toons.c
+       * fixed problem with flickering when drawing toon animations
+
+2003-08-23     src/libgame/sdl.c
+       * fixed problem with setting mouse cursor in SDL version in fullscreen
+
+2003-08-23     src/game.c
+       * fixed bug (missing array boundary check) which could crash the game
+
+2003-08-23
+       * Version number set to 3.0.3.
+
+2003-08-22
+       * Version 3.0.2 released.
+
+2003-08-21     src/game.c
+       * fixed bug with creating inaccessible elements at player position
+
+2003-08-20     src/init.c
+       * fixed bug with not finding current level artwork directory
+
+2003-08-20     src/files.c
+       * fixed bug with choosing wrong engine version when playing tapes
+       * fixed bug with messing up custom element properties in 3.0.0 levels
+
+2003-08-18
+       * Version number set to 3.0.2.
+
+2003-08-18
+       * Version 3.0.1 released.
+
+2003-08-17     (no source files affected)
+       * changed all "classic" PCX image files with 16 colors or less to
+         256 color (8 bit) storage format, because the Allegro game library
+         cannot handle PCX files with less than 256 colors (contributed
+         graphics are not affected and might look wrong in the DOS version)
+
+2003-08-16     src/init.c
+       * fixed bug which (for example) crashed the level editor when defining
+         "dynamite.EDITOR:  [NONE]", because graphics may not be undefined
+         (only set to default) -- invalid graphics now set to default graphic
+
+2003-08-16     src/init.c
+       * fixed graphical bug of player digging/collecting/snapping element
+         when no corresponding graphic/animation is defined for this action,
+         resulting in player being drawn as EL_EMPTY (which should only be
+         done to elements being collected, but not to the player)
+
+2003-08-16     src/game.c
+       * fixed small graphical bug of player not totally moving into exit
+
+2003-08-16     src/libgame/setup.c
+       * fixed bug with wrong MS-DOS 8.3 filename conversion
+
+2003-08-16     src/tools.c
+       * fixed bug with invisible mouse cursor when pressing ESC while playing
+
+2003-08-16     (various source files)
+       * added another 128 custom elements (disabled in editor by default)
+
+2003-08-16     src/editor.c
+       * fixed NULL string bug causing Solaris to crash in sprintf()
+
+2003-08-16     src/screen.c
+       * fixed drawing over scrollbar on level selection with custom fonts
+
+2003-08-15     src/game.c
+       * cleanup of simple sounds / loop sounds / music settings
+
+2003-08-08     (various source files)
+       * added custom element property for dropping collected elements
+
+2003-08-08     src/conf_gfx.c
+       * fixed bug with missing graphic for active red disk bomb
+
+2003-08-07     src/files.c, src/editor.c src/game.c, src/main.h
+       * Extended variable "level.gravity" to "level.initial_gravity" and
+         "game.current_gravity" to prevent level setting from being changed
+         by playing the level (keeping the runtime value after playing).
+
+       * Fixed graphics bug when digging element that has 'crumbled' graphic
+         definition, but not 'diggable' graphic definition.
+
+2003-08-06
+       * Version number set to 3.0.1.
+
+2003-08-05
+       * Version 3.0.0 released.
+
+2003-08-05
+       * various bug fixes; among others:
+         - fixed bug with pushing spring over empty space
+         - fixed bug with leaving tube while placing dynamite
+         - fixed bug with explosion of smashed penguins
+         - allow Murphy player graphic in levels with non-Supaplex elements
+
+2003-04-07
+       * Various changes.
+       * I have forgotten to document changes for some time.
+
+2002-12-31
+       * Pre-Release Version 2.2.0rc1 released.
+
+2002-08-25
+       * Version number set to 2.1.2.
+
+2002-08-13
+       * Version 2.1.1 released.
+
+2002-08-10
+       * Version number set to 2.1.1.
+
+2002-08-05
+       * Version 2.1.0 released.
+       
+2002-05-19
+       * Version number set to 2.1.0.
+
+2002-04-03 to 2002-05-19       (various source files)
+       * graphics, sounds and music now fully configurable
+       * bug fixed that prevented walking through tubes when gravity on
+
+2002-04-02     src/events.c, src/editor.c
+       * Make Escape key less aggressive when playing or when editing level.
+         This can be configured as an option in the setup menu. (Default is
+         "less aggressive" which means "ask user if something can be lost"
+         when pressing the Escape key.)
+
+2002-04-02     src/screen.c
+       * Added "graphics setup" screen.
+
+2002-04-01     src/screen.c
+       * Changed "choose level" setup screen stuff to be more generic (to
+         make it easier to add more "choose from generic tree" setup screens).
+
+2002-04-01     src/config.c, src/timestamp.h
+       * Added source files "src/config.[ch]" and "src/timestamp.h" (which
+         automatically gets created by "src/Makefile" and contains an actual
+         compile-time timestamp to identify development versions of the game).
+
+2002-03-31     src/tape.c, src/events.c
+       * Added quick game/tape save/load functions to tape stuff which can be
+         invoked by a keyboard shortcut. Default: "F1" saves game/tape, "F2"
+         loads previously recorded tape and directly goes into recording mode
+         from the end of the tape (therefore appending to the tape).
+
+2002-03-31     src/tape.c
+       * Added "index mark" function to tape recorder. When playing or
+         recording, "eject" button changes to "index" button. Setting index
+         mark is not yet implemented, but pressing index button when playing
+         allows very quick advancing to end of tape (when normal playing),
+         very fast forward mode (when playing with normal fast forward) or
+         very fast reaching of "pause before end of tape" (when playing with
+         "pause before end" playing mode).
+
+2002-03-30     src/cartoons.c
+       * Moved some stuff from cartoons.c to the new "src/libgame/toons.c".
+
+2002-03-29     src/screen.c
+       * Changed setup screen stuff to be more generic (to make it easier
+         to add more setup screens).
+
+2002-03-23     src/main.c, src/main.h
+       * Various changes due to the introduction of the new libgame files
+         "setup.c" and "joystick.c".
+
+2002-03-23     src/files.c
+       * Generic parts of "src/files.c" (mainly setup and level directory
+         stuff) moved to new libgame file "src/libgame/setup.c".
+
+2002-03-23     src/joystick.c
+       * File "src/joystick.c" moved to libgame source tree, with
+         correspondig changes.
+
+2002-03-22     src/screens.c
+       * "HandleChooseLevel()": Another bug in level series navigation fixed.
+         (Wrong level series information displayed when entering main group.)
+
+2002-03-22     src/editor.c
+       * Slight change to support new gadget event "GD_EVENT_INFO_LEAVING".
+
+2002-03-22     src/editor.c
+       * Changed behaviour of "Escape" key in level editor to be more
+         intuitive: When in "Element Properties" or "Level Info" mode,
+         return to "Drawing Mode" instead of leaving the level editor.
+
+2002-03-21     src/game.c, src/editor.c, src/files.c
+       * 2.0.1 introduced the corrected "Emerald Mine" style behaviour of
+         gems (emeralds, diamonds, ...) slipping down from normal wall,
+         steel wall and growing wall (as in E.M.C. style levels). Although
+         the behaviour of contributed and private levels wasn't changed (due
+         to the use of "level.game_version"; see previous entry), editing
+         those levels will (of course) change the behaviour accordingly.
+
+         This change seems a bit too hard after thinking about it, because
+         the EM style behaviour is not the "expected" behaviour (gems would
+         normally only slip down from "rounded" walls). Therefore this was
+         now changed to an element property for gem style elements, with the
+         default setting "off" (which means: no special EM style behaviour).
+         To fix older converted levels, this flag is set to "on" for pre-2.0
+         levels that are neither contributed nor private levels.
+
+2002-03-20     src/files.h
+       * Corrected settings for "level.game_version" depending of level type.
+         (Contributed and private levels always get played with game engine
+         version they were created with, while converted levels always get
+         played with the most recent version of the game engine, to let new
+         corrections of the emulation behaviour take effect.)
+
+2002-03-20     src/main.h
+       * Added "#include <time.h>". This seems to be needed by "tape.c" for
+         compiling the SDL version on some systems.
+         Thanks to the several people who pointed this out.
+
+2002-03-19
+       * Version number set to 2.0.2.
+
+2002-03-19
+       * Version 2.0.1 released.
+
+2002-03-18     src/screens.c
+       * "HandleChooseLevel()": Small bug in level series navigation fixed.
+
+2002-03-18     src/files.c [src/libgame/misc.c]
+       * Moved some common functions from src/files.c to src/libgame/misc.c.
+
+2002-03-18     src/files.c [src/libgame/misc.c]
+       * Changed permissions for new directories and saved files (especially
+         score files) according to suggestions of Debian users and mantainers.
+         Thanks to Drew Parsons <dparsons@emerall.com> for the patch.
+
+2002-03-17     src/files.c
+       * Changed "{Load|Save}{Level|Tape}()" to IFF style file format:
+         Replaced "cookie" header string ("ROCKSNDIAMONDS_...\n") with
+         real IFF style header "RND1....XXXX" (where "XXXX" is "CAVE"
+         for levels and "TAPE" for tapes). Old "cookie" style format is
+         still supported for reading. New level and tape files are written
+         in new format.
+
+       * New IFF chunk "VERS" contains version numbers for file and game
+         (where "game version" is the version of the program that wrote the
+         file, and "file version" is a version number to distinguish files
+         with different format, for example after adding new features).
+
+2002-03-15     src/screen.c
+       * "DrawHallOfFame()": "FadeSounds()" when entering the hall of fame.
+         (Before, you heard a mixture of the in-game music and the
+         hall-of-fame music.)
+
+2002-03-14     src/events.c
+       * Function "DumpTape()" (files.c) now available by pressing 't' from
+         main menu (when in DEBUG mode).
+
+2002-03-14     src/game.c
+       * "GameWon()": When game was won playing a tape, now there is no delay
+         raising the score and no corresponding sound is played.
+
+2002-03-14     src/files.c
+       * Changed "LoadTape()" for real chunk support and also adjusted
+         "SaveTape()" accordingly.
+
+2002-03-14     src/game.c, src/tape.c, src/files.c
+       * Important changes to tape format: The old tape format stored all
+         actions with a real effect with a corresponding delay between the
+         stored actions. This had some major disadvantages (for example,
+         push delays had to be ignored, pressing a button for some seconds
+         mutated to several single button presses because of the non-action
+         delays between two action frames etc.). The new tape format just
+         stupidly records all device actions and replays them later. I really
+         don't know why I haven't solved it that way before?! Old-style tapes
+         (with tape file version less than 2.0) get converted to the new
+         format on-the-fly when loading and can therefore still be played;
+         only some minor parts of the old-style tape handling code was needed.
+         (A perfect conversion is not possible, because there is information
+         missing about the device actions between two action frames.)
+
+2002-03-14     src/files.c
+       * New function "DumpTape()" to dump the contents of the current tape
+         in a human readable format.
+
+2002-03-14     src/game.c
+       * Small tape bug fixed: When automatically advancing to next level
+         after a game was won, the tape from the previous level still was
+         loaded as a tape for the new level.
+
+2002-03-14     src/tape.c
+       * Small graphical bug fixed: When pressing ""Record" or "Play" on
+         tape, cartoons did not get completely removed because
+         StopAnimation() was not called.
+
+2002-03-13     src/files.c
+       * Changed "LoadLevel()" and "SaveLevel()" to add new chunk "CNT2".
+         Fixed bug of "CONT" and "BODY" (chunk size was set to 8-bit element
+         size even when using 16-bit elements). Added new chunk "CNT2" for
+         16-bit amoeba content (previously written in 8-bit field in "HEAD"
+         chunk even when content was 16-bit element). "CNT2" should now be
+         able to store content for arbitrary elements (up to eight blocks of
+         3 x 3 element arrays). All "CNT2" elements will always be stored as
+         16-bit elements. "CONT" (with 8/16-bit elements) now obsolete.
+
+2002-03-13     src/files.c
+       * Changed "LoadLevel()" for real chunk support.
+
+2002-03-12     src/game.c
+       * Fixed problem (introduced after 2.0.0 release) with penguins
+         not getting killed by enemies
+
+2002-02-24     src/game.c, src/main.h
+       * Added "player->is_moving"; now "player->last_move_dir" does
+         not contain any information if the player is just moving at
+         the moment or not.
+         Before, "player->last_move_dir" was misused for this purpose
+         for  the robot stuff (robots don't kill players when they are
+         moving). But setting "player->last_move_dir" to MV_NO_MOVING
+         broke tapes when walking through pipes!
+         ("IS_MOVING()" uses "MovPos[][]", but this fails when it is 0
+         in a continuous movement. This fact is ignored for friends and
+         enemies, though.)
index ff28877633b2b653aa14aa87f2e396da2af41c55..595f5996acb4a4770dcf80e888de840d08f2ee3d 100644 (file)
@@ -103,7 +103,7 @@ CONFIG_GAME_DIR = $(CONFIG_RO_GAME_DIR) $(CONFIG_RW_GAME_DIR)
 
 
 CONFIG = $(CONFIG_GAME_DIR) $(CONFIG_SCORE_ENTRIES) $(JOYSTICK)
-DEBUG = -DDEBUG -g
+DEBUG = -DDEBUG -g
 # PROFILING = $(PROFILING_FLAGS)
 
 # OPTIONS = $(DEBUG) -Wall                     # only for debugging purposes
index bd0e81872db861fd33fb13945c91ee975e635dfd..19f8bc0dc2b4be23ae0e9bc115d1b189b5e8cf42 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-09-08 00:04]"
+#define COMPILE_DATE_STRING "[2003-09-12 00:01]"
index 0b85e1eba468ddd2e0e3d7f5764181dc368744a3..ac3f0b4b86d92fafaa49f29987038a9ad8c3812f 100644 (file)
@@ -689,6 +689,8 @@ static int LoadLevel_CUS4(FILE *file, int chunk_size, struct LevelInfo *level)
 
   /* read change property values */
 
+  setElementChangePages(ei, ei->num_change_pages);
+
   for (i=0; i < ei->num_change_pages; i++)
   {
     struct ElementChangeInfo *change = &ei->change_page[i];
index 91694d2d7ea0e2ab2fd617081c89a046c14e5105..f554e6593e1c7fce11e3201751302d7d07101a6b 100644 (file)
@@ -5364,10 +5364,13 @@ static void ChangeElementNowExt(int x, int y, int target_element)
     RelocatePlayer(x, y, target_element);
 }
 
-static void ChangeElementNow(int x, int y, int element, int page)
+static boolean ChangeElementNow(int x, int y, int element, int page)
 {
   struct ElementChangeInfo *change = &element_info[element].change_page[page];
 
+  if (Changed[x][y])           /* do not change already changed elements */
+    return FALSE;
+
   Changed[x][y] = TRUE;                /* no more changes in this frame */
 
   CheckTriggeredElementChange(x, y, Feld[x][y], CE_OTHER_IS_CHANGING);
@@ -5375,7 +5378,8 @@ static void ChangeElementNow(int x, int y, int element, int page)
   if (change->explode)
   {
     Bang(x, y);
-    return;
+
+    return TRUE;
   }
 
   if (change->use_content)
@@ -5433,7 +5437,7 @@ static void ChangeElementNow(int x, int y, int element, int page)
 
       if (change->only_complete && change->use_random_change &&
          RND(100) < change->random)
-       return;
+       return FALSE;
 
       for (yy = 0; yy < 3; yy++) for(xx = 0; xx < 3 ; xx++)
       {
@@ -5466,6 +5470,8 @@ static void ChangeElementNow(int x, int y, int element, int page)
 
     PlaySoundLevelElementAction(x, y, element, ACTION_CHANGING);
   }
+
+  return TRUE;
 }
 
 static void ChangeElement(int x, int y, int page)
@@ -5506,10 +5512,11 @@ static void ChangeElement(int x, int y, int page)
       return;
     }
 
-    ChangeElementNow(x, y, element, page);
-
-    if (change->post_change_function)
-      change->post_change_function(x, y);
+    if (ChangeElementNow(x, y, element, page))
+    {
+      if (change->post_change_function)
+       change->post_change_function(x, y);
+    }
   }
 }
 
@@ -5566,8 +5573,10 @@ static boolean CheckTriggeredElementChange(int lx, int ly, int trigger_element,
       if (x == lx && y == ly)  /* do not change trigger element itself */
        continue;
 
+#if 0
       if (Changed[x][y])       /* do not change already changed elements */
        continue;
+#endif
 
       if (Feld[x][y] == element)
       {
index 76be4a459f3c0445c4b6fddd3f36ad1b7ca64a78..69c1c26c8fc7c81f4305dbdddb81b49d27d51402 100644 (file)
 #define MAX_ENVELOPE_YSIZE     20
 #define MAX_ENVELOPE_TEXT_LEN  (MAX_ENVELOPE_XSIZE * MAX_ENVELOPE_YSIZE)
 #define MIN_CHANGE_PAGES       1
-#define MAX_CHANGE_PAGES       10
+#define MAX_CHANGE_PAGES       16
 
 /* values for elements with content */
 #define MIN_ELEMENT_CONTENTS   1
 
 #define PROGRAM_VERSION_MAJOR  3
 #define PROGRAM_VERSION_MINOR  0
-#define PROGRAM_VERSION_PATCH  3
+#define PROGRAM_VERSION_PATCH  4
 #define PROGRAM_VERSION_RELEASE        0
-#define PROGRAM_VERSION_STRING "3.0.3"
+#define PROGRAM_VERSION_STRING "3.0.4"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"