/* Autor: Leandro Bernsmüller
Funcoes para controle da comunicacao com o tutor. */



#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>
#include <d3drmwin.h>
#include <mmsystem.h>
#include <dsound.h>
#include "defs.h"
#include "..\extra\ddutil.h"
#include "..\extra\ddmm.h"
#include "..\extra\arqs.h"
#include "..\cenario\gr.h"
#include "..\cenario\cenario.h"
#include "..\cenario\cenfis.h"
#include "..\som\sons.h"
#include "..\ia\acoes\acao.h"
#include "..\ia\dados\dados.h"
#include "..\ia\agente.h"
#include "..\ia\agencia.h"
#include "..\interf\janela.h"
#include "..\interf\jancen.h"
#include "..\interf\dlgconpa.h"
#include "..\interf\dlgconf.h"
#include "..\interf\dlgmodo.h"
#include "..\interf\dlgsobre.h"
#include "..\interf\dlgesper.h"
#include "..\interf\dlgconve.h"
#include "..\comunic\sockcomu.h"
#define IDIRECTPLAY2_OR_GREATER
#include <dplay.h>
#include "..\comunic\dplayinf.h"
#include "..\comunic\dpcomu.h"
#include "apl.h"



/* Informar quantidade de energia do ecometro
**********************************************************/
void CApl::mTutorEnviarInfoEcometro ( DWORD nPorcentagem )
{
   char
      szMsg [ 300 ];
   
   wsprintf ( szMsg, "[sense(ecometro(%d))]", nPorcentagem );
   
   EnviaMensagemSockets ( szMsg );
}



/* Informar tempo (interacao corrente)
**********************************************************/
void CApl::mTutorEnviarTempo ()
{
   char
      szMsg [ 300 ];
   
   wsprintf ( szMsg, "cur_time(%d)", m_dwNumInteracoes );
   
   EnviaMensagemSockets ( szMsg );
}



/* Informar acao do usuario
**********************************************************/
void CApl::mTutorEnviarAcaoUsuario ( char* szEvento )
{
   char
      szMsg [ 300 ];
   
   wsprintf ( szMsg, "happens(%s,%d)\nact(%s,%s)", szEvento,
                                                   m_dwNumInteracoes,
                                                   szEvento,
                                                   "(acao)" );
   
   EnviaMensagemSockets ( szMsg );
}



/* Testa se o programa recebeu alguma mensagem do tutor
pela conexao de socket.
**********************************************************/
void CApl::mTutorRecebeuMensagemSocket ()
{
   // tenta receber alguma mensagem
   
   #define TAMMSG 1000
   
   char
      szMsg [ TAMMSG ];  // onde por mensagem
   int
      nCod;            // se leu, tem tamanho da mensagem recebida
   
   if ( RecebeMensagemSockets ( szMsg, TAMMSG, nCod ) ) {

      // dbug
      //nCod = 11;
      //strcpy(szMsg,"0123456789");

      // prepara para por mensagem na janela de exibicao

      // aloca memoria
      void
         *pvMsg = GlobalAllocPtr ( GHND, nCod );

      // copia (tem que fazer isso pois eh desalocado apos exibir)
      memcpy ( pvMsg, szMsg, nCod );

      // se recebeu algo, escreve na janela de saida
      // (se estiver aberta)
      if ( hCHATWND )
         PostMessage ( hCHATWND, WM_USER_ADDSTRING, (WPARAM) 0, (LPARAM) pvMsg );
   }
}
