initial interface requests
[netris.git] / shapes.c
index c62f69b2d827af4e45df5c0f0d381293fc41f1ce..2309bcc7ee291d0c9badea3734fdc09aa4b0de21 100644 (file)
--- a/shapes.c
+++ b/shapes.c
@@ -1,6 +1,6 @@
 /*
  * Netris -- A free networked version of T*tris
- * Copyright (C) 1994,1995,1996  Mark H. Weaver <mhw@netris.org>
+ * Copyright (C) 1994-1996,1999  Mark H. Weaver <mhw@netris.org>
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -16,7 +16,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: shapes.c,v 1.15 1996/02/09 08:22:17 mhw Exp $
+ * $Id: shapes.c,v 1.16 1999/05/16 06:56:31 mhw Exp $
  */
 
 #include "netris.h"
 #define PreDecl(name, dir) \
        static Shape ShapeName(name, dir)
 
-#define StdShape(name, cmdName, mirror, type, realDir, dir, nextDir) \
-       static Shape ShapeName(name, dir) = { &ShapeName(name, nextDir), \
-               0, 0, mirror, D_ ## realDir, type, cmds_ ## cmdName }
+#define StdShape(name, cmdName, mirror, type, realDir, dir, nextDir, prevDir) \
+       static Shape ShapeName(name, dir) = { \
+               &ShapeName(name, nextDir), &ShapeName(name, prevDir), \
+               0, 0, mirror, D_ ## realDir, type, cmds_ ## cmdName \
+       }
 
 #define FourWayDecl(name, cmdName, mirror, type) \
        PreDecl(name, down); \
-       StdShape(name, cmdName, mirror, type, left, left, down); \
-       StdShape(name, cmdName, mirror, type, up, up, left); \
-       StdShape(name, cmdName, mirror, type, right, right, up); \
-       StdShape(name, cmdName, mirror, type, down, down, right)
+       PreDecl(name, up); \
+       StdShape(name, cmdName, mirror, type, left, left, up, down); \
+       PreDecl(name, right); \
+       StdShape(name, cmdName, mirror, type, up, up, right, left); \
+       StdShape(name, cmdName, mirror, type, right, right, down, up); \
+       StdShape(name, cmdName, mirror, type, down, down, left, right)
 
 #define TwoWayDecl(name, cmdName, mirror, type) \
        PreDecl(name, vert); \
-       StdShape(name, cmdName, mirror, type, right, horiz, vert); \
-       StdShape(name, cmdName, mirror, type, down, vert, horiz)
+       StdShape(name, cmdName, mirror, type, right, horiz, vert, vert); \
+       StdShape(name, cmdName, mirror, type, down, vert, horiz, horiz)
 
 static Cmd cmds_long[] = { C_back, C_plot, C_forw, C_plot, C_forw, C_plot,
        C_forw, C_plot, C_end };
-TwoWayDecl(long, long, 0, BT_piece1);
+TwoWayDecl(long, long, 0, BT_blue);
 
 static Cmd cmds_square[] = { C_plot, C_forw, C_left, C_plot, C_forw, C_left,
        C_plot, C_forw, C_left, C_plot, C_end };
-static Shape shape_square = { &shape_square, 0, 0, D_up, 0, BT_piece1,
-       cmds_square };
+static Shape shape_square = { &shape_square, &shape_square, 0, 0, D_up, 0,
+       BT_magenta, cmds_square };
 
 static Cmd cmds_l[] = { C_right, C_back, C_plot, C_forw, C_plot, C_forw,
        C_plot, C_left, C_forw, C_plot, C_end };
-FourWayDecl(l, l, 0, BT_piece1);
-FourWayDecl(l1, l, 1, BT_piece1);
+FourWayDecl(l, l, 0, BT_cyan); 
+FourWayDecl(l1, l, 1, BT_yellow);
 
 static Cmd cmds_t[] = { C_plot, C_forw, C_plot, C_back, C_right, C_forw,
        C_plot, C_back, C_back, C_plot, C_end };
-FourWayDecl(t, t, 0, BT_piece1);
+FourWayDecl(t, t, 0, BT_white);
 
 static Cmd cmds_s[] = { C_back, C_plot, C_forw, C_plot, C_left, C_forw,
        C_plot, C_right, C_forw, C_plot, C_end };
-TwoWayDecl(s, s, 0, BT_piece1);
-TwoWayDecl(s1, s, 1, BT_piece1);
+TwoWayDecl(s, s, 0, BT_green);
+TwoWayDecl(s1, s, 1, BT_red);
 
 ShapeOption stdOptions[] = {
        {1, &shape_long_horiz},