#ifndef __HERO_H__
#define __HERO_H__
#include "GameFrameHead.h"
#include "GameParam.h"
class CHero
{
public:
struct Attribute
{
//成就
//总
//long long llTotalMoney;
//long long llTotalScores;
long long llTotalComplete;
long long llTotalPerfectToComplete;
int levelComplete[LEVEL_AMOUNT];
bool levelAllComplete[LEVEL_AMOUNT];
//解锁成就
//一局 最高纪录
long long llTopMoney;
//生涯存档
struct CareerArchive
{
bool bCompletion;
bool bGood;
int nScore;
int nHeightScore;
int nBestStep;
};
//完成的关卡
map<int, CareerArchive> career;
//教学
bool bBaseTeaching;
bool bLigatureTeaching;
bool bRatingTeaching;
//成就
map<int, bool> mapAchievementComplete;
map<int, bool> mapAchievementPerfectToComplete;
map<int, bool> mapAchievementMode;
};
public:
CHero();
~CHero();
bool init();
Attribute* getAttribute()const;
Attribute::CareerArchive* getCareer(int nId);
private:
Attribute* m_pAttribute;
};
#endif//__HERO_H__
#include "Hero.h"
#include "GameParam.h"
#include "XCommon.h"
#include "GameConfig.h"
#include "GameLogic.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "GameCenter.h"
#endif
CHero::CHero()
{
m_pAttribute = new Attribute();
}
CHero::~CHero()
{
SAFE_DELETE(m_pAttribute);
}
CHero::Attribute* CHero::getAttribute() const
{
return m_pAttribute;
}
bool CHero::init()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
int nSize = sizeof(GAMECENTER_ID_Complete) / sizeof(GAMECENTER_ID_Complete[0]);
for(int i = 0; i < nSize; i++)
{
m_pAttribute->mapAchievementComplete[i] = false;
}
nSize = sizeof(GAMECENTER_ID_PerfectToComplete) / sizeof(GAMECENTER_ID_PerfectToComplete[0]);
for (int i = 0; i < nSize; i++)
{
m_pAttribute->mapAchievementPerfectToComplete[i] = false;
}
for (int i = 0; i < LEVEL_AMOUNT; i++)
{
m_pAttribute->mapAchievementMode[i] = false;
}
#endif
return true;
}
CHero::Attribute::CareerArchive* CHero::getCareer( int nId )
{
for (map<int, CHero::Attribute::CareerArchive>::iterator it = m_pAttribute->career.begin(); it != m_pAttribute->career.end(); it++)
{
if (it->first == nId)
{
return &it->second;
}
}
return NULL;
}