rnd-19990924-1-src
[rocksndiamonds.git] / src / tools.c
index 046d47c47dbefe1fc26f3bb83f506fad67d82c04..f40c0475cb8bf97de3a1b876233a58626ed5a1b5 100644 (file)
@@ -334,6 +334,17 @@ int getFontHeight(int font_size, int font_type)
          FONT2_YSIZE);
 }
 
+void DrawInitText(char *text, int ypos, int color)
+{
+  if (display && window && pix[PIX_SMALLFONT])
+  {
+    XFillRectangle(display, window, gc, 0, ypos, WIN_XSIZE, FONT2_YSIZE);
+    DrawTextExt(window, gc, (WIN_XSIZE - strlen(text) * FONT2_XSIZE)/2,
+               ypos,text,FS_SMALL,color);
+    XFlush(display);
+  }
+}
+
 void DrawTextFCentered(int y, int font_type, char *format, ...)
 {
   char buffer[FULL_SXSIZE / FONT5_XSIZE + 10];
@@ -606,9 +617,14 @@ void DrawPlayer(struct PlayerInfo *player)
 
   DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, NO_CUTTING);
 
-  if (FORCE_FIELD_ON(player))
-    DrawGraphicAnimationShiftedThruMask(sx, sy, sxx, syy, GFX_FUNKELN_BLAU,
+  if (SHIELD_ON(player))
+  {
+    int graphic = (player->shield_active_time_left ? GFX2_SHIELD_ACTIVE :
+                  GFX2_SHIELD_PASSIVE);
+
+    DrawGraphicAnimationShiftedThruMask(sx, sy, sxx, syy, graphic,
                                        3, 8, ANIM_OSCILLATE);
+  }
 
   if (player->Pushing && player->GfxPos)
   {
@@ -2504,15 +2520,13 @@ int el2gfx(int element)
     case EL_DOOR_WHITE:                return GFX_DOOR_WHITE;
     case EL_DOOR_WHITE_GRAY:   return GFX_DOOR_WHITE_GRAY;
     case EL_KEY_WHITE:         return GFX_KEY_WHITE;
-    case EL_FORCE_FIELD_PASSIVE:return GFX_FORCE_FIELD_PASSIVE;
-    case EL_FORCE_FIELD_ACTIVE:        return GFX_FORCE_FIELD_ACTIVE;
+    case EL_SHIELD_PASSIVE:    return GFX_SHIELD_PASSIVE;
+    case EL_SHIELD_ACTIVE:     return GFX_SHIELD_ACTIVE;
     case EL_EXTRA_TIME:                return GFX_EXTRA_TIME;
     case EL_SWITCHGATE_OPEN:   return GFX_SWITCHGATE_OPEN;
     case EL_SWITCHGATE_CLOSED: return GFX_SWITCHGATE_CLOSED;
     case EL_SWITCHGATE_SWITCH_1:return GFX_SWITCHGATE_SWITCH_1;
     case EL_SWITCHGATE_SWITCH_2:return GFX_SWITCHGATE_SWITCH_2;
-    case EL_TIME_GATE:         return GFX_TIME_GATE;
-    case EL_TIME_GATE_WHEEL:   return GFX_TIME_GATE_WHEEL;
     case EL_BELT1_LEFT:                return GFX_BELT1_LEFT;
     case EL_BELT1_MIDDLE:      return GFX_BELT1_MIDDLE;
     case EL_BELT1_RIGHT:       return GFX_BELT1_RIGHT;
@@ -2561,6 +2575,28 @@ int el2gfx(int element)
     case EL_SAND_INVISIBLE:    return GFX_SAND_INVISIBLE;
     case EL_DX_UNKNOWN_15:     return GFX_DX_UNKNOWN_15;
     case EL_DX_UNKNOWN_42:     return GFX_DX_UNKNOWN_42;
+    case EL_TIMEGATE_OPEN:     return GFX_TIMEGATE_OPEN;
+    case EL_TIMEGATE_CLOSED:   return GFX_TIMEGATE_CLOSED;
+    case EL_TIMEGATE_SWITCH_ON:        return GFX_TIMEGATE_SWITCH;
+    case EL_TIMEGATE_SWITCH_OFF:return GFX_TIMEGATE_SWITCH;
+    case EL_BALLOON:           return GFX_BALLOON;
+    case EL_BALLOON_SEND_LEFT: return GFX_BALLOON_SEND_LEFT;
+    case EL_BALLOON_SEND_RIGHT:        return GFX_BALLOON_SEND_RIGHT;
+    case EL_BALLOON_SEND_UP:   return GFX_BALLOON_SEND_UP;
+    case EL_BALLOON_SEND_DOWN: return GFX_BALLOON_SEND_DOWN;
+    case EL_BALLOON_SEND_ANY:  return GFX_BALLOON_SEND_ANY;
+    case EL_EMC_STEEL_WALL_1:  return GFX_EMC_STEEL_WALL_1;
+    case EL_EMC_STEEL_WALL_2:  return GFX_EMC_STEEL_WALL_2;
+    case EL_EMC_STEEL_WALL_3:  return GFX_EMC_STEEL_WALL_3;
+    case EL_EMC_STEEL_WALL_4:  return GFX_EMC_STEEL_WALL_4;
+    case EL_EMC_WALL_1:                return GFX_EMC_WALL_1;
+    case EL_EMC_WALL_2:                return GFX_EMC_WALL_2;
+    case EL_EMC_WALL_3:                return GFX_EMC_WALL_3;
+    case EL_EMC_WALL_4:                return GFX_EMC_WALL_4;
+    case EL_EMC_WALL_5:                return GFX_EMC_WALL_5;
+    case EL_EMC_WALL_6:                return GFX_EMC_WALL_6;
+    case EL_EMC_WALL_7:                return GFX_EMC_WALL_7;
+    case EL_EMC_WALL_8:                return GFX_EMC_WALL_8;
 
     default:
     {