//----------------------------------------------------------------------------------------
void BaseLevelBuilder::createSeer()
{
	// TODO : tile physics
	if(m_level->m_levelDataReference->mapFilePointer == NULL)
		return;

	unsigned int playerType = UserData::GetUserType();
	ASSERT(m_level->m_levelDataReference->mapFilePointer != NULL, "map file is empty");	

	SpriteSeer* seer = LevelObjectCreator::sCreateSeer(UserData::Get()->getUserId(),UserData::Get()->getUserName(),
		playerType ,
		true
		);

	seer->SetID(UserData::Get()->getUserId());
	seer->setTag(MAP_TAG_SEER);
	m_level->m_pObjectsLayer->addChild(seer, LevelLayer::sCalcZorder(seer->getPosition()));

	GameManager::Get()->setHero(seer);
	GameManager::Get()->setHeroTypeId(seer->GetTypeId());

	SkillDispMgr::Get()->Load("Data/skill.bin", "Data/animationMap.bin");
	SkillDispMgr::Get()->LoadFairy("Data/fairyskill.bin", "Data/fairyanimation.bin");


	// TODO : 实际上,影子可以放到LevelLayer里,不一定要放到ObjectLayer里。
	CATLObjectLayer* pObjLayer = dynamic_cast<CATLObjectLayer*>(m_level->m_pObjectsLayer);
	if(pObjLayer)
	{
		pObjLayer->AddRoleShadow(seer);
	}
}
void StoryInstanceDirector::LoadAllRoles()
{
	std::vector<unsigned int> vecOut;
	if (StoryDataCenter::Get()->GetOneItemAllRoleIds(vecOut))
	{
		size_t count = vecOut.size();
		for (size_t index = 0;index<count;index++)
		{
			unsigned int roleId = vecOut[index];
			SpriteSeer* pSeer = 0;
			if (roleId != 0)
			{
				pSeer = InsertOneRole(index+1,roleId);

				unsigned int seerTypeId = pSeer->GetTypeId();
				if (false == SpriteElfConfigFromLuaManager::getInstance()->TellIsElfId(seerTypeId))
				{
					ASprite* pAsprite = AspriteManager::getInstance()->getAsprite("spriteBin/shadow.bin");
					if(pAsprite != NULL)
					{
						CCPoint cp;
						CCSpriteBatchNode* pBatchNode = pAsprite->getSpriteBatchNodeFromFrame_Middle(0, 0, cp);
						if(pBatchNode != NULL)
						{
							pSeer->addChildToRoot(pBatchNode);
						}
					}
				}
			}
			else
			{
				pSeer = GameManager::Get()->getHero();
				pSeer = InsertOneRole(index+1,roleId,pSeer);
				if (pSeer)
				{
					m_heroIndex = index+1;
				}
			}
			if (pSeer)
			{
				pSeer->getRoot()->setVisible(false);
			}
		}
	}	
}
bool StoryDataCenter::GetOneRoleLeftIcon(unsigned int roleIndex,std::string &iconName)
{
	std::map<unsigned int,StoryRoleBasicData>::iterator Iter = (*mCurIterator).mMapStoryRolesBasicData.find(roleIndex);
	if (Iter == (*mCurIterator).mMapStoryRolesBasicData.end())
	{
		return false;
	}

	StoryRoleBasicData basicData = (*Iter).second;
	iconName = basicData.getRoleLogoIcon();
	if (iconName == "")
	{
		SpriteSeer* pHero = GameManager::Get()->getHero();
		if (pHero)
		{
			unsigned int index = pHero->GetTypeId();
			iconName = LuaTinkerManager::Get()->getLuaConfig<const char *>("characterString", "Characters", index, "PictureFile");
		}		
	}

	return true;
}