//---------------------------------------------------------------------------------------- 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); } }
//---------------------------------------------------------------------------------------- // others function means other players' //---------------------------------------------------------------------------------------- void BaseLevelBuilder::addOtherPlayer(unsigned int uid, const char* userName,unsigned int type, cocos2d::CCPoint pt, unsigned int orient, unsigned int battleSide) { std::map<uint32_t, OthersPlayerInfo>::iterator itor = m_level->m_othersPlayerInfo.find(uid); if (itor == m_level->m_othersPlayerInfo.end()) { // OthersPlayerInfo playerInfo; playerInfo.seer = NULL; playerInfo.pet = NULL; #if _DEBUG playerInfo.name = userName; #endif //add seer ASSERT(m_level->m_levelDataReference->mapFilePointer != NULL, "map file is empty"); SpriteSeer* seer = LevelObjectCreator::sCreateSeer(uid,userName, type, false); if(NULL == seer) { return; } seer->SetID(uid); seer->setTag(MAP_TAG_OTHER_SEER); seer->setPosition(pt); seer->SetBattleSide(battleSide); if (m_level->m_pObjectsLayer) { m_level->m_pObjectsLayer->addChild(seer, LevelLayer::sCalcZorder(seer->getPosition())); bool isMainLand = MainLandManager::Get()->isMainLand(m_level->m_id); int animID; if (isMainLand) { animID = kTypeIdle_FaceDown_Stand_MAIN; } else { animID = kTypeIdle_FaceDown_Stand_OTH; } /*switch(orient) { case DIRECTION_UP: animID = kTypeIdle_FaceUp_Stand_MAIN; break; case DIRECTION_LEFT: break; case DIRECTION_BOTTOM: break; case DIRECTION_RIGHT: break; default: break; }*/ seer->SetAnim(animID,1,true); } playerInfo.seer = seer; //add pet //if (petType != 0) //{ // SpriteElf* elf = LevelObjectCreator::sCreateSpriteElf(petType, 0, true, // MAP_TAG_OTHER_FOLLOW_SPRITE , // true); // elf->setTag(MAP_TAG_OTHER_FOLLOW_SPRITE); // elf->followSeerPosition(pt, true); // m_level->addChild(elf, LevelLayer::sCalcZorder(elf->getPosition())); // playerInfo.pet = elf; //} // m_level->m_othersPlayerInfo.insert(std::pair<uint32_t, OthersPlayerInfo>(uid, playerInfo)); CATLObjectLayer* pObjLayer = dynamic_cast<CATLObjectLayer*>(m_level->m_pObjectsLayer); if(pObjLayer) { pObjLayer->AddRoleShadow(seer); } } else { CCLog("error, the player has add before"); } }