#ifndef _GAME
#define _GAME

#include "hand.h"
#include "deck.h"

#define RESULTSX 5
#define RESULTSY PLAYER_DESC + 25


extern int box_status[10], debug;

class Game
{
   private:
      int   number_of_hands;
      int   number_won;
      int   number_lost;
      int   number_tied;
      int   current_win_streak;
      int   current_lose_streak;
      int   current_tie_streak;
      int   largest_win_streak;
      int   largest_lose_streak;
      int   largest_tie_streak;
      int   number_highlighted;

      void  ParseSeven(Hand *);
      void  ParseSuits(Hand *seven);
      void  ParseValues(Hand *seven);
      void  BuildFourOK(Hand *, Hand *, Hand *);
      void  BuildFlush(Hand *, Hand *, Hand *);
      void  BuildStraight(Hand *, Hand *, Hand *);
		void  BuildTwoThreeOKS(Hand *, Hand *, Hand *);
      void  BuildThreeOK(Hand *, Hand *, Hand *);
      void  BuildThreePairs(Hand *, Hand *, Hand *);
      void  BuildTwoPairs(Hand *, Hand *, Hand *);
      void  BuildOnePair(Hand *, Hand *, Hand *);
      void  BuildPaigow(Hand *, Hand *, Hand *);

   public:

		Game();

      void  SetNumberHands(int ihands) { number_of_hands = ihands; }
      void  SetNumberWon(int iwon) { number_won = iwon; }
      void  SetNumberLost(int ilost) { number_lost = ilost; }
      void  SetNumberTied(int itied) { number_tied = itied; }
      void  SetCurrentWinStreak(int icurrwinstreak) { current_win_streak = icurrwinstreak; }
      void  SetCurrentLoseStreak(int icurrlosestreak) { current_lose_streak = icurrlosestreak; }
      void  SetCurrentTieStreak(int icurrtiestreak) { current_tie_streak = icurrtiestreak; }
      void  SetLargestWinStreak(int ilargestwinstreak) { largest_win_streak = ilargestwinstreak; }
      void  SetLargestLoseStreak(int ilargestlosestreak) { largest_lose_streak = ilargestlosestreak; }
      void  SetLargestTieStreak(int ilargesttiestreak) { largest_tie_streak = ilargesttiestreak; }
      void  SetNumberHighlighted(int i) { number_highlighted = i; }

      int  GetNumberHands(void) { return (number_of_hands); }
      int  GetNumberWon(void) { return (number_won); }
      int  GetNumberLost(void) { return(number_lost); }
      int  GetNumberTied(void) { return(number_tied); }
      int  GetCurrentWinStreak(void) { return(current_win_streak); }
      int  GetCurrentLoseStreak(void) { return(current_lose_streak); }
      int  GetCurrentTieStreak(void) { return(current_tie_streak); }
      int  GetLargestWinStreak(void) { return(largest_win_streak); }
      int  GetLargestLoseStreak(void) { return(largest_lose_streak); }
      int  GetLargestTieStreak(void) { return(largest_tie_streak); }
      int  GetNumberHighlighted(void) { return(number_highlighted); }

		void Swap(int *, int *);
      void AutoBuildHands(Hand *, Hand *, Hand *);
		void  BuildPlayerHands(Hand *, Hand *, Hand *);
		void  Results(HDC, int, Hand *, Hand *, Hand *, Hand *);
		void  ClearPlayingField(HDC);
		int  DealDealer(HDC, int);
      void  ClearHighlights(HDC);
      void  HighLiteCard(HDC, short, short);
      void  ShowHighlites(HDC);
      void  PrintStats(HDC);

};

extern struct boxes mybox[];

#endif
