void draw_sword (ALLEGRO_BITMAP *bitmap, struct pos *p, enum vm vm, bool start_pos) { ALLEGRO_BITMAP *normal_sword = sword_bitmap (vm), *shiny_sword = shiny_sword_bitmap (vm); if (hgc) { normal_sword = apply_palette (normal_sword, hgc_palette); shiny_sword = apply_palette (shiny_sword, hgc_palette); } if (start_pos) { normal_sword = apply_palette (normal_sword, start_anim_palette); shiny_sword = apply_palette (shiny_sword, start_anim_palette); } struct coord c; ALLEGRO_BITMAP *sword = anim_cycle % 60 ? normal_sword : shiny_sword; seedp (p); draw_bitmapc (sword, bitmap, sword_coord (p, &c), prandom (1) ? ALLEGRO_FLIP_HORIZONTAL : 0); unseedp (); if (! start_pos) { push_clipping_rectangle (bitmap, c.x, c.y, al_get_bitmap_width (sword), al_get_bitmap_height (sword)); draw_confg_fg (bitmap, p, em, vm, NULL); pop_clipping_rectangle (); } }
void draw_door_fg (ALLEGRO_BITMAP *bitmap, struct pos *p, struct frame *f, enum em em, enum vm vm) { struct pos par, pr, pa; draw_floor_base (bitmap, p, em, vm); draw_door_pole (bitmap, p, em, vm); prel (p, &pr, +0, +1); prel (p, &pa, -1, +0); prel (p, &par, -1, +1); if (should_draw_door_grid (p, f)) { struct door *d = door_at_pos (p); draw_door_grid (bitmap, p, d->i, em, vm); draw_confg_right (bitmap, &pa, em, vm, true); draw_confg_base (bitmap, &par, em, vm); draw_confg_left (bitmap, &par, em, vm, true); draw_confg_fg (bitmap, &pr, em, vm, f); } }