rnd-19990925-1-src
authorHolger Schemel <info@artsoft.org>
Sat, 25 Sep 1999 00:07:29 +0000 (02:07 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:34:19 +0000 (10:34 +0200)
src/events.c
src/init.c
src/main.h
src/screens.c
src/screens.h
src/tools.c

index 0e8122853385e642df43e2dae3711a2b12b0d318..1866e7ae79d00373ecab208209ad6cd5765c596b 100644 (file)
@@ -356,7 +356,7 @@ void HandleButton(int mx, int my, int button)
       break;
 
     case HALLOFFAME:
-      HandleHallOfFame(button);
+      HandleHallOfFame(0,0, 0,0, button);
       break;
 
     case LEVELED:
@@ -561,6 +561,14 @@ void HandleKey(KeySym key, int key_status)
          BackToFront();
          break;
 
+        case XK_Page_Up:
+         HandleHallOfFame(0,0, 0,-SCR_FIELDY, MB_MENU_MARK);
+         break;
+
+        case XK_Page_Down:
+         HandleHallOfFame(0,0, 0,SCR_FIELDY, MB_MENU_MARK);
+         break;
+
        default:
          break;
       }
@@ -773,7 +781,7 @@ void HandleJoystick()
     }
 
     case HALLOFFAME:
-      HandleHallOfFame(!newbutton);
+      HandleHallOfFame(0,0, dx,dy, !newbutton);
       break;
 
     case HELPSCREEN:
index a9f061770b0532013b5f64a822ebb52a0711f780..0a2e0b031dc6c37d88ef36dde451b579fd81af32 100644 (file)
@@ -473,7 +473,8 @@ void InitGfx()
     { "SP",    TRUE },
     { "DC",    TRUE },
     { "Font",  FALSE },
-    { "Font2", FALSE }
+    { "Font2", FALSE },
+    { "Font3", FALSE }
   }; 
 #else
   static struct PictureFileInfo pic[NUM_PICTURES] =
@@ -485,7 +486,8 @@ void InitGfx()
     { "RocksSP",       TRUE },
     { "RocksDC",       TRUE },
     { "RocksFont",     FALSE },
-    { "RocksFont2",    FALSE }
+    { "RocksFont2",    FALSE },
+    { "RocksFont3",    FALSE }
   }; 
 #endif
 
index b8ba717bbdeed26f557f54b4f9a4ff92a2a3b2f9..880223b224b6153c36f1b9d59595ef9e3ca3f377 100644 (file)
@@ -202,13 +202,14 @@ typedef unsigned char byte;
 #define PIX_DC                 5
 #define        PIX_BIGFONT             6
 #define PIX_SMALLFONT          7
+#define PIX_MEDIUMFONT         8
 /* Pixmaps without graphic file */
-#define PIX_DB_BACK            8
-#define PIX_DB_DOOR            9
-#define PIX_DB_FIELD           10
+#define PIX_DB_BACK            9
+#define PIX_DB_DOOR            10
+#define PIX_DB_FIELD           11
 
-#define NUM_PICTURES           8
-#define NUM_PIXMAPS            10
+#define NUM_PICTURES           9
+#define NUM_PIXMAPS            11
 
 /* boundaries of arrays etc. */
 #define MAX_PLAYER_NAME_LEN    10
@@ -576,6 +577,8 @@ extern char         *element_info[];
 #define FONT4_YSIZE            16
 #define FONT5_XSIZE            10
 #define FONT5_YSIZE            14
+#define FONT6_XSIZE            16
+#define FONT6_YSIZE            32
 
 #define GFX_STARTX             SX
 #define GFX_STARTY             SY
@@ -1543,6 +1546,7 @@ extern char               *element_info[];
 /* font types */
 #define FS_SMALL               0
 #define FS_BIG                 1
+#define FS_MEDIUM              2
 /* font colors */
 #define FC_RED                 0
 #define FC_BLUE                        1
index 819e25dfb916328a0dfb7a84d3681bc3a20f0fa0..6fccd1dc8be066b53ce467c6bc540c3c54167495 100644 (file)
@@ -823,17 +823,23 @@ void DrawChooseLevel()
 static void drawChooseLevelList(int first_entry, int num_page_entries)
 {
   int i;
-  char buffer[SCR_FIELDX];
+  char buffer[SCR_FIELDX * 2];
 
   ClearWindow();
   DrawText(SX, SY, "Level Directories", FS_BIG, FC_GREEN);
 
   for(i=0; i<num_page_entries; i++)
   {
+#if 0
     strncpy(buffer, leveldir[first_entry + i].name_short , SCR_FIELDX - 1);
     buffer[SCR_FIELDX - 1] = '\0';
+#else
+    strncpy(buffer, leveldir[first_entry + i].name , (SCR_FIELDX - 1) * 2);
+    buffer[(SCR_FIELDX - 1) * 2] = '\0';
+#endif
+
     DrawText(SX + 32, SY + (i + 2) * 32, buffer,
-            FS_BIG, leveldir[first_entry + i].color);
+            FS_MEDIUM, leveldir[first_entry + i].color);
     DrawGraphic(0, i + 2, GFX_KUGEL_BLAU);
   }
 
@@ -994,47 +1000,101 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
 
 void DrawHallOfFame(int highlight_position)
 {
-  int i;
-
   UnmapAllGadgets();
   CloseDoor(DOOR_CLOSE_2);
 
   if (highlight_position < 0) 
     LoadScore(level_nr);
 
-  ClearWindow();
+  FadeToFront();
+  InitAnimation();
+  HandleHallOfFame(highlight_position,0, 0,0, MB_MENU_INITIALIZE);
+  PlaySound(SND_HALLOFFAME);
+}
+
+static void drawHallOfFameList(int first_entry, int highlight_position)
+{
+  int i;
 
+  ClearWindow();
   DrawText(SX + 80, SY + 8, "Hall Of Fame", FS_BIG, FC_YELLOW);
   DrawTextFCentered(46, FC_RED, "HighScores of Level %d", level_nr);
 
   for(i=0; i<MAX_LEVEL_SERIES_ON_SCREEN; i++)
   {
-    DrawText(SX, SY + 64 + i * 32, ".................", FS_BIG,
-            (i == highlight_position ? FC_RED : FC_GREEN));
-    DrawText(SX, SY + 64 + i * 32, highscore[i].Name, FS_BIG,
-            (i == highlight_position ? FC_RED : FC_GREEN));
+    int entry = first_entry + i;
+    int color = (entry == highlight_position ? FC_RED : FC_GREEN);
+
+#if 0
+    DrawText(SX, SY + 64 + i * 32, ".................", FS_BIG, color);
+    DrawText(SX, SY + 64 + i * 32, highscore[i].Name, FS_BIG, color);
     DrawText(SX + 12 * 32, SY + 64 + i * 32,
-            int2str(highscore[i].Score, 5), FS_BIG,
-            (i == highlight_position ? FC_RED : FC_GREEN));
+            int2str(highscore[i].Score, 5), FS_BIG, color);
+#else
+    DrawText(SX, SY + 64 + i * 32, "..................................",
+            FS_MEDIUM, FC_YELLOW);
+    DrawText(SX, SY + 64 + i * 32, int2str(entry + 1, 3),
+            FS_MEDIUM, FC_YELLOW);
+    DrawText(SX + 64, SY + 64 + i * 32, highscore[entry].Name, FS_BIG, color);
+    DrawText(SX + 14 * 32 + 16, SY + 64 + i * 32,
+            int2str(highscore[entry].Score, 5), FS_MEDIUM, color);
+#endif
   }
-
-  FadeToFront();
-  InitAnimation();
-  PlaySound(SND_HALLOFFAME);
 }
 
-void HandleHallOfFame(int button)
+void HandleHallOfFame(int mx, int my, int dx, int dy, int button)
 {
+  static int first_entry = 0;
+  static int highlight_position = 0;
+  int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
   int button_released = !button;
 
+  if (button == MB_MENU_INITIALIZE)
+  {
+    first_entry = 0;
+    highlight_position = mx;
+    drawHallOfFameList(first_entry, highlight_position);
+    return;
+  }
+
+  if (ABS(dy) == SCR_FIELDY)   /* handle XK_Page_Up, XK_Page_Down */
+    step = MAX_LEVEL_SERIES_ON_SCREEN - 1;
+
+  if (dy < 0)
+  {
+    if (first_entry > 0)
+    {
+      first_entry -= step;
+      if (first_entry < 0)
+       first_entry = 0;
+
+      drawHallOfFameList(first_entry, highlight_position);
+      return;
+    }
+  }
+  else if (dy > 0)
+  {
+    if (first_entry + MAX_LEVEL_SERIES_ON_SCREEN < MAX_SCORE_ENTRIES)
+    {
+      first_entry += step;
+      if (first_entry + MAX_LEVEL_SERIES_ON_SCREEN > MAX_SCORE_ENTRIES)
+       first_entry = MAX(0, MAX_SCORE_ENTRIES - MAX_LEVEL_SERIES_ON_SCREEN);
+
+      drawHallOfFameList(first_entry, highlight_position);
+      return;
+    }
+  }
+
   if (button_released)
   {
     FadeSound(SND_HALLOFFAME);
     game_status = MAINMENU;
     DrawMainMenu();
-    BackToFront();
   }
-  else
+
+  BackToFront();
+
+  if (game_status == HALLOFFAME)
     DoAnimation();
 }
 
index ccb6cd50b0e7139d58642dcdfa1a6288f870f32c..67ee9c28cd53c29432d665afda673b13c1a45b8a 100644 (file)
@@ -29,7 +29,7 @@ void HandleTypeName(int, KeySym);
 void DrawChooseLevel(void);
 void HandleChooseLevel(int, int, int, int, int);
 void DrawHallOfFame(int);
-void HandleHallOfFame(int);
+void HandleHallOfFame(int, int, int, int, int);
 void DrawSetupScreen(void);
 void HandleSetupScreen(int, int, int, int, int);
 void DrawSetupInputScreen(void);
index f40c0475cb8bf97de3a1b876233a58626ed5a1b5..d73c1d8900fa62c3b2dfe276c3aa8e919541271f 100644 (file)
@@ -319,6 +319,7 @@ void ClearWindow()
 int getFontWidth(int font_size, int font_type)
 {
   return (font_size == FS_BIG ? FONT1_XSIZE :
+         font_size == FS_MEDIUM ? FONT6_XSIZE :
          font_type == FC_SPECIAL1 ? FONT3_XSIZE :
          font_type == FC_SPECIAL2 ? FONT4_XSIZE :
          font_type == FC_SPECIAL3 ? FONT5_XSIZE :
@@ -328,6 +329,7 @@ int getFontWidth(int font_size, int font_type)
 int getFontHeight(int font_size, int font_type)
 {
   return (font_size == FS_BIG ? FONT1_YSIZE :
+         font_size == FS_MEDIUM ? FONT6_YSIZE :
          font_type == FC_SPECIAL1 ? FONT3_YSIZE :
          font_type == FC_SPECIAL2 ? FONT4_YSIZE :
          font_type == FC_SPECIAL3 ? FONT5_YSIZE :
@@ -388,7 +390,7 @@ void DrawTextExt(Drawable d, GC gc, int x, int y,
   int font_pixmap;
   boolean print_inverse = FALSE;
 
-  if (font_size != FS_SMALL && font_size != FS_BIG)
+  if (font_size != FS_SMALL && font_size != FS_BIG && font_size != FS_MEDIUM)
     font_size = FS_SMALL;
   if (font_type < FC_RED || font_type > FC_SPECIAL3)
     font_type = FC_RED;
@@ -396,8 +398,12 @@ void DrawTextExt(Drawable d, GC gc, int x, int y,
   font_width = getFontWidth(font_size, font_type);
   font_height = getFontHeight(font_size, font_type);
 
-  font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT : PIX_SMALLFONT);
-  font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE : FONT2_YSIZE) *
+  font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT :
+                font_size == FS_MEDIUM ? PIX_MEDIUMFONT :
+                PIX_SMALLFONT);
+  font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE :
+                            font_size == FS_MEDIUM ? FONT6_YSIZE :
+                            FONT2_YSIZE) *
                FONT_LINES_PER_FONT);
 
   if (font_type == FC_SPECIAL3)