diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-02-08 18:14:12 +0100 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-02-08 18:14:12 +0100 |
commit | 6651343261eb087ec29d9db5211de6b3e1db9822 (patch) | |
tree | b9db8ba77ef97c9a5c0cf3a859d65ea5d4efc85b | |
parent | MTRand class is not created in each tick, therefore much improving tick-thread time (now uses ~5 % CPU instead of one full core) (diff) | |
download | cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar.gz cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar.bz2 cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar.lz cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar.xz cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.tar.zst cuberite-6651343261eb087ec29d9db5211de6b3e1db9822.zip |
-rw-r--r-- | source/cMonsterConfig.cpp | 105 |
1 files changed, 62 insertions, 43 deletions
diff --git a/source/cMonsterConfig.cpp b/source/cMonsterConfig.cpp index c37641f2f..43c2ca689 100644 --- a/source/cMonsterConfig.cpp +++ b/source/cMonsterConfig.cpp @@ -4,36 +4,37 @@ #include "cMonsterConfig.h"
#include "cMonster.h"
#include "../iniFile/iniFile.h"
-#include <cstdio>
-//#include "../source/cprintf.h"
+//#include <cstdio>
-using namespace std;
+struct cMonsterConfig::sAttributesStruct
+{
+ AString m_name;
+ float m_SightDistance;
+ float m_AttackDamage;
+ float m_AttackRange;
+ float m_AttackRate;
+ int m_MaxHealth;
+};
-struct cMonsterConfig::sAttributesStruct
-{
- string m_name;
- float m_SightDistance;
- float m_AttackDamage;
- float m_AttackRange;
- float m_AttackRate;
- int m_MaxHealth;
-};
-
struct cMonsterConfig::sMonsterConfigState
{
int TypeCount;
- string MonsterTypes;
- list< sAttributesStruct > AttributesList;
+ AString MonsterTypes;
+ std::list< sAttributesStruct > AttributesList;
};
+
+
+
+
cMonsterConfig::cMonsterConfig(int TypeC)
: m_pState( new sMonsterConfigState )
{
@@ -41,64 +42,82 @@ cMonsterConfig::cMonsterConfig(int TypeC) Initialize();
}
+
+
+
+
cMonsterConfig::~cMonsterConfig() {
delete m_pState;
}
+
+
+
+
void cMonsterConfig::Initialize() {
sAttributesStruct Attributes;
cIniFile SettingsIniFile("settings.ini");
cIniFile MonstersIniFile("monsters.ini");
- if(!SettingsIniFile.ReadFile() || !MonstersIniFile.ReadFile()) {
- printf("Error: Must have both settings.ini and monsters.ini to configure attributes\n\tusing default attributes \n");
+ if (!SettingsIniFile.ReadFile() || !MonstersIniFile.ReadFile())
+ {
+ LOGWARNING("cMonsterConfig: Must have both settings.ini and monsters.ini to configure attributes\n\tusing default attributes \n");
return;
}
m_pState->MonsterTypes = SettingsIniFile.GetValue("Monsters","Types","");
- if( m_pState->MonsterTypes.empty() ) {
- printf("Error: No Monster types listed in config file, using default attributes \n");
+ if ( m_pState->MonsterTypes.empty() )
+ {
+ LOGWARNING("cMonsterConfig: No Monster types listed in config file, using default attributes \n");
return;
}
AStringVector SplitList = StringSplit(m_pState->MonsterTypes,",");
- for(unsigned int i = 0; i < SplitList.size(); ++i) {
- if(!SplitList[i].empty()) {
- printf("Getting Attributes for: %s \n",SplitList[i].c_str());
+ 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);
- printf("Got AttackDamage: %3.3f \n",Attributes.m_AttackDamage);
- Attributes.m_AttackRange = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(),"AttackRange",0);
- printf("Got AttackRange: %3.3f \n",Attributes.m_AttackRange);
- Attributes.m_SightDistance = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(),"SightDistance",0);
- printf("Got SightDistance: %3.3f \n",Attributes.m_SightDistance);
- Attributes.m_AttackRate = (float)MonstersIniFile.GetValueF(SplitList[i].c_str(),"AttackRate",0);
- printf("Got AttackRate: %3.3f \n",Attributes.m_AttackRate);
- Attributes.m_MaxHealth = MonstersIniFile.GetValueI(SplitList[i].c_str(),"MaxHealth",0);
- printf("Got MaxHealth: %d \n",Attributes.m_MaxHealth);
+ 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);
m_pState->AttributesList.push_front(Attributes);
}
- }
-
+ } // for i - SplitList[]
}
+
+
+
+
void cMonsterConfig::AssignAttributes(cMonster *m, const char* n)
{
- list<sAttributesStruct>::iterator itr;
- for(itr = m_pState->AttributesList.begin(); itr != m_pState->AttributesList.end(); ++itr) {
- if(itr->m_name.compare(n) == 0) {
- //printf("found my attribs: %s :\n",itr->m_name.c_str());
- m->SetAttackDamage(itr->m_AttackDamage);
- m->SetAttackRange(itr->m_AttackRange);
+ std::list<sAttributesStruct>::const_iterator itr;
+ for (itr = m_pState->AttributesList.begin(); itr != m_pState->AttributesList.end(); ++itr)
+ {
+ if(itr->m_name.compare(n) == 0)
+ {
+ m->SetAttackDamage (itr->m_AttackDamage);
+ m->SetAttackRange (itr->m_AttackRange);
m->SetSightDistance(itr->m_SightDistance);
- m->SetAttackRate((int)itr->m_AttackRate);
- m->SetMaxHealth((int)itr->m_MaxHealth);
+ m->SetAttackRate ((int)itr->m_AttackRate);
+ m->SetMaxHealth ((int)itr->m_MaxHealth);
}
- }
+ } // for itr - m_pState->AttributesList[]
}
+
+
+
+
cMonsterConfig *cMonsterConfig::Get() {
return this;
}
+
+
+
+
|