diff options
author | UnavailableDev <69792062+UnavailableDev@users.noreply.github.com> | 2023-04-06 12:32:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-06 12:32:23 +0200 |
commit | d1c00c98ca0f2ca498284e60fa057a610cc5c461 (patch) | |
tree | a2efebcb9917d7f4f3666a722338f50b9590e843 /src/engine/animator.c | |
parent | 1771aaa12736b4dbc24419270cf595de6d345969 (diff) | |
parent | 93e9426d5642dfab7a13d5a34873b296de1d9642 (diff) |
Merge pull request #58 from UnavailableDev/dev
Dynamic tilemap
Diffstat (limited to 'src/engine/animator.c')
-rw-r--r-- | src/engine/animator.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/src/engine/animator.c b/src/engine/animator.c index 1af8dde..e293eb1 100644 --- a/src/engine/animator.c +++ b/src/engine/animator.c @@ -16,40 +16,26 @@ void hh_animate_hit(hh_s_rendering* in, bool hit) { } void hh_animate(hh_s_rendering* in, uint16_t start, uint16_t end, uint8_t step) { - if (in->fam.palette_index >= start && in->fam.palette_index < end) { - in->fam.palette_index += step; + if (in->fam.tilemap_index >= start && in->fam.tilemap_index < end) { + in->fam.tilemap_index += step; } else {// rollover - in->fam.palette_index = start; + in->fam.tilemap_index = start; } } -//TODO: if entity not inside of screen, don't update idx -uint16_t hh_update_sprite(uint16_t idx, hh_entity* in, vec_cor cam) { +//TODO: if entity not inside of screen, don't update idx (problems with old idx not being overwritten anymore) +void hh_update_sprite(uint16_t *idx, hh_entity* in, vec_cor cam) { hh_animate_hit(&in->render, in->is_hit); hh_s_ppu_loc_fam_entry temp = in->render.fam; for (int y = 0; y < CEILI(in->size.y,16); y++) { temp.position_y = CLAMP(in->pos.y - cam.y + y*HH_PPU_SPRITE_HEIGHT, -16, HH_PPU_SCREEN_HEIGHT); for (int x = 0; x < CEILI(in->size.x,16); x++) { temp.position_x = CLAMP(in->pos.x - cam.x + x*HH_PPU_SPRITE_WIDTH, -16, HH_PPU_SCREEN_WIDTH); - hh_ppu_update_foreground(++idx, temp); - temp.tilemap_index++; + // if (temp.position_x != -16 && temp.position_y != -16) {// removes redundant sprites + hh_ppu_update_foreground(++*idx, temp); + temp.tilemap_index++; + // hh_animate(&in->render, start+counter,end+counter,4); + // } } } - return idx; } - - -// void hh_update_sprite(hh_entity* in, vec_cor cam) { -// hh_animate_hit(&in->render, in->is_hit); -// // uint16_t idx = in->render.ppu_foreground_index; -// uint16_t idx = 0; -// hh_s_ppu_loc_fam_entry temp = in->render.fam; -// for (int y = 0; y < CEILI(in->size.y,16); y++) { -// temp.position_y = CLAMP(in->pos.y - cam.y + y*HH_PPU_SPRITE_HEIGHT, -16, HH_PPU_SCREEN_HEIGHT); -// for (int x = 0; x < CEILI(in->size.x,16); x++) { -// temp.position_x = CLAMP(in->pos.x - cam.x + x*HH_PPU_SPRITE_WIDTH, -16, HH_PPU_SCREEN_WIDTH); -// hh_ppu_update_foreground(idx++, temp); -// temp.tilemap_index++; -// } -// } -// } |