|
|
|
@ -37,18 +37,20 @@ SUCH DAMAGE. |
|
|
|
|
#include "config.h" |
|
|
|
|
#include "DEFINES.h" |
|
|
|
|
#include "safemap.h" |
|
|
|
|
#include "Item.h" |
|
|
|
|
|
|
|
|
|
INCLUDE_DATA |
|
|
|
|
INCLUDE_STRATEGY_DATA |
|
|
|
|
INCLUDE_ANIMATION_DATA |
|
|
|
|
INCLUDE_ITEM_DATA |
|
|
|
|
|
|
|
|
|
std::map<int,MonsterData>MONSTER_DATA; |
|
|
|
|
safemap<std::string,MonsterData*>MONSTER_NAME_DATA; |
|
|
|
|
|
|
|
|
|
MonsterData::MonsterData() |
|
|
|
|
:atk(0),collisionDmg(0),hp(0),id(0),moveSpd(0),size(0),strategy(0){} |
|
|
|
|
MonsterData::MonsterData(int id,std::string name,int hp,int atk,std::vector<std::string>animations,float moveSpd,float size,int strategy,int collisionDmg): |
|
|
|
|
id(id),name(name),hp(hp),atk(atk),moveSpd(moveSpd),size(size),strategy(strategy),animations(animations),collisionDmg(collisionDmg){} |
|
|
|
|
MonsterData::MonsterData(int id,std::string name,int hp,int atk,std::vector<std::string>animations,std::vector<MonsterDropData>drops,float moveSpd,float size,int strategy,int collisionDmg): |
|
|
|
|
id(id),name(name),hp(hp),atk(atk),moveSpd(moveSpd),size(size),strategy(strategy),animations(animations),dropData(drops),collisionDmg(collisionDmg){} |
|
|
|
|
|
|
|
|
|
void MonsterData::InitializeMonsterData(){ |
|
|
|
|
int id=0; |
|
|
|
@ -119,12 +121,26 @@ void MonsterData::InitializeMonsterData(){ |
|
|
|
|
animationCounter++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::vector<MonsterDropData>drops; |
|
|
|
|
|
|
|
|
|
//Add drop items to monster data from the config.
|
|
|
|
|
int dropDataCounter=0; |
|
|
|
|
while(DATA["Monsters"][std::to_string(id)].HasProperty("DROP["+std::to_string(dropDataCounter)+"]")){ |
|
|
|
|
datafile drop=DATA["Monsters"][std::to_string(id)]["DROP["+std::to_string(dropDataCounter)+"]"]; |
|
|
|
|
if(!ITEM_DATA.count(drop.GetString(0))){ |
|
|
|
|
ERR("Could not add drop "<<drop.GetString(0)<<" to "<<MonsterName<<"'s drop table! Item does not exist!"); |
|
|
|
|
} |
|
|
|
|
drops.push_back(MonsterDropData{drop.GetString(0),float(drop.GetReal(1)),drop.GetInt(2),drop.GetInt(3)}); |
|
|
|
|
dropDataCounter++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
MonsterData monster( |
|
|
|
|
id, |
|
|
|
|
MonsterName, |
|
|
|
|
DATA["Monsters"][std::to_string(id)]["Health"].GetInt(), |
|
|
|
|
DATA["Monsters"][std::to_string(id)]["Attack"].GetInt(), |
|
|
|
|
animations, |
|
|
|
|
drops, |
|
|
|
|
DATA["Monsters"][std::to_string(id)]["MoveSpd"].GetReal()/100, |
|
|
|
|
DATA["Monsters"][std::to_string(id)]["Size"].GetReal()/100, |
|
|
|
|
STRATEGY_DATA[DATA["Monsters"][std::to_string(id)]["Strategy"].GetString()], |
|
|
|
@ -176,3 +192,6 @@ std::string MonsterData::GetShootAnimation(){ |
|
|
|
|
std::string MonsterData::GetDeathAnimation(){ |
|
|
|
|
return animations[DEATH]; |
|
|
|
|
} |
|
|
|
|
const std::vector<MonsterDropData>&MonsterData::GetDropData(){ |
|
|
|
|
return dropData; |
|
|
|
|
} |