/TGame/TCommon/Gene/Status/GEConfuse.cpp
http://awoe.googlecode.com/ · C++ · 147 lines · 114 code · 26 blank · 7 comment · 18 complexity · f3cf3634c6bdaff3dc20df958409275e MD5 · raw file
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // GEConfuse.cpp
- // 2010?1?20?
- // Copyright ?2007, 2010, 8DWorld, Inc. All rights reserved.
- //
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
- #include "stdafx.h"
- #include "GEConfuse.h"
- #include "Entity/EntityIf.h"
- #include "Combat/CombatSysIf.h"
- #include "Gene/GeneCreateDataIf.h"
- #include "GEFear.h"
- #include "GEDaze.h"
-
- static short ___style2stage2state_[3][3] =
- {
- {GEConfuse::St_Fear,GEConfuse::St_Daze,GEConfuse::St_Daze},
- {GEConfuse::St_Daze,GEConfuse::St_Daze,GEConfuse::St_Fear},
- {GEConfuse::St_Daze,GEConfuse::St_Fear,GEConfuse::St_Daze}
- };
-
- GEConfuse::GEConfuse()
- :m_nCurState(St_Null), m_pGene(NULL)
- {
- }
-
- GEConfuse::~GEConfuse()
- {
- if (m_pGene)
- {
- delete m_pGene;
- }
- }
-
- bool
- GEConfuse::onInit(IGeneCreateData& createData)
- {
- if (!__super::onInit(createData))
- {
- return false;
- }
-
- m_nTIStage = m_wpSData->getDataZ()/3;
- m_nTimeLineNextStage = m_wpSData->getDataZ();
-
- m_nStyle = createData.getDataX() % 3;
- return true;
- }
-
- bool
- GEConfuse::onAttach()
- {
- m_nCurStage = -1;
- while (m_nTTL<=m_nTimeLineNextStage)
- {
- m_nCurStage++;
- m_nTimeLineNextStage -= m_nTIStage;
- }
-
- if (m_nCurStage<0 || m_nCurStage>2)
- {
- m_nCurStage = 0;
- }
-
-
- setState(m_nStyle, m_nCurStage);
-
- return true;
- }
-
- bool
- GEConfuse::onDetach()
- {
- setState(-1, -1);
- return true;
- }
-
-
-
- bool
- GEConfuse::onUpdate(int nElapse)
- {
- __super::onUpdate(nElapse);
-
- if (m_nTTL<=0)
- {
- return false;
- }
-
- if (m_nTTL<=m_nTimeLineNextStage)
- {
- m_nCurStage++;
- if (m_nCurStage>2)
- {
- m_nCurStage = 2;
- }
-
- setState(m_nStyle, m_nCurStage);
- }
-
- return true;
- }
-
- void
- GEConfuse::setState(short nStyle, short nStage)
- {
- int nNewState = St_Null;
- if (nStyle>=0 && nStyle<3 &&
- nStage>=0 && nStage<3)
- {
- nNewState = ___style2stage2state_[nStyle][nStage];
- }
- if (m_nCurState!=nNewState)
- {
- m_nCurState = nNewState;
-
- if (m_pGene)
- {
- if (m_pGene)
- {
- m_pGene->onDetach();
- m_pGene->setHost(NULL);
- delete m_pGene;
- m_pGene = NULL;
- }
-
- if (m_nCurState==St_Daze)
- {
- m_pGene = new GEDaze;
- }
- else if (m_nCurState==St_Fear)
- {
- m_pGene = new GEFear;
- }
-
- if (m_pGene)
- {
- m_pGene->setHost(m_wpHost);
- m_pGene->onAttach();
- }
- }
- }
- }