]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/scroll16.h
pmnextframe readded ca needs huge amounts of work and i should remember what needs...
[16.git] / src / lib / scroll16.h
index fc187954663f4a3fbfdf0d8fe805146f437dfde7..cb92ce4a7a8192160d0978d0230ad2a65381bd04 100755 (executable)
@@ -28,7 +28,6 @@
 #include "src/lib/bakapee.h"\r
 #include "src/lib/16_vl.h"\r
 #include "src/lib/16_in.h"\r
-#include "src/lib/bitmap.h"\r
 #include "src/lib/16_map.h" //map is loaded here www\r
 #include "src/lib/16render.h"\r
 //#include "src/lib/16_map.h"  //new map stuff\r
@@ -81,9 +80,9 @@
 #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->MAPDATAPTR[(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("        pdir: %u\n", player[0].pdir); printf("  delay=%u", player[0].enti.spri.delay);\\r
 printf("\n\n");\\r
        VL_PrintmodexmemInfo(&gvar.video);\\r
 \\r
@@ -97,7 +96,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 +130,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->MAPTILESPTR->tileWidth;\r
+               mv[id].page->dx = mv[id].map->tiles->tileWidth;\r
        }\r
 }\r
 \r
@@ -149,7 +147,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->MAPTILESPTR->tileWidth;\r
+               mv[id].page->dx = mv[id].map->tiles->tileWidth;\r
        }\r
 }\r
 \r
@@ -166,7 +164,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->MAPTILESPTR->tileHeight;\r
+               mv[id].page->dy = mv[id].map->tiles->tileHeight;\r
        }\r
 }\r
 \r
@@ -183,7 +181,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->MAPTILESPTR->tileHeight;\r
+               mv[id].page->dy = mv[id].map->tiles->tileHeight;\r
        }\r
 }\r
 \r
@@ -199,6 +197,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