rnd-20040422-1-src
authorHolger Schemel <info@artsoft.org>
Thu, 22 Apr 2004 07:21:51 +0000 (09:21 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:46:59 +0000 (10:46 +0200)
* added "enter"/"leave" event for elements affected by relocation
* fixed "direct"/"indirect" change order also for "when change" event

ChangeLog
Makefile
src/conftime.h
src/game.c
src/tools.c

index 44fad8313da271c10d22bf5c2d0ec39e22d962c2..1f52e0d57366c69945dbcdc270a61fd18be8743c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2004-04-20
        * added "replace when walkable" to relocate player to walkable element
+       * added "enter"/"leave" event for elements affected by relocation
+       * fixed "direct"/"indirect" change order also for "when change" event
 
 2004-04-18
        * fixed graphic bug when player is snapping while moving in old levels
index 481244f71d62f19aa28798e6d2579a159c37ac06..9f1e23217da1495a982230cd6eeef1709feea2a5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -117,6 +117,9 @@ enginetestcustom: all
 enginetestfast: all
        ./Scripts/make_enginetest.sh fast
 
+enginetestnew: all
+       ./Scripts/make_enginetest.sh new
+
 backup:
        ./Scripts/make_backup.sh src
 
index 3a3a5bd3783886a1608be250646029ccc02443b2..c9566923bea7f52f8b56da929a592c9713150531 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2004-04-21 01:52]"
+#define COMPILE_DATE_STRING "[2004-04-22 00:31]"
index db3d3cbc661464b646f4d029900c2f0892ede697..0077517dc4f10e01beaa9114fe298556cba1e65f 100644 (file)
@@ -2893,8 +2893,11 @@ void RelocatePlayer(int jx, int jy, int el_player_raw)
   Feld[jx][jy] = el_player;
   InitPlayerField(jx, jy, el_player, TRUE);
 
-  Feld[jx][jy] = element;      /* player may be set on walkable element */
-  InitField(jx, jy, FALSE);
+  if (!ELEM_IS_PLAYER(element))        /* player may be set on walkable element */
+  {
+    Feld[jx][jy] = element;
+    InitField(jx, jy, FALSE);
+  }
 
 #if 1
   if (player == local_player)  /* only visually relocate local player */
@@ -7376,6 +7379,7 @@ static boolean ChangeElementNow(int x, int y, int element, int page)
 {
   struct ElementChangeInfo *change = &element_info[element].change_page[page];
   int target_element;
+  int old_element = Feld[x][y];
 
   /* always use default change event to prevent running into a loop */
   if (ChangeEvent[x][y] == CE_BITMASK_DEFAULT)
@@ -7399,7 +7403,7 @@ static boolean ChangeElementNow(int x, int y, int element, int page)
 
   Changed[x][y] |= ChangeEvent[x][y];  /* ignore same changes in this frame */
 
-#if 1
+#if 0
   /* !!! indirect change before direct change !!! */
   CheckTriggeredElementChangeByPage(x,y,Feld[x][y], CE_OTHER_IS_CHANGING,page);
 #endif
@@ -7549,6 +7553,11 @@ static boolean ChangeElementNow(int x, int y, int element, int page)
     PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING);
   }
 
+#if 1
+  /* !!! indirect change before direct change !!! */
+  CheckTriggeredElementChangeByPage(x,y,old_element,CE_OTHER_IS_CHANGING,page);
+#endif
+
   return TRUE;
 }
 
index 39af85ee9d9b4c7be50fd7751e5c8b8a5d045765..0159d9bbba1b2313e9de6e0ea135ec029d4409c6 100644 (file)
@@ -878,7 +878,9 @@ void DrawPlayer(struct PlayerInfo *player)
   else if (player_is_moving && IS_ACCESSIBLE_UNDER(last_element))
     DrawLevelFieldThruMask(last_jx, last_jy);
 
-#if 1
+#if 0
+  /* !!! I have forgotton what this should be good for !!! */
+  /* !!! causes player being visible when pushing from within tubes !!! */
   if (!player->is_pushing)
 #endif
   {