home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / thx / demos / mfighter / build / card.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-26  |  2.1 KB  |  109 lines

  1. #include "game.h"
  2. #include "card.h"
  3.  
  4. const int CARD_Y = 180;
  5. const int TEXT_X1 = 15;
  6. const int TEXT_X2 = 87;
  7. const int NUM_X1 = 65;
  8. const int NUM_X2 = 137;
  9. const int Y1 = 14;
  10. const int Y2 = 35;
  11.  
  12. CUELIST(Card)
  13.   MESSAGE(GOT_PUNCHED,on_punch)
  14.   MESSAGE(GOT_KICKED,on_kick)
  15.   MESSAGE(ATTACK_BLOCKED,on_block)
  16.   MESSAGE(GAME_OVER,game_over)
  17. ENDCUELIST
  18.  
  19. Card::Card(Director* d,int s) : Performer(d)
  20.   {
  21.   side=s;
  22.   x=(side==LEFTGUY) ? 0 : 160;
  23.   card=(side==LEFTGUY) ? 1 : 2;
  24.   punchdisplay=
  25.     new NumericDisplay(my_director(),"font.gfx",0,2,x+NUM_X1,CARD_Y+Y1);
  26.   kickdisplay=
  27.     new NumericDisplay(my_director(),"font.gfx",0,2,x+NUM_X1,CARD_Y+Y2);
  28.   blockdisplay=
  29.     new NumericDisplay(my_director(),"font.gfx",0,2,x+NUM_X2,CARD_Y+Y1);
  30.   knockdisplay=
  31.     new NumericDisplay(my_director(),"font.gfx",0,2,x+NUM_X2,CARD_Y+Y2);
  32.   }
  33.  
  34. void Card::initialize()
  35.   {
  36.   load_gfxlib("cards.gfx");
  37.   load_gfxfont("font.gfx");
  38.   nknocks=0;
  39.   }
  40.  
  41. Card::~Card()
  42.   {
  43.   delete punchdisplay;
  44.   delete kickdisplay;
  45.   delete blockdisplay;
  46.   delete knockdisplay;
  47.   }
  48.  
  49. void Card::display()
  50.   {
  51.   npunches=0;
  52.   nkicks=0;
  53.   nblocks=0;
  54.   punchdisplay->set(0);
  55.   kickdisplay->set(0);
  56.   blockdisplay->set(0);
  57.   knockdisplay->set(nknocks);
  58.  
  59.   show_image(x,CARD_Y,card);
  60.   show_print(x+TEXT_X1,CARD_Y+Y1,"PUNCHES");
  61.   show_print(x+TEXT_X1,CARD_Y+Y2,"KICKS");
  62.   show_print(x+TEXT_X2,CARD_Y+Y1,"BLOCKS");
  63.   show_print(x+TEXT_X2,CARD_Y+Y2,"WINS");
  64.   }
  65.  
  66. void Card::update()
  67.   {
  68.   punchdisplay->update();
  69.   kickdisplay->update();
  70.   blockdisplay->update();
  71.   knockdisplay->update();
  72.   }
  73.  
  74. void Card::on_punch(int,int data)
  75.   {
  76.   if (side!=data)
  77.     {
  78.     punchdisplay->set(++npunches);
  79.     punchdisplay->update();
  80.     }
  81.   }
  82.  
  83. void Card::on_kick(int,int data)
  84.   {
  85.   if (side!=data)
  86.     {
  87.     kickdisplay->set(++nkicks);
  88.     kickdisplay->update();
  89.     }
  90.   }
  91.  
  92. void Card::on_block(int,int data)
  93.   {
  94.   if (side==data)
  95.     {
  96.     blockdisplay->set(++nblocks);
  97.     blockdisplay->update();
  98.     }
  99.   }
  100.  
  101. void Card::game_over(int,int data)
  102.   {
  103.   if (side==data)
  104.     {
  105.     knockdisplay->set(++nknocks);
  106.     knockdisplay->update();
  107.     }
  108.   }
  109.