//连接网关服务器成功后,服务器自动推送消息,返回网关服务器列表 bool LoginLayerUC::ProcessMsg(int type, google::protobuf::Message *msg) { m_iCurrentType = type; switch (type) { case ServerListMsg: { unschedule(schedule_selector(LoginLayerUC::scheduleForConnectGateServer)); CCLOG("ServerListMsg"); ServerList* serverInfo = (ServerList*)msg; m_serverInfo = *serverInfo; m_pLoading->setVisible(false); //没有服务器列表弹框提示 if(m_serverInfo.server_list().size()<=0) { ShowPopTextTip(GETLANGSTR(207)); return false; } //读取上一次登录选择的服务器 std::string sServerGame = CCUserDefault::sharedUserDefault()->getStringForKey(SERVER_FOR_GAME); m_iSelectServerIndex = getServerIndex(sServerGame); //读取更新服务器列表 std::string sUpdateServer = serverInfo->update_server(); if(sUpdateServer.compare("") != 0) { CCUserDefault::sharedUserDefault()->setStringForKey(SERVER_FOR_UPDATE, sUpdateServer); CCUserDefault::sharedUserDefault()->flush(); } //版本更新 bool bUpdate = GamePlatformMgr->VersionUpdateWithPlatform( serverInfo->game_version() ); if(!bUpdate) { initLogin(); } } break; case LoginResponseMsg: { LoginResponse *loginResponse = (LoginResponse *)msg; printf("%d,%d,",loginResponse->authrecode(),loginResponse->hasrole()); printf("\n name = %s ,...", loginResponse->GetDescriptor()->name().c_str()); int res =loginResponse->authrecode(); //登录成功, if (res==0) { if (loginResponse->hasrole()) { for (int i=0; i<loginResponse->rolelist_size();i++) { protos::common::Role role = loginResponse->rolelist(i); printf("role id:%d rolename:%s, rolelv: %d", role.roleid(), U8(role.rolename().c_str()),role.rolelv()); CNetClient::getShareInstance()->sendInGameReq(role.roleid()); break; } } else { m_armature->getAnimation()->play("enter"); this->runAction(CCSequence::createWithTwoActions(CCDelayTime::create(0.7f), CCCallFunc::create(this, callfunc_selector(LoginLayerUC::callbackForSound)))); removeLogin(); } } //0x01服务器人数上限,0x02账号禁止登录,0x03账号验证错误) else if (res==1) { ShowTexttip(GETLANGSTR(227),RGB_RED,0,ccp(VCENTER.x,VCENTER.y+150),0.0f,2.0f,0.0f,20.0f); } else if (res==2) { ShowTexttip(GETLANGSTR(228),RGB_RED,0,ccp(VCENTER.x,VCENTER.y+150),0.0f,2.0f,0.0f,20.0f); } else if (res==3) { ShowTexttip(GETLANGSTR(165),RGB_RED,0,ccp(VCENTER.x,VCENTER.y+150),0.0f,2.0f,0.0f,20.0f); } else if(res==4) { ShowTexttip(GETLANGSTR(1155),RGB_RED,0,ccp(VCENTER.x,VCENTER.y+150),0.0f,2.0f,0.0f,20.0f); } return true; } break; //进入游戏 case InGameResponseMsg: { InGameResponse *inRespon = (InGameResponse*)msg; protos::common::Role role = inRespon->myrole(); printf("role id:%d rolename:%s, rolelv: %d", role.roleid(), U8(role.rolename().c_str()),role.rolelv()); UserData* userData = DataCenter::sharedData()->getUser()->getUserData(); userData->setRaceType(role.rolenation()); userData->setAliveID(role.roleid()); userData->setRoleID(role.roleid()); userData->setLevel(role.rolelv()); userData->setName(role.rolename().c_str()); userData->setCoin(role.rolecoin()); userData->setExp(role.roleexp()); userData->setNextExp(role.nextexp()); userData->setRoleAction(role.roleaction()); userData->setRoleGold(role.rolegold()); userData->read(role); m_armature->getAnimation()->play("enter"); this->runAction(CCSequence::createWithTwoActions(CCDelayTime::create(0.7f), CCCallFunc::create(this, callfunc_selector(LoginLayerUC::callbackForSound)))); removeLogin(); return true; } break; default: break; } return false; }
void CSmeltArmor::proceesMessage(int type, google::protobuf::Message *msg) { this->setVisible(true); switch (type) { //洗练数据 case SmeltDataRequestMsg: { Armor *res = (Armor*)msg; if(res) { m_armor.armor.atkRange = res->atkrange(); m_armor.armor.hpRange = res->hprange(); m_armor.armor.defRange = res->defrange(); m_armor.armor.IntRange = res->dexrange(); m_armor.armor.hitRange = res->hitrange(); m_armor.armor.critRange = res->critrange(); m_armor.armor.renewRange = res->renewrange(); m_armor.armor.dodgeRange = res->dodgerange(); showSmeltDataToUI(); } }break; //洗练 case SmeltArmorMsg: { SmeltResponse *res = (SmeltResponse*)msg; //1 成功,2 金币不足,3 元宝不足,4 数据错误 if (res->reslut()==1) { //1 攻击addAtk,2 防御addDef,3 血量addHp,4 敏捷addDex,5 命中addHit,6 暴击addCrit,7 回复addRenew,8 闪避addDodge) m_armor.armor.addAtk = res->armor().armor().addatk(); m_armor.armor.addDef = res->armor().armor().adddef(); m_armor.armor.addHp = res->armor().armor().addhp(); m_armor.armor.addDex = res->armor().armor().adddex(); m_armor.armor.addHit = res->armor().armor().addhit(); m_armor.armor.addCrit = res->armor().armor().addcrit(); m_armor.armor.addRenew = res->armor().armor().addrenew(); m_armor.armor.addDodge = res->armor().armor().adddodge(); //更新金钱 UserData *data = DataCenter::sharedData()->getUser()->getUserData(); data->setCoin(data->getCoin() - m_coin); data->setRoleGold(data->getRoleGold() - m_diamond); CSceneManager::sharedSceneManager()->PostMessageA(UPDATE_HERO,0,nullptr,nullptr); CSceneManager::sharedSceneManager()->PostMessageA(UPDATE_ITEM_DATA, 2, nullptr, &m_armor); //播放效果 float fTime = showStrengthEffect(); this->runAction(CCSequence::createWithTwoActions(CCDelayTime::create(fTime), CCCallFunc::create(this, callfunc_selector(CSmeltArmor::showArmorAttr)))); } else if (res->reslut()==2) { //ShowPopTextTip(GETLANGSTR(205)); CShowToBuyResource* pShow = CShowToBuyResource::create(); pShow->showToBuyResourceByType(ShowBuyResourceCoin); } else if (res->reslut()==3) { //ShowPopTextTip(GETLANGSTR(203)); CShowToBuyResource* pShow = CShowToBuyResource::create(); pShow->showToBuyResourceByType(ShowBuyResourceGold); } else if (res->reslut()==4) { ShowPopTextTip(GETLANGSTR(170)); } }break; default: break; } }