Added CustomName to cMonster.
This commit is contained in:
parent
022f5f141d
commit
7c4cb9a385
|
@ -9,9 +9,9 @@
|
|||
|
||||
|
||||
|
||||
cPawn::cPawn(eEntityType a_EntityType, double a_Width, double a_Height):
|
||||
super(a_EntityType, 0, 0, 0, a_Width, a_Height),
|
||||
m_EntityEffects(tEffectMap())
|
||||
cPawn::cPawn(eEntityType a_EntityType, double a_Width, double a_Height) :
|
||||
super(a_EntityType, 0, 0, 0, a_Width, a_Height)
|
||||
, m_EntityEffects(tEffectMap())
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -111,3 +111,6 @@ void cPawn::ClearEntityEffects()
|
|||
RemoveEntityEffect(EffectType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -75,6 +75,8 @@ cMonster::cMonster(const AString & a_ConfigName, eType a_MobType, const AString
|
|||
, m_IdleInterval(0)
|
||||
, m_DestroyTimer(0)
|
||||
, m_MobType(a_MobType)
|
||||
, m_CustomName("")
|
||||
, m_CustomNameAlwaysVisible(false)
|
||||
, m_SoundHurt(a_SoundHurt)
|
||||
, m_SoundDeath(a_SoundDeath)
|
||||
, m_AttackRate(3)
|
||||
|
@ -679,6 +681,33 @@ void cMonster::InStateEscaping(float a_Dt)
|
|||
|
||||
|
||||
|
||||
void cMonster::SetCustomName(const AString & a_CustomName)
|
||||
{
|
||||
m_CustomName = a_CustomName;
|
||||
|
||||
// The maximal length is 64
|
||||
if (a_CustomName.length() > 64)
|
||||
{
|
||||
m_CustomName = a_CustomName.substr(0, 64);
|
||||
}
|
||||
|
||||
m_World->BroadcastEntityMetadata(*this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cMonster::SetCustomNameAlwaysVisible(bool a_CustomNameAlwaysVisible)
|
||||
{
|
||||
m_CustomNameAlwaysVisible = a_CustomNameAlwaysVisible;
|
||||
m_World->BroadcastEntityMetadata(*this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cMonster::GetMonsterConfig(const AString & a_Name)
|
||||
{
|
||||
cRoot::Get()->GetMonsterConfig()->AssignAttributes(this, a_Name);
|
||||
|
|
|
@ -144,7 +144,23 @@ public:
|
|||
virtual bool IsSitting (void) const { return false; }
|
||||
|
||||
// tolua_begin
|
||||
|
||||
|
||||
/** Returns true if the monster has a custom name. */
|
||||
bool HasCustomName(void) const { return !m_CustomName.empty(); }
|
||||
|
||||
/** Gets the custom name of the monster. If no custom name is set, the function returns a empty string. */
|
||||
const AString & GetCustomName(void) const { return m_CustomName; }
|
||||
|
||||
/** Sets the custom name of the monster. You see the name over the monster. */
|
||||
void SetCustomName(const AString & a_CustomName);
|
||||
|
||||
/** Is the custom name of this monster always visible? If not, you only see the name when you sight the mob. */
|
||||
bool IsCustomNameAlwaysVisible(void) const { return m_CustomNameAlwaysVisible; }
|
||||
|
||||
/** Sets the custom name visiblity of this monster.
|
||||
If false, you only see the name when you sight the mob. If true, you always see the custom name. */
|
||||
void SetCustomNameAlwaysVisible(bool a_CustomNameAlwaysVisible);
|
||||
|
||||
/// Translates MobType enum to a string, empty string if unknown
|
||||
static AString MobTypeToString(eType a_MobType);
|
||||
|
||||
|
@ -228,6 +244,8 @@ protected:
|
|||
float m_DestroyTimer;
|
||||
|
||||
eType m_MobType;
|
||||
AString m_CustomName;
|
||||
bool m_CustomNameAlwaysVisible;
|
||||
|
||||
AString m_SoundHurt;
|
||||
AString m_SoundDeath;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
// Protocol17x.cpp
|
||||
|
||||
/*
|
||||
|
@ -3021,6 +3022,15 @@ void cProtocol172::cPacketizer::WriteMobMetadata(const cMonster & a_Mob)
|
|||
break;
|
||||
}
|
||||
} // switch (a_Mob.GetType())
|
||||
|
||||
// Custom name:
|
||||
if (a_Mob.HasCustomName())
|
||||
{
|
||||
WriteByte(0x8a);
|
||||
WriteString(a_Mob.GetCustomName());
|
||||
WriteByte(0x0b);
|
||||
WriteByte(a_Mob.IsCustomNameAlwaysVisible() ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue