Пример #1
0
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 ();
  }
}
Пример #2
0
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);
  }
}