Exemple #1
0
void SoftKeyboard::draw(float x, float y, int transp)
{
  float x0;
  int c = 0;
  unsigned int txt_alpha_mask = (255-2*transp)<<24;
  unsigned int bg_alpha_mask = (128-transp)<<24;

  draw_trans_quad(x, y, x+312.0, y+172.0,
		  bg_alpha_mask|0x8080ff, bg_alpha_mask|0x8080ff,
		  bg_alpha_mask|0x8080ff, bg_alpha_mask|0x8080ff);
  x0 = x += 4.0;
  y += 4.0;
  for (int i=0; i<SK_NUM_KEYS; i++) {
    float w = (i == 58? 164.0 : 24.0);
    unsigned int bg = (i == keySel? bg_alpha_mask|0xffff00 :
		       bg_alpha_mask|0xc0c0ff);
    draw_trans_quad(x, y, x+w, y+24.0, bg, bg, bg, bg);
    if (key_codes[i]<0 && (shiftState & ~key_codes[i]))
      labels[0][i].draw(x+2, y+5, txt_alpha_mask|0xffffff, 0.5);
    else if (key_codes[i]>8192 && (shiftState & Common::KBD_SHIFT))
      labels[1][i].draw(x+2, y+5, txt_alpha_mask|0x000000, 0.5);
    else
      labels[0][i].draw(x+2, y+5, txt_alpha_mask|0x000000, 0.5);
    x += w+4.0;
    if (++c == 11) {
      c = 0;
      x = x0;
      y += 28.0;
    }
  }
}
Exemple #2
0
int gameMenu(Game *games, int num_games)
{
  int top_game = 0, selector_pos = 0;
  int mousex = 0, mousey = 0;
  float y;

  if (!num_games)
    return -1;

  for (;;) {

    if (getCdState()>=6)
      return -1;

    ta_begin_frame();

    drawBackground();

    ta_commit_end();

    y = 40.0;
    for (int i=top_game, cnt=0; cnt<10 && i<num_games; i++, cnt++) {
      int pal = 48+(i&15);

      if (cnt == selector_pos)
	draw_trans_quad(100.0, y, 590.0, y+32.0,
			0x7000ff00, 0x7000ff00, 0x7000ff00, 0x7000ff00);

      games[i].icon.setPalette(pal);
      drawGameLabel(games[i], pal, 50.0, y, (cnt == selector_pos?
					     0xffff00 : 0xffffff));
      y += 40.0;
    }

    ta_commit_frame();

    byte shiftFlags;
    int event;

    int mask = getimask();
    setimask(15);
    event = handleInput(locked_get_pads(), mousex, mousey, shiftFlags);
    setimask(mask);

    if (event==-Common::EVENT_LBUTTONDOWN || event==Common::KEYCODE_RETURN || event==Common::KEYCODE_F5) {
      int selected_game = top_game + selector_pos;

      for (int fade=0; fade<=256; fade+=4) {

	ta_begin_frame();

	drawBackground();

	ta_commit_end();

	y = 40.0;

	if (fade < 256)
	  for (int i=top_game, cnt=0; cnt<10 && i<num_games;
	      i++, cnt++, y += 40.0)
	    if (cnt != selector_pos)
	      drawGameLabel(games[i], 48+(i&15), 50.0, y, 0xffffff, fade);

	y = (40.0/256.0 * (selector_pos + 1))*(256-fade) + 80.0/256.0*fade;
	float x = 50.0/256.0*(256-fade) + 160.0/256.0*fade;
	float scale = 1.0+9.0/256.0*fade;

	drawGameLabel(games[selected_game], 48+(selected_game&15), x, y,
		      0xffff00, 0, scale);

	ta_commit_frame();
      }
      return selected_game;
    }

    if (mousey>=16) {
      if (selector_pos + top_game + 1 < num_games)
	if (++selector_pos >= 10) {
	  --selector_pos;
	  ++top_game;
	}
      mousey -= 16;
    } else if (mousey<=-16) {
      if (selector_pos + top_game > 0)
	if (--selector_pos < 0) {
	  ++selector_pos;
	  --top_game;
	}
      mousey += 16;
    }
  }
}