]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.h
i need to migrate to the memory manager stuff sometime
[16.git] / src / lib / scroll16.h
index c33d99c35e1b21a9e5c7f200798df9d8505ebf2f..a749d7f943368d6e4f75fa7c1b7c19515d4633ba 100755 (executable)
@@ -81,7 +81,7 @@
 #define SCROLLEXITMESG         printf("page[0]dxy: %dx%d", gvar.video.page[0].dx, gvar.video.page[0].dy);\\r
        printf("\n\n");\\r
        printf("player vars:\n");\\r
-       printf("        xy: %dx%d", player[0].enti.x, player[0].enti.y); printf("       txy: %dx%d", player[0].enti.tx, player[0].enti.ty); printf("    triggxy: %dx%d", player[0].enti.triggerx, player[0].enti.triggery); printf("    value: %d\n", mv[1].map->layerdata[0][(player[0].enti.triggerx-1)+(map.width*(player[0].enti.triggery-1))]);\\r
+       printf("        xy: %dx%d", player[0].enti.x, player[0].enti.y); printf("       txy: %dx%d", player[0].enti.tx, player[0].enti.ty); printf("    triggxy: %dx%d", player[0].enti.triggerx, player[0].enti.triggery); printf("    value: %d\n", mv[1].map->layerdata[0].data[(player[0].enti.triggerx-1)+(map.width*(player[0].enti.triggery-1))]);\\r
        printf("        hp: %d", (player[0].enti.hp));  printf("        q: %u", player[0].enti.q);      printf("        info.dir: %u", player[0].info.dir);     printf("        d: %u", player[0].enti.d);      printf("        dire: %u", player[0].enti.dire);\\r
                printf("        pdir: %u\n", player[0].pdir); printf("  delay=%u", player[0].enti.spri->delay);\\r
 printf("\n\n");\\r
@@ -97,7 +97,6 @@ extern boolean pagenorendermap, pagedelayrendermap;
 extern char global_temp_status_text[512];\r
 extern char global_temp_status_text2[512];\r
 \r
-//map_t allocMap(int w, int h);\r
 void initMap(map_t *map);\r
 void ZC_walk(map_view_t *pip, player_t *player, word pn);\r
 void ZC_panPageManual(map_view_t *pip, player_t *player, word pn);\r
@@ -132,7 +131,7 @@ inline void near ScrollRight(map_view_t *mv, player_t *player, word id, word pli
                /* Snap the origin forward */\r
                mv[id].page->data += 4;\r
 \r
-               mv[id].page->dx = mv[id].map->layertile[0]->tileWidth;\r
+               mv[id].page->dx = mv[id].map->tiles->tileWidth;\r
        }\r
 }\r
 \r
@@ -149,7 +148,7 @@ inline void near ScrollLeft(map_view_t *mv, player_t *player, word id, word plid
                /* Snap the origin backward */\r
                mv[id].page->data -= 4;\r
 \r
-               mv[id].page->dx = mv[id].map->layertile[0]->tileWidth;\r
+               mv[id].page->dx = mv[id].map->tiles->tileWidth;\r
        }\r
 }\r
 \r
@@ -166,7 +165,7 @@ inline void near ScrollUp(map_view_t *mv, player_t *player, word id, word plid)
                /* Snap the origin upward */\r
                mv[id].page->data -= mv[id].page->pi;\r
 \r
-               mv[id].page->dy = mv[id].map->layertile[0]->tileHeight;\r
+               mv[id].page->dy = mv[id].map->tiles->tileHeight;\r
        }\r
 }\r
 \r
@@ -183,7 +182,7 @@ inline void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid
                /* Snap the origin downward */\r
                mv[id].page->data += mv[id].page->pi;\r
 \r
-               mv[id].page->dy = mv[id].map->layertile[0]->tileHeight;\r
+               mv[id].page->dy = mv[id].map->tiles->tileHeight;\r
        }\r
 }\r
 \r
@@ -199,6 +198,51 @@ boolean ZC_walk2(entity_t *ent, map_view_t *map_v);
 // Move player around and call map scrolling if required/possible\r
 void walk_player(player_t *player, map_view_t *map_v);\r
 \r
+//check map edge\r
+inline boolean ZC_mapEdgeChk(map_view_t *map_v, nibble dir, boolean pansw)\r
+{\r
+       int     w,h;\r
+\r
+       switch (pansw)\r
+       {\r
+               case 0:\r
+                       w = map_v[0].map->width;\r
+                       h = map_v[0].map->height;\r
+               break;\r
+               case 1:\r
+                       w = map_v[0].page->ti.tilesw;\r
+                       h = map_v[0].page->ti.tilesh;\r
+               break;\r
+       }\r
+\r
+       switch(dir)\r
+       {\r
+               //no direction\r
+               default:\r
+               case 2:\r
+                       //0000pip[0].video->startclk = (*clockw);\r
+                       return false;\r
+               break;\r
+               //right movement\r
+               case 3:\r
+                       if(map_v[0].tx >= 0 && map_v[0].tx+map_v[0].page->ti.tw < w) return true;\r
+               break;\r
+               //left movement\r
+               case 1:\r
+                       if(map_v[0].tx > 0 && map_v[0].tx+map_v[0].page->ti.tw <= w) return true;\r
+               break;\r
+               //down movement\r
+               case 4:\r
+                       if(map_v[0].ty >= 0 && map_v[0].ty+map_v[0].page->ti.th < h) return true;\r
+               break;\r
+               //up movement\r
+               case 0:\r
+                       if(map_v[0].ty > 0 && map_v[0].ty+map_v[0].page->ti.th <= h) return true;\r
+               break;\r
+       }\r
+       return false;\r
+}\r
+\r
 // Scroll map in one direction (assumed from player's movement)\r
 void mapScroll(map_view_t *mv, player_t *player);\r
 \r