X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_enti.c;h=6d8fd2d37efb2449ca93e7937d155cb0a6c2a8ae;hb=a565be31ce92d6168ae6983042da75b0b683e52b;hp=cb05a46af76f76793ca2c96b8d42cb3794fc8f65;hpb=0a79071b241fd133918bf178f5bd322368e4957c;p=16.git diff --git a/src/lib/16_enti.c b/src/lib/16_enti.c index cb05a46a..6d8fd2d3 100755 --- a/src/lib/16_enti.c +++ b/src/lib/16_enti.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * Copyright (C) 2012-2019 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover * * This file is part of Project 16. * @@ -31,40 +31,54 @@ void EN_initentity(entity_t *enti, video_t *video) enti->triggerx = enti->tx; enti->triggery = enti->ty+1; //south - enti->q = 1; - enti->d =2; - enti->hp=4; - enti->speed=4; + enti->q = 1;//loop var + enti->d = 2;//dir var + enti->pred = 4;//previous dir + enti->hp = 4;//hit points + enti->spt = 4;//walkspeed enti->persist_aniframe = enti->q; - enti->spt=(TILEWH/(enti->speed)); //speed per tile wwww - enti->pred = enti->d; - enti->overdraww=0; - enti->overdrawh=4; + enti->spt=(TILEWH/(enti->spt)); //speed per tile wwww + enti->overdraww = 0; + enti->overdrawh = 4; -// VL_Initofs(video); + VL_Initofs(video); // modexClearRegion(&video->page[0], enti->x, enti->y, 16, 16, 2); // modexClearRegion(&video->page[2], 0, 0, video->page[2].sw, video->page[2].sh, 45); // modexClearRegion(&video->page[3], 0, 0, video->page[3].sw, video->page[3].sh, 47); + if(!video->vga_state.bgps){ + //video->ofs.pattern_ofs=(uint16_t)video->page[0].data; + //video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; + w = (enti->x + 24) & (~3); + h = enti->y + 32; - video->ofs.pattern_ofs=(uint16_t)video->page[0].data; - video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; - w = (enti->x + 24) & (~3); - h = enti->y + 32; - - // block copy pattern to where we will draw the sprite - vga_setup_wm1_block_copy(); - o2 = video->ofs.offscreen_ofs; //dest - o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source - for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); - // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally - vga_restore_rm0wm0(); + // block copy pattern to where we will draw the sprite + vga_setup_wm1_block_copy(); + o2 = video->ofs.offscreen_ofs; //dest + o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source + for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); + // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally + vga_restore_rm0wm0(); + }//else{ + //w=h=o=i=o2=0; + //modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); + //} } //init player! -void EN_initplayer(player_t *player, word pn, video_t *video) +void EN_initPlayer(player_t *player, video_t *video) { - EN_initentity(&player[pn].enti, video); + EN_initentity(&player->enti, video); + player->enti.spri.x = player[0].enti.x-4; + player->enti.spri.y = player[0].enti.y-16; + player->walktype=0; + player->enti.dire=30; + vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = video->page[0].stridew;//skewing bug + + video->sprifilei = set_anim_by_id(&player->enti.spri, player->enti.dire); + animate_spri(&player->enti, video); + + //print_anim_ids(player[0].enti.spri); /* player[0].info.x = player[0].tx; player[0].info.xaxis = player[0].tx*TILEWH; player[0].info.y = player[0].ty;