diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index 0ec8a7cff..0c29a5fc8 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -726,10 +726,6 @@ RelativePath="..\source\Mobs\AggressiveMonster.h" > - - @@ -814,10 +810,6 @@ RelativePath="..\source\Mobs\Mooshroom.h" > - - @@ -854,10 +846,6 @@ RelativePath="..\source\Mobs\Sheep.h" > - - @@ -910,10 +898,6 @@ RelativePath="..\source\Mobs\Witch.h" > - - diff --git a/source/Mobs/AggressiveMonster.cpp b/source/Mobs/AggressiveMonster.cpp index eabfb6669..f2e53ce00 100644 --- a/source/Mobs/AggressiveMonster.cpp +++ b/source/Mobs/AggressiveMonster.cpp @@ -11,8 +11,9 @@ -cAggressiveMonster::cAggressiveMonster() - : m_ChaseTime(999999) +cAggressiveMonster::cAggressiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath) : + super(a_ConfigName, a_ProtocolMobType, a_SoundHurt, a_SoundDeath), + m_ChaseTime(999999) { m_EMPersonality = AGGRESSIVE; } diff --git a/source/Mobs/AggressiveMonster.h b/source/Mobs/AggressiveMonster.h index f71da7b3c..f364d535d 100644 --- a/source/Mobs/AggressiveMonster.h +++ b/source/Mobs/AggressiveMonster.h @@ -13,7 +13,7 @@ class cAggressiveMonster : typedef cMonster super; public: - cAggressiveMonster(void); + cAggressiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath); virtual void Tick(float a_Dt) override; virtual void InStateChasing(float a_Dt) override; diff --git a/source/Mobs/Bat.cpp b/source/Mobs/Bat.cpp deleted file mode 100644 index 952b0d899..000000000 --- a/source/Mobs/Bat.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "Bat.h" - - - - - -cBat::cBat(void) -{ - m_MobType = 65; - m_SoundHurt = "mob.bat.hurt"; - m_SoundDeath = "mob.bat.death"; - GetMonsterConfig("Bat"); -} - - - - diff --git a/source/Mobs/Bat.h b/source/Mobs/Bat.h index 91279889f..35c0f99a6 100644 --- a/source/Mobs/Bat.h +++ b/source/Mobs/Bat.h @@ -13,7 +13,10 @@ class cBat : typedef cPassiveMonster super; public: - cBat(void); + cBat(void) : + super("Bat", 65, "mob.bat.hurt", "mob.bat.death") + { + } CLASS_PROTODEF(cBat); } ; diff --git a/source/Mobs/Blaze.cpp b/source/Mobs/Blaze.cpp index bab0ea13a..e6e2d7ec2 100644 --- a/source/Mobs/Blaze.cpp +++ b/source/Mobs/Blaze.cpp @@ -7,12 +7,9 @@ -cBlaze::cBlaze(void) +cBlaze::cBlaze(void) : + super("Blaze", 61, "mob.blaze.hit", "mob.blaze.death") { - m_MobType = 61; - m_SoundHurt = "mob.blaze.hit"; - m_SoundDeath = "mob.blaze.death"; - GetMonsterConfig("Blaze"); } diff --git a/source/Mobs/Cavespider.cpp b/source/Mobs/Cavespider.cpp index b9d4829bc..b0dcd2eae 100644 --- a/source/Mobs/Cavespider.cpp +++ b/source/Mobs/Cavespider.cpp @@ -7,12 +7,9 @@ -cCavespider::cCavespider(void) +cCavespider::cCavespider(void) : + super("Cavespider", 59, "mob.spider.say", "mob.spider.death") { - m_MobType = 59; - m_SoundHurt = "mob.spider.say"; - m_SoundDeath = "mob.spider.death"; - GetMonsterConfig("Cavespider"); } diff --git a/source/Mobs/Chicken.cpp b/source/Mobs/Chicken.cpp index 55bf73584..e506bb7a8 100644 --- a/source/Mobs/Chicken.cpp +++ b/source/Mobs/Chicken.cpp @@ -13,12 +13,9 @@ -cChicken::cChicken(void) +cChicken::cChicken(void) : + super("Chicken", 93, "mob.chicken.hurt", "mob.chicken.hurt") { - m_MobType = 93; - m_SoundHurt = "mob.chicken.hurt"; - m_SoundDeath = "mob.chicken.hurt"; - GetMonsterConfig("Chicken"); } diff --git a/source/Mobs/Cow.cpp b/source/Mobs/Cow.cpp index b0dab1e0f..31a431af4 100644 --- a/source/Mobs/Cow.cpp +++ b/source/Mobs/Cow.cpp @@ -13,12 +13,9 @@ -cCow::cCow(void) +cCow::cCow(void) : + super("Cow", 92, "mob.cow.hurt", "mob.cow.hurt") { - m_MobType = 92; - m_SoundHurt = "mob.cow.hurt"; - m_SoundDeath = "mob.cow.hurt"; - GetMonsterConfig("Cow"); } diff --git a/source/Mobs/Creeper.cpp b/source/Mobs/Creeper.cpp index b3133d7c9..44b5e76cd 100644 --- a/source/Mobs/Creeper.cpp +++ b/source/Mobs/Creeper.cpp @@ -7,12 +7,9 @@ -cCreeper::cCreeper(void) +cCreeper::cCreeper(void) : + super("Creeper", 50, "mob.creeper.say", "mob.creeper.say") { - m_MobType = 50; - m_SoundHurt = "mob.creeper.say"; - m_SoundDeath = "mob.creeper.say"; - GetMonsterConfig("Creeper"); } diff --git a/source/Mobs/Enderman.cpp b/source/Mobs/Enderman.cpp index 2814ab71b..33aecc61d 100644 --- a/source/Mobs/Enderman.cpp +++ b/source/Mobs/Enderman.cpp @@ -7,12 +7,9 @@ -cEnderman::cEnderman(void) +cEnderman::cEnderman(void) : + super("Enderman", 58, "mob.endermen.hit", "mob.endermen.death") { - m_MobType = 58; - m_SoundHurt = "mob.endermen.hit"; - m_SoundDeath = "mob.endermen.death"; - GetMonsterConfig("Enderman"); } diff --git a/source/Mobs/Ghast.cpp b/source/Mobs/Ghast.cpp index 38f6af582..1d0e074b8 100644 --- a/source/Mobs/Ghast.cpp +++ b/source/Mobs/Ghast.cpp @@ -7,12 +7,9 @@ -cGhast::cGhast(void) +cGhast::cGhast(void) : + super("Ghast", 56, "mob.ghast.scream", "mob.ghast.death") { - m_MobType = 56; - m_SoundHurt = "mob.ghast.scream"; - m_SoundDeath = "mob.ghast.death"; - GetMonsterConfig("Ghast"); } diff --git a/source/Mobs/Magmacube.cpp b/source/Mobs/Magmacube.cpp index f514d6177..fb9228c08 100644 --- a/source/Mobs/Magmacube.cpp +++ b/source/Mobs/Magmacube.cpp @@ -7,12 +7,9 @@ -cMagmacube::cMagmacube() +cMagmacube::cMagmacube(void) : + super("Magmacube", 62, "mob.magmacube.big", "mob.magmacube.big") { - m_MobType = 62; - m_SoundHurt = "mob.magmacube.big"; - m_SoundDeath = "mob.magmacube.big"; - GetMonsterConfig("Magmacube"); } diff --git a/source/Mobs/Monster.cpp b/source/Mobs/Monster.cpp index 04989caac..49f11ebfd 100644 --- a/source/Mobs/Monster.cpp +++ b/source/Mobs/Monster.cpp @@ -16,19 +16,13 @@ #include "../Vector3d.h" #include "../Tracer.h" -#include "../../iniFile/iniFile.h" - -/* -#ifndef _WIN32 - #include -#endif -*/ +// #include "../../iniFile/iniFile.h" -cMonster::cMonster(void) +cMonster::cMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath) : super(etMob) , m_Target(NULL) , m_bMovingToDestination(false) @@ -37,9 +31,9 @@ cMonster::cMonster(void) , m_bOnGround( false ) , m_DestroyTimer( 0 ) , m_Jump(0) - , m_MobType( 0 ) - , m_SoundHurt( "" ) - , m_SoundDeath( "" ) + , m_MobType(a_ProtocolMobType) + , m_SoundHurt(a_SoundHurt) + , m_SoundDeath(a_SoundDeath) , m_EMState(IDLE) , m_SightDistance(25) , m_SeePlayerInterval (0) @@ -50,11 +44,10 @@ cMonster::cMonster(void) , m_AttackRate(3) , idle_interval(0) { - LOGD("cMonster::cMonster()"); - LOGD("In state: %s", GetState()); - - m_bBurnable = true; - m_MetaData = NORMAL; + if (!a_ConfigName.empty()) + { + GetMonsterConfig(a_ConfigName); + } } @@ -520,9 +513,9 @@ cPlayer * cMonster::FindClosestPlayer(void) -void cMonster::GetMonsterConfig(const char* pm_name) +void cMonster::GetMonsterConfig(const AString & a_Name) { - cRoot::Get()->GetMonsterConfig()->AssignAttributes(this, pm_name); + cRoot::Get()->GetMonsterConfig()->AssignAttributes(this, a_Name); } diff --git a/source/Mobs/Monster.h b/source/Mobs/Monster.h index 2c26045ff..066f17495 100644 --- a/source/Mobs/Monster.h +++ b/source/Mobs/Monster.h @@ -25,7 +25,12 @@ class cMonster : public: // tolua_end - cMonster(void); + /** Creates the mob object. + * If a_ConfigName is not empty, the configuration is loaded using GetMonsterConfig() + * a_ProtocolMobType is the ID of the mob used in the protocol ( http://wiki.vg/Entities#Mobs , 2012_12_22) + * a_SoundHurt and a_SoundDeath are assigned into m_SoundHurt and m_SoundDeath, respectively + */ + cMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath); CLASS_PROTODEF(cMonster); @@ -52,7 +57,10 @@ public: virtual void EventSeePlayer(cEntity *); float m_SightDistance; virtual cPlayer * FindClosestPlayer(); // non static is easier. also virtual so other mobs can implement their own searching algo - virtual void GetMonsterConfig(const char* pm_name); + + /// Reads the monster configuration for the specified monster name and assigns it to this object. + void GetMonsterConfig(const AString & a_Name); + virtual void EventLosePlayer(); virtual void CheckEventLostPlayer(); diff --git a/source/Mobs/Mooshroom.cpp b/source/Mobs/Mooshroom.cpp index 148b0c068..1ef1d600d 100644 --- a/source/Mobs/Mooshroom.cpp +++ b/source/Mobs/Mooshroom.cpp @@ -13,12 +13,9 @@ -cMooshroom::cMooshroom(void) +cMooshroom::cMooshroom(void) : + super("Mooshroom", 96, "mob.cow.hurt", "mob.cow.hurt") { - m_MobType = 96; - m_SoundHurt = "mob.cow.hurt"; - m_SoundDeath = "mob.cow.hurt"; - GetMonsterConfig("Mooshroom"); } diff --git a/source/Mobs/Ocelot.cpp b/source/Mobs/Ocelot.cpp deleted file mode 100644 index df2eb5c04..000000000 --- a/source/Mobs/Ocelot.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "Ocelot.h" - - - - - -cOcelot::cOcelot() -{ - m_MobType = 98; - m_SoundHurt = "mob.cat.hitt"; - m_SoundDeath = "mob.cat.hitt"; - GetMonsterConfig("Ocelot"); -} - - - - diff --git a/source/Mobs/Ocelot.h b/source/Mobs/Ocelot.h index acda6a1e6..76ee6815e 100644 --- a/source/Mobs/Ocelot.h +++ b/source/Mobs/Ocelot.h @@ -13,7 +13,10 @@ class cOcelot : typedef cPassiveMonster super; public: - cOcelot(); + cOcelot(void) : + super("Ocelot", 98, "mob.cat.hitt", "mob.cat.hitt") + { + } CLASS_PROTODEF(cOcelot); } ; diff --git a/source/Mobs/PassiveAggressiveMonster.cpp b/source/Mobs/PassiveAggressiveMonster.cpp index b5ef7aa97..41258c788 100644 --- a/source/Mobs/PassiveAggressiveMonster.cpp +++ b/source/Mobs/PassiveAggressiveMonster.cpp @@ -9,7 +9,8 @@ -cPassiveAggressiveMonster::cPassiveAggressiveMonster(void) +cPassiveAggressiveMonster::cPassiveAggressiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath) : + super(a_ConfigName, a_ProtocolMobType, a_SoundHurt, a_SoundDeath) { m_EMPersonality = PASSIVE; } diff --git a/source/Mobs/PassiveAggressiveMonster.h b/source/Mobs/PassiveAggressiveMonster.h index e6e50677d..abb6a7abd 100644 --- a/source/Mobs/PassiveAggressiveMonster.h +++ b/source/Mobs/PassiveAggressiveMonster.h @@ -13,7 +13,7 @@ class cPassiveAggressiveMonster : typedef cAggressiveMonster super; public: - cPassiveAggressiveMonster(void); + cPassiveAggressiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath); virtual void DoTakeDamage(TakeDamageInfo & a_TDI) override; } ; diff --git a/source/Mobs/PassiveMonster.cpp b/source/Mobs/PassiveMonster.cpp index 6224b284a..b11f7305d 100644 --- a/source/Mobs/PassiveMonster.cpp +++ b/source/Mobs/PassiveMonster.cpp @@ -8,7 +8,8 @@ -cPassiveMonster::cPassiveMonster(void) +cPassiveMonster::cPassiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath) : + super(a_ConfigName, a_ProtocolMobType, a_SoundHurt, a_SoundDeath) { m_EMPersonality = PASSIVE; } @@ -32,7 +33,7 @@ void cPassiveMonster::DoTakeDamage(TakeDamageInfo & a_TDI) void cPassiveMonster::Tick(float a_Dt) { - cMonster::Tick(a_Dt); + super::Tick(a_Dt); m_SeePlayerInterval += a_Dt; diff --git a/source/Mobs/PassiveMonster.h b/source/Mobs/PassiveMonster.h index 14a4e9d24..d31510891 100644 --- a/source/Mobs/PassiveMonster.h +++ b/source/Mobs/PassiveMonster.h @@ -13,7 +13,7 @@ class cPassiveMonster : typedef cMonster super; public: - cPassiveMonster(void); + cPassiveMonster(const AString & a_ConfigName, char a_ProtocolMobType, const AString & a_SoundHurt, const AString & a_SoundDeath); virtual void Tick(float a_Dt) override; diff --git a/source/Mobs/Pig.cpp b/source/Mobs/Pig.cpp index c75d0c0bf..15be0001f 100644 --- a/source/Mobs/Pig.cpp +++ b/source/Mobs/Pig.cpp @@ -7,12 +7,9 @@ -cPig::cPig(void) +cPig::cPig(void) : + super("Pig", 90, "mob.pig.say", "mob.pig.death") { - m_MobType = 90; - m_SoundHurt = "mob.pig.say"; - m_SoundDeath = "mob.pig.death"; - GetMonsterConfig("Pig"); } diff --git a/source/Mobs/Sheep.cpp b/source/Mobs/Sheep.cpp index c4cdba1cf..c860e25d9 100644 --- a/source/Mobs/Sheep.cpp +++ b/source/Mobs/Sheep.cpp @@ -9,13 +9,10 @@ cSheep::cSheep(void) : + super("Sheep", 91, "mob.sheep.say", "mob.sheep.say"), m_IsSheared(false), m_WoolColor(E_META_WOOL_WHITE) { - m_MobType = 91; - m_SoundHurt = "mob.sheep.say"; - m_SoundDeath = "mob.sheep.say"; - GetMonsterConfig("Sheep"); } diff --git a/source/Mobs/Silverfish.cpp b/source/Mobs/Silverfish.cpp deleted file mode 100644 index d62b7cc14..000000000 --- a/source/Mobs/Silverfish.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "Silverfish.h" - - - - - -cSilverfish::cSilverfish(void) -{ - m_MobType = 60; - m_SoundHurt = "mob.silverfish.hit"; - m_SoundDeath = "mob.silverfish.kill"; - GetMonsterConfig("Silverfish"); -} - - - - diff --git a/source/Mobs/Silverfish.h b/source/Mobs/Silverfish.h index 4e4fbd11c..24a9cf38b 100644 --- a/source/Mobs/Silverfish.h +++ b/source/Mobs/Silverfish.h @@ -13,7 +13,10 @@ class cSilverfish : typedef cAggressiveMonster super; public: - cSilverfish(void); + cSilverfish(void) : + super("Silverfish", 60, "mob.silverfish.hit", "mob.silverfish.kill") + { + } CLASS_PROTODEF(cSilverfish); } ; diff --git a/source/Mobs/Skeleton.cpp b/source/Mobs/Skeleton.cpp index 279aa0fe3..76a7b6beb 100644 --- a/source/Mobs/Skeleton.cpp +++ b/source/Mobs/Skeleton.cpp @@ -7,12 +7,9 @@ -cSkeleton::cSkeleton(void) +cSkeleton::cSkeleton(void) : + super("Skeleton", 51, "mob.skeleton.hurt", "mob.skeleton.death") { - m_MobType = 51; - m_SoundHurt = "mob.skeleton.hurt"; - m_SoundDeath = "mob.skeleton.death"; - GetMonsterConfig("Skeleton"); } diff --git a/source/Mobs/Slime.cpp b/source/Mobs/Slime.cpp index c95915215..ee7093b73 100644 --- a/source/Mobs/Slime.cpp +++ b/source/Mobs/Slime.cpp @@ -9,12 +9,9 @@ -cSlime::cSlime(void) +cSlime::cSlime(void) : + super("Slime", 55, "mob.slime.attack", "mob.slime.attack") { - m_MobType = 55; - m_SoundHurt = "mob.slime.attack"; - m_SoundDeath = "mob.slime.attack"; - GetMonsterConfig("Slime"); } diff --git a/source/Mobs/Spider.cpp b/source/Mobs/Spider.cpp index 608858a5e..4e671e7ab 100644 --- a/source/Mobs/Spider.cpp +++ b/source/Mobs/Spider.cpp @@ -7,12 +7,9 @@ -cSpider::cSpider() +cSpider::cSpider(void) : + super("Spider", 52, "mob.spider.say", "mob.spider.death") { - m_MobType = 52; - m_SoundHurt = "mob.spider.say"; - m_SoundDeath = "mob.spider.death"; - GetMonsterConfig("Spider"); } diff --git a/source/Mobs/Squid.cpp b/source/Mobs/Squid.cpp index b3df8711a..e300deef0 100644 --- a/source/Mobs/Squid.cpp +++ b/source/Mobs/Squid.cpp @@ -8,10 +8,9 @@ -cSquid::cSquid() +cSquid::cSquid(void) : + super("Squid", 94, "", "") { - m_MobType = 94; - GetMonsterConfig("Squid"); } diff --git a/source/Mobs/Villager.cpp b/source/Mobs/Villager.cpp index c97bb714f..1bc5fb86b 100644 --- a/source/Mobs/Villager.cpp +++ b/source/Mobs/Villager.cpp @@ -7,10 +7,9 @@ -cVillager::cVillager() +cVillager::cVillager(void) : + super("Villager", 120, "", "") { - m_MobType = 120; - GetMonsterConfig("Villager"); } diff --git a/source/Mobs/Witch.cpp b/source/Mobs/Witch.cpp index 2bbe5b94b..ee77d066b 100644 --- a/source/Mobs/Witch.cpp +++ b/source/Mobs/Witch.cpp @@ -7,10 +7,9 @@ -cWitch::cWitch() +cWitch::cWitch(void) : + super("Witch", 66, "", "") { - m_MobType = 66; - GetMonsterConfig("Witch"); } diff --git a/source/Mobs/Wolf.cpp b/source/Mobs/Wolf.cpp deleted file mode 100644 index 52bfb46cb..000000000 --- a/source/Mobs/Wolf.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules - -#include "Wolf.h" - - - - - -cWolf::cWolf(void) -{ - m_MobType = 95; - m_SoundHurt = "mob.wolf.hurt"; - m_SoundDeath = "mob.wolf.death"; - GetMonsterConfig("Wolf"); -} - - - - diff --git a/source/Mobs/Wolf.h b/source/Mobs/Wolf.h index 5dd7065a7..7247f823c 100644 --- a/source/Mobs/Wolf.h +++ b/source/Mobs/Wolf.h @@ -13,7 +13,10 @@ class cWolf : typedef cPassiveAggressiveMonster super; public: - cWolf(void); + cWolf(void) : + super("Wolf", 95, "mob.wolf.hurt", "mob.wolf.death") + { + } CLASS_PROTODEF(cWolf); } ; diff --git a/source/Mobs/Zombie.cpp b/source/Mobs/Zombie.cpp index c3e331226..bf630929a 100644 --- a/source/Mobs/Zombie.cpp +++ b/source/Mobs/Zombie.cpp @@ -7,12 +7,9 @@ -cZombie::cZombie() +cZombie::cZombie(void) : + super("Zombie", 54, "mob.zombie.hurt", "mob.zombie.death") { - m_MobType = 54; - m_SoundHurt = "mob.zombie.hurt"; - m_SoundDeath = "mob.zombie.death"; - GetMonsterConfig("Zombie"); } diff --git a/source/Mobs/Zombiepigman.cpp b/source/Mobs/Zombiepigman.cpp index 89e679050..0e618cbc2 100644 --- a/source/Mobs/Zombiepigman.cpp +++ b/source/Mobs/Zombiepigman.cpp @@ -7,12 +7,9 @@ -cZombiepigman::cZombiepigman() +cZombiepigman::cZombiepigman(void) : + super("Zombiepigman", 57, "mob.zombiepig.zpighurt", "mob.zombiepig.zpigdeath") { - m_MobType = 57; - m_SoundHurt = "mob.zombiepig.zpighurt"; - m_SoundDeath = "mob.zombiepig.zpigdeath"; - GetMonsterConfig("Zombiepigman"); } diff --git a/source/MonsterConfig.cpp b/source/MonsterConfig.cpp index f4e1d2c70..ff32c3406 100644 --- a/source/MonsterConfig.cpp +++ b/source/MonsterConfig.cpp @@ -44,7 +44,8 @@ cMonsterConfig::cMonsterConfig(void) -cMonsterConfig::~cMonsterConfig() { +cMonsterConfig::~cMonsterConfig() +{ delete m_pState; } @@ -52,8 +53,8 @@ cMonsterConfig::~cMonsterConfig() { -void cMonsterConfig::Initialize() { - +void cMonsterConfig::Initialize() +{ sAttributesStruct Attributes; cIniFile SettingsIniFile("settings.ini"); cIniFile MonstersIniFile("monsters.ini"); @@ -64,7 +65,7 @@ void cMonsterConfig::Initialize() { return; } - m_pState->MonsterTypes = SettingsIniFile.GetValue("Monsters","Types",""); + m_pState->MonsterTypes = SettingsIniFile.GetValue("Monsters", "Types", ""); if ( m_pState->MonsterTypes.empty() ) { @@ -72,17 +73,17 @@ void cMonsterConfig::Initialize() { return; } - AStringVector SplitList = StringSplit(m_pState->MonsterTypes,","); + AStringVector SplitList = StringSplit(m_pState->MonsterTypes, ","); for (unsigned int i = 0; i < SplitList.size(); ++i) { if (!SplitList[i].empty()) { - Attributes.m_name = SplitList[i].c_str(); - Attributes.m_AttackDamage = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(), "AttackDamage", 0); - Attributes.m_AttackRange = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(), "AttackRange", 0); - Attributes.m_SightDistance = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(), "SightDistance", 0); - Attributes.m_AttackRate = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(), "AttackRate", 0); - Attributes.m_MaxHealth = MonstersIniFile.GetValueI(SplitList[i].c_str(), "MaxHealth", 0); + Attributes.m_name = SplitList[i]; + Attributes.m_AttackDamage = (float)MonstersIniFile.GetValueF(SplitList[i], "AttackDamage", 0); + Attributes.m_AttackRange = (float)MonstersIniFile.GetValueF(SplitList[i], "AttackRange", 0); + Attributes.m_SightDistance = (float)MonstersIniFile.GetValueF(SplitList[i], "SightDistance", 0); + Attributes.m_AttackRate = (float)MonstersIniFile.GetValueF(SplitList[i], "AttackRate", 0); + Attributes.m_MaxHealth = MonstersIniFile.GetValueI(SplitList[i], "MaxHealth", 0); m_pState->AttributesList.push_front(Attributes); } } // for i - SplitList[] @@ -92,18 +93,19 @@ void cMonsterConfig::Initialize() { -void cMonsterConfig::AssignAttributes(cMonster *m, const char* n) +void cMonsterConfig::AssignAttributes(cMonster * a_Monster, const AString & a_Name) { std::list::const_iterator itr; for (itr = m_pState->AttributesList.begin(); itr != m_pState->AttributesList.end(); ++itr) { - if(itr->m_name.compare(n) == 0) + if (itr->m_name.compare(a_Name) == 0) { - m->SetAttackDamage (itr->m_AttackDamage); - m->SetAttackRange (itr->m_AttackRange); - m->SetSightDistance(itr->m_SightDistance); - m->SetAttackRate ((int)itr->m_AttackRate); - m->SetMaxHealth ((short)itr->m_MaxHealth); + a_Monster->SetAttackDamage (itr->m_AttackDamage); + a_Monster->SetAttackRange (itr->m_AttackRange); + a_Monster->SetSightDistance(itr->m_SightDistance); + a_Monster->SetAttackRate ((int)itr->m_AttackRate); + a_Monster->SetMaxHealth ((short)itr->m_MaxHealth); + return; } } // for itr - m_pState->AttributesList[] } diff --git a/source/MonsterConfig.h b/source/MonsterConfig.h index d1a514b17..371d324c2 100644 --- a/source/MonsterConfig.h +++ b/source/MonsterConfig.h @@ -1,17 +1,32 @@ + #pragma once + + + + +// fwd: class cMonster; + + + + + class cMonsterConfig { public: cMonsterConfig(void); ~cMonsterConfig(); - void AssignAttributes(cMonster *m, const char* n); + void AssignAttributes(cMonster * a_Monster, const AString & a_Name); private: struct sAttributesStruct; struct sMonsterConfigState; sMonsterConfigState* m_pState; void Initialize(); -}; \ No newline at end of file +} ; + + + +