home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Inne / Gry / Atomic_Tanks / Atomic-Tanks-5.1.exe / src / button.cpp < prev    next >
C/C++ Source or Header  |  2009-07-25  |  1KB  |  68 lines

  1. /*
  2. This file contains funcions for the BUTTON class. These
  3. are being moved out of the atanks.cc file.
  4. -- Jesse
  5. */
  6.  
  7. #include "button.h"
  8.  
  9. BUTTON::BUTTON(GLOBALDATA *global, ENVIRONMENT *env, int x1, int y1,
  10.                char *text1, BITMAP *bmp1, BITMAP *hover1, BITMAP *depressed1):_global(NULL),_env(NULL),text(NULL),
  11.                bmp(NULL),hover(NULL),depressed(NULL),click(NULL)
  12. {
  13.   _global = global;
  14.   _env = env;
  15.   location.x = x1;
  16.   location.y = y1;
  17.   text = text1;
  18.   click = (SAMPLE *)_global->sounds[8];
  19.   bmp = bmp1;
  20.   hover = hover1;
  21.   depressed = depressed1;
  22.   location.w = bmp->w;
  23.   location.h = bmp->h;
  24.   xl = location.x + bmp->w;
  25.   yl = location.y + bmp->h;
  26. }
  27.  
  28.  
  29.  
  30. void BUTTON::draw (BITMAP *dest)
  31. {
  32.   draw_sprite (dest, (BITMAP *)(isMouseOver())?((isPressed())?depressed:hover):bmp, location.x, location.y);
  33.   if (text)
  34.     textout_centre_ex (dest, font, text, location.x+75, location.y + 6, WHITE, -1);
  35.   _env->make_update (location.x, location.y, xl, yl);
  36. }
  37.  
  38.  
  39. int BUTTON::isMouseOver ()
  40. {
  41.   if ((mouse_x >= location.x) &&
  42.       (mouse_y >= location.y) &&
  43.       (mouse_x <= xl) &&
  44.       (mouse_y <= yl))
  45.     {
  46.       return (1);
  47.     }
  48.   else
  49.     {
  50.       return (0);
  51.     }
  52. }
  53.  
  54.  
  55. int BUTTON::isPressed()
  56. {
  57.   if ((mouse_b == 1) && isMouseOver ())
  58.     {
  59.       play_sample (click, 128, 128, 1000, 0);
  60.       return 1;
  61.     }
  62.   else
  63.     {
  64.       return 0;
  65.     }
  66. }
  67.  
  68.