From 1ca8aca3588ac1d6ee056b5795cb262eb8410a9b Mon Sep 17 00:00:00 2001 From: sparky4 <sparky4@cock.li> Date: Sat, 22 Nov 2014 10:25:54 -0600 Subject: [PATCH] modified: 16/modex16/scroll.c modified: 16/modex16/scroll.exe added edge triggers~ --- 16/modex16/scroll.c | 88 +++++++++++++++++++++++++++--------------- 16/modex16/scroll.exe | Bin 18566 -> 18766 bytes 2 files changed, 57 insertions(+), 31 deletions(-) diff --git a/16/modex16/scroll.c b/16/modex16/scroll.c index 8a960eee..838ef4bf 100644 --- a/16/modex16/scroll.c +++ b/16/modex16/scroll.c @@ -26,8 +26,10 @@ typedef struct { typedef struct { map_t *map; page_t *page; - int tx; //???? appears to be the tile position on the viewable screen map - int ty; //???? appears to be the tile position on the viewable screen map + int tx; //appears to be the top left tile position on the viewable screen map + int ty; //appears to be the top left tile position on the viewable screen map +// int ttx; //bottem right tile +// int tty; //bottem left tile word dxThresh; //???? word dyThresh; //???? } map_view_t; @@ -50,7 +52,12 @@ void mapDrawRow(map_view_t *mv, int tx, int ty, word y); void mapDrawCol(map_view_t *mv, int tx, int ty, word x); #define TILEWH 16 -#define QUADWH (TILEWH/4) +#define QUADWH (TILEWH/4) +#define SPEED 1 + +//place holder definitions +#define MAPX 40 +#define MAPY 30 //#define SWAP(a, b) tmp=a; a=b; b=tmp; void main() { // int show1=1; @@ -71,9 +78,13 @@ void main() { setkb(1); /* create the map */ - map = allocMap(160,120); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly + map = allocMap(MAPX,MAPY); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly initMap(&map); - mv.map = ↦ + mv.map = ↦ + + //initiate bottem right edge trigger +// mv.ttx = mv.tx + 20; +// mv.tty = mv.ty + 15; // mv2.map = ↦ /* draw the tiles */ @@ -82,7 +93,6 @@ void main() { screen = modexDefaultPage(); screen.width += (TILEWH*2); mv.page = &screen; - mapGoTo(&mv, 16, 16); // screen2=modexNextPage(mv.page); // mv2.page = &screen2; // mapGoTo(&mv2, 16, 16); @@ -91,57 +101,73 @@ void main() { /* set up paging */ // show = &mv; // draw = &mv2; - draw = &mv; + draw = &mv; + + mapGoTo(draw, 0, 0); //TODO: set player position data here according to the viewable map screen thingy - + + modexShowPage(draw->page); while(!keyp(1)) { //TODO: top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction //when player.tx or player.ty == 0 or player.tx == 20 or player.ty == 15 then stop because that is edge of map and you do not want to walk of the map - if(keyp(77)){ -// for(q=0; q<TILEWH; q++) { - mapScrollRight(draw, 1); -// modexShowPage(draw->page); + if(keyp(77)){ + if(draw->tx >= 0 && draw->tx+20 < MAPX) + for(q=0; q<16; q++) { + mapScrollRight(draw, SPEED); + modexShowPage(draw->page); // mapScrollRight(draw, 1); // SWAP(draw, show); -// } + } + } - if(keyp(75)){ -// for(q=0; q<TILEWH; q++) { - mapScrollLeft(draw, 1); -// modexShowPage(draw->page); + if(keyp(75)){ + if(draw->tx > 0 && draw->tx+20 <= MAPX) + for(q=0; q<16; q++) { + mapScrollLeft(draw, SPEED); + modexShowPage(draw->page); // mapScrollLeft(show, 1); // SWAP(draw, show); -// } + } + } - if(keyp(80)){ -// for(q=0; q<TILEWH; q++) { - mapScrollDown(draw, 1); -// modexShowPage(draw->page); + if(keyp(80)){ + if(draw->ty >= 0 && draw->ty+15 < MAPY) + for(q=0; q<16; q++) { + mapScrollDown(draw, SPEED); + modexShowPage(draw->page); // mapScrollDown(show, 1); // SWAP(draw, show); -// } + } + } - if(keyp(72)){ -// for(q=0; q<TILEWH; q++) { - mapScrollUp(draw, 1); -// modexShowPage(draw->page); + if(keyp(72)){ + if(draw->ty > 0 && draw->ty+15 <= MAPY) + for(q=0; q<16; q++) { + mapScrollUp(draw, SPEED); + modexShowPage(draw->page); // mapScrollUp(show, 1); // SWAP(draw, show); -// } + } + } //keyp(ch); - modexShowPage(draw->page); + //modexShowPage(draw->page); } - + modexLeave(); - setkb(0); + setkb(0); + printf("Project 16 scroll.exe\n"); + printf("tx: %d\n", draw->tx); + printf("ty: %d\n", draw->ty); + //printf("ttx: %d\n", draw->ttx); + //printf("tty: %d\n", draw->tty); } diff --git a/16/modex16/scroll.exe b/16/modex16/scroll.exe index 237625209c1e852c181a9daaff3091d00438534e..603a936804aed171a429cccf6e60913515708492 100755 GIT binary patch delta 4352 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 delta 4135 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 -- 2.39.5