/* Autor: Leandro Bernsmuller
Passa esgoto industrial */



#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 "esgindus.h"



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



/* Acao.
pDado1 - flags informando se colidiu com limites do cenario
         (ver cenfis.cpp, mDetectaColisaoComBordas)
pDado2 - nao usado
return TRUE - certo / FALSE - erro
**********************************************************/
BOOL CEsgotoIndustrial::mAtiva ( PTRVAL pDado1, PTRVAL pDado2 )
{
   // inicia aparicao do agente
   if ( m_fPassou == 0 )
      // retira energia
      CIntervir::mAtiva ( pDado1, 1 );

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

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

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

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

      // posicao dos dejetos
      float
         fXM = fDir - 28.5,
         fYM = fSup - ( fSup * (float) LIMSUP * 0.92 ) + 0.5,
         fZM = 0;
      
      // cria um dejeto
      float
         fTempo = (float) ( rand () % 5 ) + 90, // REL TEMPO PARA MORRER
         fDY =   (float) ( rand () % 100 ) / 800 + 0.35, //  0.35...0.475
         fDX =   (float) ( rand () % 100 ) / 800 - 0.0625, // -0.0625...+0.0625
         fVRot = (float) ( rand () % 10  ) / 20  - 0.25; // -0.25... 0.25

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

   // conta tempo
   m_fPassou += 1;

   return TRUE;
}
