rnd-20060207-3-src
authorHolger Schemel <info@artsoft.org>
Tue, 7 Feb 2006 21:10:39 +0000 (22:10 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:50:42 +0000 (10:50 +0200)
src/conftime.h
src/game_em/graphics.c

index 703f3df006cb53911b52c882452a358a7f79cb72..bfffc2cb0dead87184f9813ea19386339cd33ec3 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-02-07 21:40]"
+#define COMPILE_DATE_STRING "[2006-02-07 22:09]"
index be63a3ba7b6ba28cadd862f2e117ef5321b2232c..5682a24ea9d5e2eba4c18766ec470a6bf05bc7c1 100644 (file)
@@ -8,6 +8,24 @@
 #include "level.h"
 
 
+#define MIN_SCREEN_X           (TILEX)
+#define MIN_SCREEN_Y           (TILEY)
+#define MAX_SCREEN_X           ((lev.width  - (SCR_FIELDX - 1)) * TILEX)
+#define MAX_SCREEN_Y           ((lev.height - (SCR_FIELDY - 1)) * TILEY)
+
+#define VALID_SCREEN_X(x)      ((x) < MIN_SCREEN_X ? MIN_SCREEN_X :    \
+                                (x) > MAX_SCREEN_X ? MAX_SCREEN_X : (x))
+#define VALID_SCREEN_Y(y)      ((y) < MIN_SCREEN_Y ? MIN_SCREEN_Y :    \
+                                (y) > MAX_SCREEN_Y ? MAX_SCREEN_Y : (y))
+
+#define PLAYER_SCREEN_X(p)     (((    frame) * ply[p].oldx +           \
+                                 (8 - frame) * ply[p].x) * TILEX / 8   \
+                                - ((SCR_FIELDX - 1) * TILEX) / 2)
+#define PLAYER_SCREEN_Y(p)     (((    frame) * ply[p].oldy +           \
+                                 (8 - frame) * ply[p].y) * TILEY / 8   \
+                                - ((SCR_FIELDY - 1) * TILEY) / 2)
+
+
 unsigned int frame;            /* current screen frame */
 #if 0
 unsigned int screen_x;         /* current scroll position */
@@ -424,10 +442,16 @@ void game_initscreen(void)
   unsigned int x,y;
   int dynamite_state = ply[0].dynamite;                /* !!! ONLY PLAYER 1 !!! */
   int all_keys_state = ply[0].keys | ply[1].keys | ply[2].keys | ply[3].keys;
+  int player_nr = 0;           /* !!! FIX THIS (CENTERED TO PLAYER 1) !!! */
 
   frame = 6;
+#if 1
+  screen_x = VALID_SCREEN_X(PLAYER_SCREEN_X(player_nr));
+  screen_y = VALID_SCREEN_Y(PLAYER_SCREEN_Y(player_nr));
+#else
   screen_x = 0;
   screen_y = 0;
+#endif
 
   for (y = 0; y < MAX_BUF_YSIZE; y++)
   {
@@ -449,43 +473,23 @@ void game_initscreen(void)
 
 void RedrawPlayfield_EM()
 {
-  int i, sx, sy;
+  int player_nr = 0;           /* !!! FIX THIS (CENTERED TO PLAYER 1) !!! */
+  int sx = PLAYER_SCREEN_X(player_nr);
+  int sy = PLAYER_SCREEN_Y(player_nr);
+  int i;
 
 #if 1
 
-  int screen_x_min = TILEX;
-  int screen_y_min = TILEY;
-  int screen_x_max = (lev.width  - (SCR_FIELDX - 1)) * TILEX;
-  int screen_y_max = (lev.height - (SCR_FIELDY - 1)) * TILEY;
   int offset = (setup.scroll_delay ? 3 : 0) * TILEX;
-  int stepsize = TILEX / 8;
-  int nr = 0;          /* !!! FIX THIS (CENTERED TO PLAYER 1) !!! */
-
-  sx = (frame * ply[nr].oldx + (8 - frame) * ply[nr].x) * stepsize
-    - ((SCR_FIELDX - 1) * TILEX) / 2;
-  sy = (frame * ply[nr].oldy + (8 - frame) * ply[nr].y) * stepsize
-    - ((SCR_FIELDY - 1) * TILEY) / 2;
 
   /* calculate new screen scrolling position, with regard to scroll delay */
-  screen_x = (sx < screen_x - offset ? sx + offset :
-             sx > screen_x + offset ? sx - offset : screen_x);
-  screen_y = (sy < screen_y - offset ? sy + offset :
-             sy > screen_y + offset ? sy - offset : screen_y);
-
-  /* check minimal and maximal boundaries for screen scrolling position */
-  screen_x = (screen_x < screen_x_min ? screen_x_min :
-             screen_x > screen_x_max ? screen_x_max : screen_x);
-  screen_y = (screen_y < screen_y_min ? screen_y_min :
-             screen_y > screen_y_max ? screen_y_max : screen_y);
+  screen_x = VALID_SCREEN_X(sx < screen_x - offset ? sx + offset :
+                           sx > screen_x + offset ? sx - offset : screen_x);
+  screen_y = VALID_SCREEN_Y(sy < screen_y - offset ? sy + offset :
+                           sy > screen_y + offset ? sy - offset : screen_y);
 
 #else
 
-  /* !!! FIX THIS (CENTERED TO PLAYER 1) !!! */
-  sx = (frame * ply[0].oldx + (8 - frame) * ply[0].x) * TILEX / 8
-    + ((SCR_FIELDX - 1) * TILEX) / 2;
-  sy = (frame * ply[0].oldy + (8 - frame) * ply[0].y) * TILEY / 8
-    + ((SCR_FIELDY - 1) * TILEY) / 2;
-
   if (sx > lev.width * TILEX)
     sx = lev.width * TILEX;
   if (sy > lev.height * TILEY)