void draw_skeleton_floor (ALLEGRO_BITMAP *bitmap, struct pos *p, enum em em, enum vm vm) { draw_floor_base (bitmap, p, em, vm); draw_skeleton_floor_left (bitmap, p, em, vm); draw_skeleton_floor_right (bitmap, p, em, vm); }
void draw_opener_floor_base (ALLEGRO_BITMAP *bitmap, struct pos *p, enum em em, enum vm vm) { if (is_fake (p)) { draw_unpressed_opener_floor_base (bitmap, p, em, vm); return; } struct opener_floor *o = opener_floor_at_pos (p); if (! o) return; if (o->broken) { draw_floor_base (bitmap, p, em, vm); return; } if (o->pressed) draw_floor_base (bitmap, p, em, vm); else draw_unpressed_opener_floor_base (bitmap, p, em, vm); }
void draw_loose_floor_base (ALLEGRO_BITMAP *bitmap, struct pos *p, enum em em, enum vm vm) { struct loose_floor *l = loose_floor_at_pos (p); if (! l) return; switch (l->state) { case 0: draw_floor_base (bitmap, p, em, vm); break; case 1: draw_loose_floor_00_base (bitmap, p, em, vm); break; case 2: draw_loose_floor_01_base (bitmap, p, em, vm); break; } }
void draw_closer_floor_base (ALLEGRO_BITMAP *bitmap, struct pos *p, enum em em, enum vm vm) { struct closer_floor *c = closer_floor_at_pos (p); if (! c) return; if (c->broken) { draw_floor_base (bitmap, p, em, vm); return; } if (c->pressed) draw_pressed_closer_floor_base (bitmap, p, em, vm); else draw_unpressed_closer_floor_base (bitmap, p, em, vm); }
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); } }
void draw_confg_base (ALLEGRO_BITMAP *bitmap, struct pos *p, enum em em, enum vm vm) { switch (fake (p)) { case NO_FLOOR: return; case FLOOR: draw_floor_base (bitmap, p, em, vm); break; case BROKEN_FLOOR: draw_floor_base (bitmap, p, em, vm); break; case SKELETON_FLOOR: draw_floor_base (bitmap, p, em, vm); break; case LOOSE_FLOOR: draw_loose_floor_base (bitmap, p, em, vm); break; case SPIKES_FLOOR: draw_floor_base (bitmap, p, em, vm); break; case OPENER_FLOOR: draw_opener_floor_base (bitmap, p, em, vm); break; case CLOSER_FLOOR: draw_closer_floor_base (bitmap, p, em, vm); break; case STUCK_FLOOR: draw_pressed_closer_floor_base (bitmap, p, em, vm); break; case HIDDEN_FLOOR: return; case PILLAR: draw_floor_base (bitmap, p, em, vm); break; case BIG_PILLAR_BOTTOM: draw_floor_base (bitmap, p, em, vm); break; case BIG_PILLAR_TOP: return; case WALL: if (con_caching) draw_wall_base (bitmap, p, em, vm); else draw_wall_base_cache (bitmap, p); break; case DOOR: draw_floor_base (bitmap, p, em, vm); break; case LEVEL_DOOR: draw_floor_base (bitmap, p, em, vm); break; case CHOPPER: draw_floor_base (bitmap, p, em, vm); break; case ARCH_BOTTOM: draw_floor_base (bitmap, p, em, vm); break; case ARCH_TOP_MID: return; case ARCH_TOP_SMALL: return; case ARCH_TOP_LEFT: return; case ARCH_TOP_RIGHT: return; case CARPET: draw_floor_base (bitmap, p, em, vm); break; case TCARPET: draw_door_pole_base (bitmap, p, em, vm); break; case MIRROR: draw_floor_base (bitmap, p, em, vm); break; default: assert (false); break; } }