rnd-20040822-2-src
authorHolger Schemel <info@artsoft.org>
Sat, 21 Aug 2004 23:54:35 +0000 (01:54 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:47:52 +0000 (10:47 +0200)
src/conftime.h
src/game.c
src/game_em/game_em.h
src/game_em/global.h
src/game_em/graphics.c
src/game_em/input.c
src/game_em/main.c
src/screens.c

index 26dc228fd647526c5671a2a89af3da8bad589173..00bdd0291789f2e527a3b526447122d125bd612d 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2004-08-22 00:42]"
+#define COMPILE_DATE_STRING "[2004-08-22 01:50]"
index eaf9ee12e8bb92dae1e76654a6dbbc120132c40b..1d2396b025837c2238432b4b4c30261876cec9e3 100644 (file)
@@ -1124,6 +1124,14 @@ void DrawGameDoorValues()
   DrawGameValue_Time(TimeLeft);
 }
 
+void DrawGameDoorValues_EM(int emeralds, int dynamite, int score, int time)
+{
+  DrawGameValue_Emeralds(emeralds);
+  DrawGameValue_Dynamite(dynamite);
+  DrawGameValue_Score(score);
+  DrawGameValue_Time(time);
+}
+
 static void resolve_group_element(int group_element, int recursion_depth)
 {
   static int group_nr;
@@ -2052,6 +2060,18 @@ void InitGame()
 
   CloseDoor(DOOR_CLOSE_1);
 
+#if 1
+
+  if (em_main_init_game(level_nr) != 0)
+  {
+    game_status = GAME_MODE_MAIN;
+    DrawMainMenu();
+
+    return;
+  }
+
+#else
+
   DrawLevel();
   DrawAllPlayers();
 
@@ -2065,6 +2085,8 @@ void InitGame()
   redraw_mask |= REDRAW_FROM_BACKBUFFER;
   FadeToFront();
 
+#endif
+
   /* copy default game door content to main double buffer */
   BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto,
             DOOR_GFX_PAGEX5, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY);
index 48012ab228ca10e5c659bab3b79955b5413b23cf..77d001723b81e5197e3ee0edeec700649f27d4d0 100644 (file)
@@ -19,7 +19,7 @@
 extern void em_open_all();
 extern void em_close_all();
 
-extern void em_main_init_game();
+extern int em_main_init_game(int);
 extern int em_main_handle_game(byte);
 
 #endif /* GAME_EM_H */
index f86171a4d1f850e13188d6664cd1436412ad3a0c..c2a13e894016b11a8746f66d9ecb26668638ca35 100644 (file)
@@ -26,6 +26,7 @@ extern unsigned int frame;
 #define EM_GAME_STATUS_PLAY    2
 
 extern int em_game_status;
+extern boolean skip_menu;
 
 extern short ulaw_to_linear[256];
 extern unsigned char linear_to_ulaw[65536];
@@ -54,6 +55,7 @@ void sound_play(void);
 int cave_convert(char *filename);
 
 void game_init_vars(void);
+int game_play_init(int);
 int game_loop(byte);
 
 void synchro_1(void);
index 70c45c5393c897cdbce907ec87d7defc02cbc936..d869bc88b68fc423c6f3d3de8357f948229db9c4 100644 (file)
@@ -15,6 +15,8 @@
 
 #if defined(TARGET_X11)
 
+extern void DrawGameDoorValues_EM(int, int, int, int);
+
 unsigned int frame; /* current frame */
 unsigned int screen_x; /* current scroll position */
 unsigned int screen_y;
@@ -110,11 +112,13 @@ void blitscreen(void)
               SX + MAX_BUF_XSIZE * TILEX - x, SY + MAX_BUF_YSIZE * TILEY - y);
   }
 
-  /* draw either the main menu footer or the in-game time/gems/score values */
-
-  if (em_game_status == EM_GAME_STATUS_PLAY)
+  if (em_game_status == EM_GAME_STATUS_PLAY && SCR_FIELDY < 17)
+  {
     BlitBitmap(scoreBitmap, window, 0, 0, SCR_FIELDX * TILEX, SCOREY,
-              SX, SY + SCR_FIELDY * TILEY - SCOREY);
+              SX, SY + SCR_FIELDY * TILEY);
+    ClearRectangle(window, SX, SY + SCR_FIELDY * TILEY + SCOREY,
+                  SCR_FIELDX * TILEX, (17 - SCR_FIELDY) * TILEY - SCOREY);
+  }
 
   XFlush(display);
 
@@ -332,16 +336,22 @@ void game_blitscore(void)
 
   xdebug("game_blitscore");
 
+  DrawGameDoorValues_EM(lev.required, ply1.dynamite, lev.score,
+                       (lev.time + 4) / 5);
+
   i = (lev.time + 4) / 5;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            7 * SCOREX, 0); i /= 10;
+            7 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            6 * SCOREX, 0); i /= 10;
+            6 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            5 * SCOREX, 0); i /= 10;
+            5 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
             4 * SCOREX, 0);
@@ -349,13 +359,16 @@ void game_blitscore(void)
   i = lev.score;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            31 * SCOREX, 0); i /= 10;
+            31 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            30 * SCOREX, 0); i /= 10;
+            30 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
-            29 * SCOREX, 0); i /= 10;
+            29 * SCOREX, 0);
+  i /= 10;
   BlitBitmap(botBitmap, scoreBitmap,
             (i % 10) * SCOREX, colours[1] * SCOREY, SCOREX, SCOREY,
             28 * SCOREX, 0);
index 207a80baf74f71c9810aa52e23aa871144d64d23..9c1681ffded48cf3e199ddab69ab451bc28c1dda 100644 (file)
@@ -331,6 +331,9 @@ int game_loop(byte action)
     {
       /* stop playing */
 
+      if (skip_menu)
+       return 1;
+
       em_game_status = EM_GAME_STATUS_MENU;
       game_menu_init();
     }
index a9701d6955711887254b0489b03a69a7b1ce94eb..7ae2810a67b236ad30fd2c040f246c0944e28d0f 100644 (file)
@@ -26,6 +26,7 @@ int arg_install;
 int arg_silence;
 
 int em_game_status;
+boolean skip_menu = TRUE;
 
 extern void tab_generate();
 extern void ulaw_generate();
@@ -51,10 +52,21 @@ void em_close_all()
   close_all();
 }
 
-void em_main_init_game()
+int em_main_init_game(int level_nr)
 {
-  em_game_status = EM_GAME_STATUS_MENU;
-  game_menu_init();
+  if (skip_menu)
+  {
+    em_game_status = EM_GAME_STATUS_PLAY;
+    if (game_play_init(level_nr) != 0)
+      return 1;
+  }
+  else
+  {
+    em_game_status = EM_GAME_STATUS_MENU;
+    game_menu_init();
+  }
+
+  return 0;
 }
 
 int em_main_handle_game(byte action)
index ddc28e8d6615a427dcdb009c110e367fe81a762d..d3728d2c2a298ba18a29f04c4f9bc56107f7529b 100644 (file)
@@ -503,15 +503,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
        {
          game_status = GAME_MODE_PLAYING;
          StopAnimation();
-
-#if 1
-
-         em_main_init_game();
-
-#else
          InitGame();
-
-#endif
        }
       }
       else if (y == 6)