

/*
        pokergadgets.cpp

        V1.00 - 201196  Kimmo Teräväinen
        -----   ------  ----------------
        Look pokergadgets.h

*/

#include <inline++/exec.h>
#include "pokergadgets.h"
#include "requester.h"

const cButton cPokerGadgets::PokerButtons[] = {
  cButton(GADGET_SHUFFLE,18,150,70,20,"_Shuffle"),
  cButton(GADGET_FINISH ,500,150,40,20,"_Done"),
  cButton(GADGET_BET    ,18,10,70,20,"_Bet"),

  cButton(0,0,0,0,0,NULL)
};

//**************************************************************************
TextAttr cGTGadgets::textattr = { (UBYTE*)"topaz.font",8,0,0 };

Gadget *cGTGadgets::AddButton(const cButton &button)
{
  NewGadget ng = { 0,0,0,0,NULL,&textattr,0,0,vinfo,NULL };

  ng.ng_GadgetID=button.id;
  ng.ng_LeftEdge  = button.left+wnd->BorderLeft;
  ng.ng_TopEdge   = button.top+wnd->BorderTop;
  ng.ng_Width     = button.width;
  ng.ng_Height    = button.height;
  ng.ng_Flags     = NG_HIGHLABEL | PLACETEXT_IN;
  ng.ng_GadgetText= (UBYTE*)button.text;
  return nxgad=CreateGadget(BUTTON_KIND,nxgad,&ng,GT_Underscore,'_',TAG_END);
}

void cGTGadgets::AddButtons(const cButton *buttons)
{
  for(int i=0; buttons[i].id ;i++) {
    if(!AddButton(buttons[i])) break;
  }
}

Gadget *cGTGadgets::AddStringGadget(const cStringGadget &gad)
{
  NewGadget ng = { 0,0,0,0,NULL,&textattr,0,0,vinfo,NULL };

  ng.ng_GadgetID=gad.id;
  ng.ng_LeftEdge  = gad.left+wnd->BorderLeft;
  ng.ng_TopEdge   = gad.top+wnd->BorderTop;
  ng.ng_Width     = gad.width;
  ng.ng_Height    = gad.height;
  ng.ng_GadgetText= (UBYTE*)gad.text;
  ng.ng_Flags     = NG_HIGHLABEL;
  return nxgad=CreateGadget(STRING_KIND,nxgad,&ng,
                    GTST_String,(ULONG)gad.string,
                    GTST_MaxChars, gad.buffersize,
                    GT_Underscore, '_', TAG_END);
}

void cGTGadgets::AddStringGadgets(const cStringGadget *gadgets)
{
  for(int i=0; gadgets[i].id ;i++) {
    if(!AddStringGadget(gadgets[i])) break;
  }
}

//**************************************************************************
int cPokerGadgets::IDCMP(const IntuiMessage *msg)
{
  switch(msg->Class) {
    case IDCMP_REFRESHWINDOW: GT_BeginRefresh(wnd);
                              GT_EndRefresh(wnd, TRUE);
                              return IDCMP_DONE;

    case IDCMP_VANILLAKEY:
         switch(msg->Code) {
           case 'd':
           case 'D':
           case 10:
           case 13:  ReplyMsg((Message*)msg);
                     game->GadgetFinish();
                     FlushMessages(wnd);
                     return IDCMP_REPLYED;

           case 's':
           case 'S': game->GadgetShuffle(); break;
           case 'b':
           case 'B':
           case 'c':
           case 'C': game->GadgetBet(); break;
           case '1': game->GadgetTurn(0); break;
           case '2': game->GadgetTurn(1); break;
           case '3': game->GadgetTurn(2); break;
           case '4': game->GadgetTurn(3); break;
           case '5': game->GadgetTurn(4); break;
         }
         break;
    case IDCMP_GADGETUP:
         Gadget *gad = (struct Gadget *)msg->IAddress;
         switch(gad->GadgetID) {
           case GADGET_SHUFFLE: game->GadgetShuffle();   break;
           case GADGET_FINISH:  ReplyMsg((Message*)msg);
                                game->GadgetFinish();
                                FlushMessages(wnd);
                                return IDCMP_REPLYED;
           case GADGET_BET:     ReplyMsg((Message*)msg);
                                game->GadgetBet();
                                FlushMessages(wnd);
                                return IDCMP_REPLYED;
         }
         return IDCMP_DONE;
  }
  return IDCMP_NOT_DONE;
}


//**************************************************************************
