]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_tdef.h
====----==== this is a messed up build that contains a busted 0.exe pan page system
[16.git] / src / lib / 16_tdef.h
index 278218f793ae2b02a3d723bdd52da7eab0fd0a88..9a225c8fb23b8a525c1bdb0230c802ac563e9b73 100755 (executable)
@@ -1,5 +1,5 @@
 /* Project 16 Source Code~\r
- * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
  *\r
  * This file is part of Project 16.\r
  *\r
@@ -99,25 +99,18 @@ typedef struct{
        sword tilemidposscreeny;        /* middle tile y position */    /* needed for scroll system to work accordingly */\r
        sword tileplayerposscreenx;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
        sword tileplayerposscreeny;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
-} ti_t;\r
+} tileinfo_t;\r
 \r
 typedef struct {\r
        nibble/*word*/ id;      /* the Identification number of the page~ For layering~ */\r
        byte far* data; /* the data for the page */\r
+       tileinfo_t      ti;\r
        word dx;                /* col we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the left size */\r
        word dy;                /* row we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the top size */\r
        word sw;                /* screen width */      /* resolution */\r
        word sh;                /* screen heigth */     /* resolution */\r
-               word tw;                /* screen width in tiles */\r
-               word th;                /* screen height in tiles */\r
        word width;             /* virtual width of the page */\r
        word height;    /* virtual height of the page */\r
-               word tilesw;            /* virtual screen width in tiles */\r
-               word tilesh;            /* virtual screen height in tiles */\r
-               sword tilemidposscreenx;        /* middle tile x position */    /* needed for scroll system to work accordingly */\r
-               sword tilemidposscreeny;        /* middle tile y position */    /* needed for scroll system to work accordingly */\r
-               sword tileplayerposscreenx;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
-               sword tileplayerposscreeny;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
        word stridew;                   /* width/4 */   /* VGA */\r
        word pagesize;                  /* page size */\r
        word pi;                                /* increment page by this much to preserve location */\r
@@ -126,7 +119,30 @@ typedef struct {
        sword delta;                    // How much should we shift the page for smooth scrolling\r
 } page_t;\r
 \r
-//new structs\r
+//from 16_sprit.h\r
+#ifdef __WATCOMC__\r
+typedef struct sprite\r
+{\r
+       // VRS container from which we will extract animation and image data\r
+       struct vrs_container *spritesheet;\r
+       // Container for a vrl sprite\r
+       struct vrl_container *sprite_vrl_cont;\r
+       // Current sprite id\r
+       int curr_spri_id;\r
+       // Index of a current sprite in an animation sequence\r
+       int curr_anim_spri;\r
+       // Current animation sequence\r
+       struct vrs_animation_list_entry_t *curr_anim_list;\r
+       // Index of current animation in relevant VRS offsets table\r
+       int curr_anim;\r
+       // Delay in time units untill we should change sprite\r
+       int delay;\r
+       // Position of sprite on screen\r
+       int x, y;\r
+} sprite_t;\r
+#endif\r
+\r
+//newer structs\r
 typedef        struct\r
 {\r
        int x; //entity exact position on the viewable map\r
@@ -135,35 +151,23 @@ typedef   struct
        int ty; //entity tile position on the viewable map\r
        int triggerx; //entity's trigger box tile position on the viewable map\r
        int triggery; //entity's trigger box tile position on the viewable map\r
-       int sheetsetx; //NOT USED YET! entity sprite sheet set on the image x\r
-       int sheetsety; //NOT USED YET! entity sprite sheet set on the image y\r
+//     int sheetsetx; //NOT USED YET! entity sprite sheet set on the image x\r
+//     int sheetsety; //NOT USED YET! entity sprite sheet set on the image y\r
        nibble d;               //direction to render sprite!! wwww\r
        nibble pred;    //prev. direction for animation changing\r
        word dire;              //sprite in use\r
        nibble q;               //loop variable for anumation and locking the playing to compleate the animation cycle to prevent issues with misalignment www\r
        word speed;             //entity speed!\r
        word spt;               //speed per tile\r
-       struct sprite *spri; // sprite used by entity\r
+#ifdef __WATCOMC__\r
+       sprite_t *spri; // sprite used by entity\r
+#endif\r
        sword hp; //hitpoints of the entity\r
        nibble overdraww, overdrawh;    // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks.\r
                                                // if the sprite's edge pixels are clear anyway, you can set this to 0.\r
        nibble /*int*/ persist_aniframe;    // gonna be increased to 1 before being used, so 0 is ok for default\r
 } entity_t;\r
 \r
-//TODO: MAKE THIS WWWW\r
-typedef struct\r
-{\r
-       //sprite ....\r
-       boolean wwww;\r
-} spri_t;\r
-\r
-//TODO: MAKE THIS TO WWWW\r
-typedef struct\r
-{\r
-       //vrs with sprite ....\r
-       spri_t *spri;\r
-} vrs_t;\r
-\r
 //from 16_in\r
 //==========================================================================\r
 typedef        byte            ScanCode;\r
@@ -256,6 +260,11 @@ typedef struct
 } kurokku_t;\r
 \r
 //video\r
+typedef struct\r
+{\r
+       unsigned int offscreen_ofs;\r
+       unsigned int pattern_ofs;\r
+} ofs_t;\r
 #define NUMCHUNKS      416     //keen\r
 \r
 typedef struct\r
@@ -272,12 +281,13 @@ typedef struct
        //end of doslib origi vars\r
        boolean __near rss;                     //render sprite switch\r
        sword __near sprifilei;         //player file's i\r
-       boolean __near p;                       //render page number //BLEH\r
+       nibble __near p;                        //render page number\r
+       nibble __near sp;                       //show page number(for showpage)\r
        boolean __near r;                       //page flip, showpage, or render        if true\r
        word pr[MAXPAGE][4];    //render sections of pages (this is supposed to be set up to draw sections of the screen if updated)\r
 \r
        nibble sfip;            //shinku_fps_indicator_page; // we're on page 1 now, shinku(). follow along please or it will not be visible.\r
-       nibble panp;            //pan_t replacement\r
+       ofs_t   ofs;            //offset vars used for doslib\r
        word    vh;             //video combined height\r
        //0000word startclk; float clk, tickclk;        //timer\r
 //newer vars\r
@@ -285,6 +295,36 @@ typedef struct
        byte grneeded[NUMCHUNKS];\r
 } video_t;\r
 \r
+//from scroll16\r
+//==========================================================================\r
+typedef struct\r
+{\r
+       map_t *map;\r
+       page_t *page;\r
+       int tx,ty; //appears to be the top left tile position on the viewable screen map\r
+       word dxThresh,dyThresh; //Threshold for physical tile switch\r
+       video_t *video; //pointer to game variables of the video\r
+       nibble __near *p;       // pointer to video's render page num\r
+       nibble __near *sp;      // pointer to video's show page num\r
+       int dx, dy;     // draw row and col var\r
+//newer vars!\r
+       int delta, d;\r
+} map_view_t;\r
+/* Map is presumed to:\r
+ * 1. Have all the required layers and tilesets within itself\r
+ * 2. Have a 'fence' around accessible blocks to simplify boundary logic\r
+ * 3. Have a persistent map and tile size among the layers\r
+ * Map view is presumed to:\r
+ * 1. Calculate, store and update a panning info, which includes, but not limited to:\r
+ *     combined layer information, actual map representation (reflecting real state of the game),\r
+ *     pixel shift for smooth tile scrolling.\r
+ * 2. Provide ways to draw a visible part of map. For simplicity with smooth scrolling,\r
+ *     additional row/column is always drawn at the each side of the map. This implies that 'fence'\r
+ *     should have a sprite too. Map is drawn left-to-right, top-to-bottom.\r
+ */\r
+\r
+//==========================================================================\r
+\r
 //from 16_mm\r
 //==========================================================================\r
 \r
@@ -497,10 +537,8 @@ typedef struct
        mminfo_t mm; mminfotype mmi;\r
 } global_game_variables_t;\r
 \r
-extern char global_temp_status_text[512];\r
-extern char global_temp_status_textR[512];\r
-extern char global_temp_status_textC[512];\r
 #ifdef __WATCOMC__\r
+extern char global_temp_status_text[512];\r
 #define EINVFMT EMFILE\r
 #endif\r
 #endif /* _TYPEDEFSTRUCT_H_ */\r