/* Autor: Leandro Bernsmuller
Gerencia o dialogo que pergunta qual serah o personagem para o colega
(cliente) */



#include <windows.h>
#include <windowsx.h>
#include "..\princip\defs.h"
#include "dlgconco.h"



// faz comunicacao entre caixa de dialogo e programa:
DWORD
   // qual personagem foi escolhido pelo usuario
   dwPERSONAGEMSEL,
   // possiveis personagens (nao escolhidos pelo servidor)
   dwP1,
   dwP2,
   dwP3;



/* Retorna o string correspondente ao personagem
dwPersonagem - o personagem
szStr - nome do personagem (deve ter prealocado espaco suficiente
para os nomes)
**********************************************************/
void RetStringPersonagem ( DWORD dwPersonagem, char* szStr )
{
   switch ( dwPersonagem ) {

      case ID_PERS_MAE_NATUREZA:
         strcpy ( szStr, STR_PERS_MAE_NATUREZA );
         break;

      case ID_PERS_PESCADOR:
         strcpy ( szStr, STR_PERS_PESCADOR );
         break;

      case ID_PERS_PREFEITO:
         strcpy ( szStr, STR_PERS_PREFEITO );
         break;

      case ID_PERS_TURISTA:
         strcpy ( szStr, STR_PERS_TURISTA );
         break;
   }
}



/* Usado para tratar mensagens na caixa de dialogo
**********************************************************/
BOOL FAR PASCAL ProcDlgPersCliente ( HWND hWnd, UINT uMsg, 
                                     WPARAM wParam, LPARAM lParam )
{
  switch ( uMsg ) {

    // botao clicado
    case WM_COMMAND:
      {

         // qual botao
         switch ( LOWORD ( wParam ) ) {

            case IDCANCEL:
               ::EndDialog ( hWnd, FALSE );
               break;

            case IDC_BUTTON1:
               dwPERSONAGEMSEL = dwP1;
               ::EndDialog ( hWnd, TRUE );
               break;

            case IDC_BUTTON2:
               dwPERSONAGEMSEL = dwP2;
               ::EndDialog ( hWnd, TRUE );
               break;

            case IDC_BUTTON3:
               dwPERSONAGEMSEL = dwP3;
               ::EndDialog ( hWnd, TRUE );
               break;
         }
      }
      break;

    case WM_INITDIALOG:
      {
         
         // define os strings dos botoes
         char
            szStr [ 1000 ];
         RetStringPersonagem ( dwP1, szStr );
         SetDlgItemText ( hWnd, IDC_BUTTON1, szStr );
         RetStringPersonagem ( dwP2, szStr );
         SetDlgItemText ( hWnd, IDC_BUTTON2, szStr );
         RetStringPersonagem ( dwP3, szStr );
         SetDlgItemText ( hWnd, IDC_BUTTON3, szStr );

         return TRUE;
      }
      break;
  }

  return FALSE;
}
         


/* Faz o dialogo
dwPersonagemServidor - qual o personagem do servidor (cliente nao pode ser)
dwPersonagem - qual o personagem atual, eh alterado conforme
o resultado do dialogo
**********************************************************/
BOOL FazDialogo_ConfiguraPartidaColega ( HWND hWnd, DWORD dwPersonagemServidor, DWORD& dwPersonagem )
{
   // define possiveis personagens para colega conforme os que sobraram
   switch ( dwPersonagemServidor ) {

      case ID_PERS_MAE_NATUREZA:
         dwP1 = ID_PERS_PESCADOR;
         dwP2 = ID_PERS_PREFEITO; 
         dwP3 = ID_PERS_TURISTA;
         break;

      case ID_PERS_PESCADOR:
         dwP1 = ID_PERS_MAE_NATUREZA;
         dwP2 = ID_PERS_PREFEITO; 
         dwP3 = ID_PERS_TURISTA;
         break;

      case ID_PERS_PREFEITO:
         dwP1 = ID_PERS_PESCADOR;
         dwP2 = ID_PERS_MAE_NATUREZA; 
         dwP3 = ID_PERS_TURISTA;
         break;

      case ID_PERS_TURISTA:
         dwP1 = ID_PERS_PESCADOR;
         dwP2 = ID_PERS_PREFEITO; 
         dwP3 = ID_PERS_MAE_NATUREZA;
         break;
   }

   dwPERSONAGEMSEL = dwP1;

   if ( ::DialogBox ( (HINSTANCE) GetWindowLong ( hWnd, GWL_HINSTANCE ),
                       MAKEINTRESOURCE ( IDD_DIALOG6 ), hWnd,
                      (DLGPROC) ProcDlgPersCliente ) ) {

      dwPersonagem = dwPERSONAGEMSEL;
      return TRUE;
   }

   return FALSE;
}
