From afaf104b4086dbc5245f92a209cb68a088780ebb Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Fri, 21 Dec 2012 12:52:14 +0000 Subject: Added more constants into eEntityType; made them a compulsory parameter to the constructor, so that all entities have proper type. Also added a few utility functions to cEntity for distinguishing the types (IsPlayer(), IsPickup() etc.) git-svn-id: http://mc-server.googlecode.com/svn/trunk@1092 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/Mobs/AggressiveMonster.cpp | 62 ++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 21 deletions(-) (limited to 'source/Mobs/AggressiveMonster.cpp') diff --git a/source/Mobs/AggressiveMonster.cpp b/source/Mobs/AggressiveMonster.cpp index d178ce8f8..eabfb6669 100644 --- a/source/Mobs/AggressiveMonster.cpp +++ b/source/Mobs/AggressiveMonster.cpp @@ -8,26 +8,30 @@ #include "../MersenneTwister.h" + + + cAggressiveMonster::cAggressiveMonster() : m_ChaseTime(999999) { m_EMPersonality = AGGRESSIVE; } -cAggressiveMonster::~cAggressiveMonster() -{ -} -//What to do if in Chasing State -void cAggressiveMonster::InStateChasing(float a_Dt) { - cMonster::InStateChasing(a_Dt); + + + +// What to do if in Chasing State +void cAggressiveMonster::InStateChasing(float a_Dt) +{ + super::InStateChasing(a_Dt); m_ChaseTime += a_Dt; - if( m_Target ) + if (m_Target != NULL) { - if(m_Target->GetEntityType() == cEntity::eEntityType_Player) + if (m_Target->IsPlayer()) { cPlayer * Player = (cPlayer *) m_Target; - if(Player->GetGameMode() == 1) + if (Player->GetGameMode() == 1) { m_EMState = IDLE; return; @@ -36,11 +40,14 @@ void cAggressiveMonster::InStateChasing(float a_Dt) { Vector3f Pos = Vector3f( m_Pos ); Vector3f Their = Vector3f( m_Target->GetPosition() ); - if( (Their - Pos).Length() <= m_AttackRange) { + if ((Their - Pos).Length() <= m_AttackRange) + { cMonster::Attack(a_Dt); } - MoveToPosition( Their + Vector3f(0, 0.65f, 0) ); - } else if( m_ChaseTime > 5.f ) { + MoveToPosition(Their + Vector3f(0, 0.65f, 0)); + } + else if (m_ChaseTime > 5.f) + { m_ChaseTime = 0; m_EMState = IDLE; } @@ -48,31 +55,44 @@ void cAggressiveMonster::InStateChasing(float a_Dt) { -void cAggressiveMonster::EventSeePlayer(cEntity *a_Entity) + + +void cAggressiveMonster::EventSeePlayer(cEntity * a_Entity) { - cMonster::EventSeePlayer(a_Entity); + super::EventSeePlayer(a_Entity); m_EMState = CHASING; } + + + + void cAggressiveMonster::Tick(float a_Dt) { - cMonster::Tick(a_Dt); + super::Tick(a_Dt); m_SeePlayerInterval += a_Dt; - if(m_SeePlayerInterval > 1) + if (m_SeePlayerInterval > 1) { MTRand r1; - int rem = r1.randInt() % 3 + 1; //check most of the time but miss occasionally + int rem = r1.randInt() % 3 + 1; // Check most of the time but miss occasionally m_SeePlayerInterval = 0.0; - if(rem >= 2) + if (rem >= 2) { - if(m_EMState == CHASING){ + if (m_EMState == CHASING) + { CheckEventLostPlayer(); - } else { + } + else + { CheckEventSeePlayer(); } } } -} \ No newline at end of file +} + + + + -- cgit v1.2.3