My GTetrinet 0.7.11 Shadow Patch and my theme.

diff -ruN gtetrinet-0.7.11/src/fields.c gtetrinet-af/src/fields.c
--- gtetrinet-0.7.11/src/fields.c	2005-03-18 23:19:17.000000000 +0200
+++ gtetrinet-af/src/fields.c	2008-08-27 02:58:22.000000000 +0300
@@ -48,7 +48,8 @@
 static gint fields_specials_expose (GtkWidget *widget);
 
 static void fields_refreshfield (int field);
-static void fields_drawblock (int field, int x, int y, char block);
+//static void fields_drawblock (int field, int x, int y, char block);
+void fields_drawblock (int field, int x, int y, char block);
 
 static void gmsginput_activate (void);
 
@@ -361,10 +362,10 @@
     int x, y;
     for (y = 0; y < FIELDHEIGHT; y ++)
         for (x = 0; x < FIELDWIDTH; x ++)
-            if (newfield[y][x] != displayfields[field][y][x]) {
+            //if (newfield[y][x] != displayfields[field][y][x]) {
                 fields_drawblock (field, x, y, newfield[y][x]);
                 displayfields[field][y][x] = newfield[y][x];
-            }
+            //}
 }
 
 void fields_drawblock (int field, int x, int y, char block)
diff -ruN gtetrinet-0.7.11/src/fields.h gtetrinet-af/src/fields.h
--- gtetrinet-0.7.11/src/fields.h	2005-03-18 23:19:17.000000000 +0200
+++ gtetrinet-af/src/fields.h	2008-08-27 02:58:22.000000000 +0300
@@ -22,3 +22,8 @@
 extern void fields_gmsginputclear (void);
 extern void fields_gmsginputactivate (int i);
 extern const char *fields_gmsginputtext (void);
+
+
+//AF
+extern void fields_drawblock (int field, int x, int y, char block);
+
diff -ruN gtetrinet-0.7.11/src/gtetrinet.c gtetrinet-af/src/gtetrinet.c
--- gtetrinet-0.7.11/src/gtetrinet.c	2005-03-18 23:19:18.000000000 +0200
+++ gtetrinet-af/src/gtetrinet.c	2008-08-27 02:58:22.000000000 +0300
@@ -48,6 +48,10 @@
 #include "images/partyline.xpm"
 #include "images/winlist.xpm"
 
+#define DEBUGf(f,p...) fields_attdeffmt(f, ##p);
+
+
+
 static GtkWidget *pixmapdata_label (char **d, char *str);
 static int gtetrinet_key (int keyval, int mod);
 gint keypress (GtkWidget *widget, GdkEventKey *key);
diff -ruN gtetrinet-0.7.11/src/tetris.c gtetrinet-af/src/tetris.c
--- gtetrinet-0.7.11/src/tetris.c	2005-03-18 23:19:19.000000000 +0200
+++ gtetrinet-af/src/tetris.c	2008-08-27 02:58:22.000000000 +0300
@@ -165,6 +165,32 @@
     if (blocknum >= 0)
         placeblock (field, blocknum, blockorient, blockx, blocky);
     fields_drawfield (playerfield(playernum), field);
+
+
+    // AF: make shadow
+    FIELD shadowfield;
+    int x, y, y1, f;
+
+    if (blocknum < 0) return;
+
+    y1=0;
+    while (!blockobstructed(fields[playernum], blocknum, blockorient, blockx, y1))
+	    y1++;
+    y1--;
+
+    if (y1-4<=blocky) return;
+
+    copyfield (shadowfield, field);
+    if (blocknum >= 0)
+        placeblock (shadowfield, blocknum, blockorient, blockx, y1);
+    f = playerfield(playernum);
+	
+    for (y = 0; y < FIELDHEIGHT; y ++)
+        for (x = 0; x < FIELDWIDTH; x ++)
+            if (shadowfield[y][x] != fields[playernum][y][x]) {
+                fields_drawblock (f, x, y, shadowfield[y][x]);
+            }
+
 }
 
 int tetris_makeblock (int block, int orient)