/* Autor: Leandro Bernsmuller
Esgoto residencial */



#include <windows.h>
#include <windowsx.h>
#include <ddraw.h>
#include <d3drmwin.h>
#include "..\..\..\princip\defs.h"
#include "..\..\..\cenario\cenario.h"
#include "..\..\..\cenario\cenfis.h"
#include "..\acao.h"
#include "..\..\dados\dados.h"
#include "..\..\dados\dadosfis.h"
#include "..\..\agente.h"
#include "interv.h"
#include "esgresid.h"



/* construtor
**********************************************************/
CEsgotoResidencial::CEsgotoResidencial ()
{
   m_dwTipoAcao = ID_ACAO_ESGOTO_RESIDENCIAL;
   m_fPassou = 0;
   m_dwBordaRemove = 0;
   m_fDirecaoX = 1;
   float
      *pafTaxas = afCONFIG_TAXAS_ESGOTO_RESIDENCIAL;
   for ( int ncT = 0; ncT < NUM_MODELOS + NUM_MODELOS_ESP; ncT ++ )
      m_afTaxasFome [ ncT ] = pafTaxas [ ncT ];
}



/* Acao.
pDado1 - nao usado
pDado2 - nao usado
return TRUE - certo / FALSE - erro
**********************************************************/
BOOL CEsgotoResidencial::mAtiva ( PTRVAL pDado1, PTRVAL pDado2 )
{
   // inicia aparicao do agente
   if ( m_fPassou == 0 )
      // retira energia
      CIntervir::mAtiva ( pDado1, 1 );

   // mata
   if ( m_fPassou == 100 )
      CIntervir::mAtiva ( pDado1, 0 );

   // dados do agente
   CDadosFisicos
      *poDados = (CDadosFisicos*) m_poMeuAgente->m_poDados;

   // cria os dejetos
   if ( m_fPassou >= 0 && m_fPassou <= 12 ) {

      // coordenadas limitrofes do cenario
      float
         fSup,
         fInf,
         fDir,
         fEsq;
      m_poMeuAgente->m_poCenario->mRetLimiteJanVis ( fSup, fInf, fDir, fEsq ); 

      // posicao dos dejetos
      float
         fXM = - 29,
         fYM = fSup - ( fSup * (float) LIMSUP * 0.92 ) + 0.5,
         fZM = 0;
      
      // cria um dejeto
      float
         fTempo = (float) ( rand () % 10 ) + 60, // REL TEMPO PARA MORRER
         fDY =   (float) ( rand () % 100 ) / 400 + 0.2, //  0.2... 0.45
         fDX =   (float) ( rand () % 100 ) / 400 - 0.125, // -0.125...+0.125
         fVRot = (float) ( rand () % 10  ) / 20  - 0.25; // -0.25... 0.25

      m_poMeuAgente->m_poCenario->mCriaObjetoTemporario ( 
         fTempo, 3, NDX_MODELO_DETRITO_ESGOTO_RESIDENCIAL, fXM, fYM, fZM, fDX, - fDY, 0, 0, 1, 0, fVRot );

      // cria outro dejeto
      fTempo = (float) ( rand () % 10 ) + 60, // REL TEMPO PARA MORRER
      fDY =   (float) ( rand () % 100 ) / 400 + 0.2, //  0.2... 0.45
      fDX =   (float) ( rand () % 100 ) / 400 - 0.125, // -0.125...+0.125
      fVRot = (float) ( rand () % 10  ) / 20  - 0.25; // -0.25... 0.25
      m_poMeuAgente->m_poCenario->mCriaObjetoTemporario ( 
         fTempo, 3, NDX_MODELO_DETRITO_ESGOTO_RESIDENCIAL, fXM - 16, fYM, fZM, fDX, - fDY, 0, 0, 1, 0, fVRot );
   }

   // conta tempo
   m_fPassou += 1;

   return TRUE;
}
