]> 4ch.mooo.com Git - 16.git/blobdiff - 16/roads/ROADS.H
refresh wwww
[16.git] / 16 / roads / ROADS.H
diff --git a/16/roads/ROADS.H b/16/roads/ROADS.H
new file mode 100755 (executable)
index 0000000..d4e10a9
--- /dev/null
@@ -0,0 +1,143 @@
+#define ROADS_H\r
+\r
+/* GENERIC TILING DEFINITIONS */\r
+\r
+#define WORLD_WIDTH       105    /* IN TILES, WIDTH OF "PLAYFIELD"  */\r
+#define WORLD_HEIGHT      100    /* IN TILES, HEIGHT OF "PLAYFIELD" */\r
+#define WORLD_TILES_TOTAL 10500  /* (WORLD_WIDTH*WORLD_HEIGHT)     */\r
+\r
+#define TILE_WIDTH       16  /* IN PIXELS, WIDTH OF TILE    */\r
+#define TILE_HEIGHT      16  /* IN PIXELS, HEIGHT OF TILE   */\r
+#define VIEW_WIDTH       20  /* (SCREEN_WIDTH/TILE_WIDTH)   */\r
+#define VIEW_HEIGHT      15  /* (SCREEN_HEIGHT/TILE_HEIGHT) */\r
+#define VIEW_TILES_TOTAL 300 /* (VIEW_WIDTH*VIEW_HEIGHT)    */\r
+#define MIXING_TILE      299 /* (VIEW_TILES_TOTAL-1)        */\r
+#define EMPTY_TILE -1   /* STANDARD INDEX FOR A SEE-THROUGH TILE */\r
+#define ERROR_TILE -2   /* STANDARD INDEX FOR ERRORS! */\r
+\r
+/* PROTOTYPES */\r
+\r
+void create_roads (void);\r
+int roadexit (int road, int direction);\r
+int makeintersection (int road, int ramp);\r
+void init_foreground (void);\r
+void init_background (void);\r
+void add_dirt_edges (void);\r
+void init_world(void);\r
+int redraw (int draw_type);\r
+void init_video (void);\r
+void init_data (void);\r
+void program_shutdown (char *msg, int errcode);\r
+void place_tile_block (int x1, int y1, int x2, int y2);\r
+void init_anim (void);\r
+void animate (void);\r
+void update_tile (int tile);\r
+void gogofrog (void);\r
+\r
+/* VIDEO MODE DEFINITIONS */\r
+#define VMODE  22\r
+#define VPAGES 3\r
+#define SCREEN_WIDTH    320\r
+#define SCREEN_HEIGHT   240\r
+#define IMAGES "roads.gif" /* IMAGE CONTAINING TILES */\r
+\r
+/* VIDEO PAGE DEFINITIONS */\r
+#define VIEWPAGE1 0\r
+#define VIEWPAGE2 1\r
+#define TILEPAGE  2\r
+\r
+/* STANDARD DEFINITIONS */\r
+#define FALSE 0\r
+#define TRUE 1\r
+\r
+/* CHECKS IF A TILE IS A ROAD OR NOT */\r
+#define isroad(r) (r>=FIRST_ROAD_TILE && r<=LAST_ROAD_TILE)\r
+\r
+#define REFRESH         0\r
+#define SCROLL_UP       1\r
+#define SCROLL_DOWN     2\r
+#define SCROLL_LEFT     3\r
+#define SCROLL_RIGHT    4\r
+#define SCROLL_UR       5\r
+#define SCROLL_DR       6\r
+#define SCROLL_DL       7\r
+#define SCROLL_UL       8\r
+#define NONFLIP_SCROLL_UP       11\r
+#define NONFLIP_SCROLL_DOWN     12\r
+#define NONFLIP_SCROLL_LEFT     13\r
+#define NONFLIP_SCROLL_RIGHT    14\r
+#define NONFLIP_REFRESH         15\r
+\r
+#define MAX_FAILS 50 /* MAXIMUM NUMBER OF ATTEMPTS TO PLACE TILES */\r
+\r
+/*\r
+ *\r
+ * MACROS TO CONVERT TILES FROM "ROW/COLUMN" FORMAT TO "INDEX" FORMAT\r
+ *\r
+ */\r
+\r
+        /* WORLD SPACE CONVERSIONS */\r
+#define WORLD_TILE(x,y) ((x)+(y)*WORLD_WIDTH) /* CONVERTS DUAL X,Y TO SINGLE */\r
+#define WORLD_TILE_X(z) ((z)%WORLD_WIDTH)     /* CONVERTS SINGLE TO DUAL X   */\r
+#define WORLD_TILE_Y(z) ((z)/WORLD_WIDTH)     /* CONVERTS SINGLE TO DUAL Y   */\r
+\r
+        /* VIEW SPACE CONVERSIONS */\r
+#define VIEW_TILE(x,y)  ((x)+(y)*VIEW_WIDTH)  /* CONVERTS DUAL X,Y TO SINGLE */\r
+#define VIEW_TILE_X(z)  ((z)%VIEW_WIDTH)      /* CONVERTS SINGLE TO DUAL X   */\r
+#define VIEW_TILE_Y(z)  ((z)/VIEW_WIDTH)      /* CONVERTS SINGLE TO DUAL Y   */\r
+\r
+/* RETURNS 1 IF A SINGLE WORLD TILE INDEX IS WITHIN THE VIEWING SCREEN */\r
+#define is_viewable(x)  (WORLD_TILE_X(x)>=view_x &&          \\r
+                        WORLD_TILE_X(x)<view_x+VIEW_WIDTH && \\r
+                        WORLD_TILE_Y(x)>=view_y &&           \\r
+                        WORLD_TILE_Y(x)<view_y+VIEW_HEIGHT)  \\r
+\r
+/* CONVERTS A WORLD INDEX INTO A VIEW INDEX -- USE IS_VIEWABLE TO MAKE */\r
+/* SURE THE WORLD INDEX IS WITHIN THE VIEWING AREA!                    */\r
+#define WORLD_TO_VIEW(x) VIEW_TILE(WORLD_TILE_X((x))-view_x,WORLD_TILE_Y((x))-view_y)\r
+\r
+#define DONS_VIEW_TO_WORLD(x) (WORLD_TILE (view_x, view_y) + (VIEW_TILE_Y (x) * WORLD_WIDTH) + VIEW_TILE_X (x)  /* CONVERT VIEW SINGLE TO WORLD SINGLE */\r
+#define VIEW_TO_WORLD(x) (WORLD_TILE (VIEW_TILE_X (x) + view_x, VIEW_TILE_Y (x) + view_y)) /* CONVERT VIEW SINGLE TO WORLD SINGLE */\r
+\r
+/*\r
+ *\r
+ * MACROS TO EASE COPYING OF TILES BETWEEN AND AMONG PAGES\r
+ *\r
+ */\r
+\r
+   /* INTENRAL MACRO USED IN COPY TILE MACROS -- USER, DO NOT CALL! */\r
+#define COPY_TILE_CORE(from,to,spage,dpage)        \\r
+    ((from)%VIEW_WIDTH)*TILE_WIDTH,         \\r
+    (((from)%VIEW_WIDTH)+1)*TILE_WIDTH-1,   \\r
+    ((from)/VIEW_WIDTH)*TILE_HEIGHT,        \\r
+    (((from)/VIEW_WIDTH)+1)*TILE_WIDTH-1,   \\r
+    ((to)%VIEW_WIDTH)*TILE_WIDTH,           \\r
+    (((to)/VIEW_WIDTH)+1)*TILE_HEIGHT-1,    \\r
+    spage, dpage\r
+\r
+    /* TRANSPARENT TILE COPY FROM HIDDEN PAGE TO ACTIVE PAGE */\r
+#define copy_tile_tr(from_tile,to_tile) \\r
+    fg_tcxfer (COPY_TILE_CORE(from_tile,to_tile,TILEPAGE,VIEWPAGE))\r
+\r
+    /* OPAQUE TILE COPY FROM HIDDEN PAGE TO ACTIVE PAGE */\r
+#define copy_tile_op(from_tile,to_tile) \\r
+    fg_transfer (COPY_TILE_CORE(from_tile,to_tile,TILEPAGE,VIEWPAGE))\r
+\r
+    /* TRANSPARENT TILE COPY */\r
+#define pagecopy_tile_tr(from_tile,to_tile,sourcepage,destpage) \\r
+    fg_tcxfer (COPY_TILE_CORE(from_tile,to_tile,sourcepage,destpage))\r
+\r
+    /* OPAQUE TILE COPY FROM */\r
+#define pagecopy_tile_op(from_tile,to_tile,sourcepage,destpage) \\r
+    fg_transfer (COPY_TILE_CORE(from_tile,to_tile,sourcepage,destpage))\r
+\r
+struct ANIMATION\r
+{\r
+    int anm;        /* NUMBER USED TO ENCODE ANIMATION IN WORLD */\r
+    int total;      /* TOTAL NUMBER OF TILES USED IN ANIMATION  */\r
+    int first;      /* FIRST TILE NO. IN ANIMATION              */\r
+    int current;    /* TILE CURRENTLY BEING SHOWN IN ANIMATION  */\r
+    int delay;      /* DELAY BETWEEN TILES IN CLOCK TICKS       */\r
+    long next;      /* TIME OF NEXT UPDATE                      */\r
+};\r
+\r