summaryrefslogtreecommitdiffstats
path: root/source/Mobs
diff options
context:
space:
mode:
Diffstat (limited to 'source/Mobs')
-rw-r--r--source/Mobs/AggressiveMonster.cpp62
-rw-r--r--source/Mobs/AggressiveMonster.h26
-rw-r--r--source/Mobs/Monster.cpp3
-rw-r--r--source/Mobs/PassiveAggressiveMonster.cpp4
-rw-r--r--source/Mobs/Zombiepigman.cpp2
5 files changed, 66 insertions, 31 deletions
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
+}
+
+
+
+
diff --git a/source/Mobs/AggressiveMonster.h b/source/Mobs/AggressiveMonster.h
index 7d741dc9a..f71da7b3c 100644
--- a/source/Mobs/AggressiveMonster.h
+++ b/source/Mobs/AggressiveMonster.h
@@ -1,17 +1,29 @@
+
#pragma once
#include "Monster.h"
-class cAggressiveMonster : public cMonster
+
+
+
+
+class cAggressiveMonster :
+ public cMonster
{
+ typedef cMonster super;
+
public:
- cAggressiveMonster();
- ~cAggressiveMonster();
+ cAggressiveMonster(void);
- virtual void Tick(float a_Dt);
- virtual void InStateChasing(float a_Dt);
+ virtual void Tick(float a_Dt) override;
+ virtual void InStateChasing(float a_Dt) override;
+
+ virtual void EventSeePlayer(cEntity *) override;
- virtual void EventSeePlayer(cEntity *);
protected:
float m_ChaseTime;
-};
+} ;
+
+
+
+
diff --git a/source/Mobs/Monster.cpp b/source/Mobs/Monster.cpp
index e79e6c00f..6c9b870e1 100644
--- a/source/Mobs/Monster.cpp
+++ b/source/Mobs/Monster.cpp
@@ -29,7 +29,8 @@
cMonster::cMonster(void)
- : m_Target(NULL)
+ : super(etMob)
+ , m_Target(NULL)
, m_bMovingToDestination(false)
, m_DestinationTime( 0 )
, m_Gravity( -9.81f)
diff --git a/source/Mobs/PassiveAggressiveMonster.cpp b/source/Mobs/PassiveAggressiveMonster.cpp
index 465c302a1..b5ef7aa97 100644
--- a/source/Mobs/PassiveAggressiveMonster.cpp
+++ b/source/Mobs/PassiveAggressiveMonster.cpp
@@ -20,7 +20,9 @@ cPassiveAggressiveMonster::cPassiveAggressiveMonster(void)
void cPassiveAggressiveMonster::DoTakeDamage(TakeDamageInfo & a_TDI)
{
- if ((m_Target != NULL) && (m_Target->GetEntityType() == cEntity::eEntityType_Player))
+ super::DoTakeDamage(a_TDI);
+
+ if ((m_Target != NULL) && (m_Target->IsPlayer()))
{
cPlayer * Player = (cPlayer *) m_Target;
if (Player->GetGameMode() != 1)
diff --git a/source/Mobs/Zombiepigman.cpp b/source/Mobs/Zombiepigman.cpp
index e917da979..37cf02925 100644
--- a/source/Mobs/Zombiepigman.cpp
+++ b/source/Mobs/Zombiepigman.cpp
@@ -48,7 +48,7 @@ void cZombiepigman::KilledBy(cPawn * a_Killer)
{
super::KilledBy(a_Killer);
- if ((a_Killer != NULL) && (a_Killer->GetEntityType() == eEntityType_Player))
+ if ((a_Killer != NULL) && (a_Killer->IsPlayer()))
{
// TODO: Anger all nearby zombie pigmen
// TODO: In vanilla, if one player angers ZPs, do they attack any nearby player, or only that one attacker?