static void* json_thread() { while (1) { usleep(time_interval * 1000); printJson(); } }
void LogInScene::getUserHistoryGameRequestCompleted(CCNode* sender,void* data){ CCHttpResponse* response = (CCHttpResponse*)data; if (!response) { return; } int statusCode = response->getResponseCode(); std::vector<char> *buffer = response->getResponseData(); printJson(buffer); //1.解析 string boardIdStr,WinTimesStr,LoseTimesStr; for (unsigned int i = 0; i < buffer->size(); i++) { //1.排行榜编号 if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'b' && (*buffer)[i+2] == 'o' && (*buffer)[i+3] == 'a' && (*buffer)[i+4] == 'r') { for (int j = i + 11; (*buffer)[j] != ','; j++) { boardIdStr += (*buffer)[j]; } } //2.历史胜场 else if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'h' && (*buffer)[i+2] == 'i' && (*buffer)[i+3] == 's' && (*buffer)[i+4] == 't' && (*buffer)[i+9] == 'w' && (*buffer)[i+12] == '"') { for (int j = i + 14; (*buffer)[j] != ','; j++) { WinTimesStr += (*buffer)[j]; } } //3.历史败场 else if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'h' && (*buffer)[i+2] == 'i' && (*buffer)[i+3] == 's' && (*buffer)[i+4] == 't' && (*buffer)[i+9] == 'l' && (*buffer)[i+13] == '"') { for (int j = i + 15; (*buffer)[j] != ','; j++) { LoseTimesStr += (*buffer)[j]; } } //4.如果还没玩过这个 if ((*buffer)[i] == '4' && (*buffer)[i+1] == '0' && (*buffer)[i+2] == '4') { boardNotFound = true; break; } } //2.计算rank if (boardNotFound) MainUser->Rank[tmpBoardID] = 0; else{ int _id = atoi(boardIdStr.c_str()); int WinTimes = atoi(WinTimesStr.c_str()); int LoseTimes = atoi(LoseTimesStr.c_str()); MainUser->Rank[tmpBoardID] = MainUser->calculateRank(_id,WinTimes,LoseTimes); cout<<_id<<":胜"<<WinTimes<<" 负"<<LoseTimes<<" Rank为"<<MainUser->Rank[tmpBoardID]<<endl; } //3.继续下一个题的rank if (tmpBoardID < 14) { tmpBoardID++; boardNotFound = false; getUserHistoryGame(tmpBoardID); } else box->closeMessageBox(); }
void ASUser::getHeroInformationRequestCompleted(cocos2d::CCNode *sender, void *data){ for (int i = 0 ; i < 5 ; i++) { HeroLevel[i] = 0; HeroUnLocked[i] = false; } CCHttpResponse* response = (CCHttpResponse*)data; if (!response) { return; } int statusCode = response->getResponseCode(); std::vector<char> *buffer = response->getResponseData(); printJson(buffer); for (unsigned int i = 0; i < buffer->size(); i++) { //1.1 第1个英雄的等级情况 if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '0' && (*buffer)[i+14] == ','){ HeroUnLocked[0] = true; for (int j = i+23;(*buffer)[j] != '}' ; j++) { HeroLevelStr[0] += (*buffer)[j]; } } //1.2 第2个英雄的等级情况 if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '1' && (*buffer)[i+14] == ','){ HeroUnLocked[1] = true; for (int j = i+23;(*buffer)[j] != '}' ; j++) { HeroLevelStr[1] += (*buffer)[j]; } } //1.3 第3个英雄的等级情况 if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '2' && (*buffer)[i+14] == ','){ HeroUnLocked[2] = true; for (int j = i+23;(*buffer)[j] != '}' ; j++) { HeroLevelStr[2] += (*buffer)[j]; } } //1.4 第4个英雄的等级情况 if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '3' && (*buffer)[i+14] == ','){ HeroUnLocked[3] = true; for (int j = i+23;(*buffer)[j] != '}' ; j++) { HeroLevelStr[3] += (*buffer)[j]; } } //1.5 第5个英雄的等级情况 if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '4' && (*buffer)[i+14] == ','){ HeroUnLocked[4] = true; for (int j = i+23;(*buffer)[j] != '}' ; j++) { HeroLevelStr[4] += (*buffer)[j]; } } } for (int i = 0 ; i < 5 ; i++) { HeroLevel[i] = atoi(HeroLevelStr[i].c_str())+1; cout<<HeroLevel[i]<<" "; } cout<<endl; for (int i = 0 ; i < 5 ; i++) { cout<<HeroUnLocked[i]<<" "; } cout<<endl; }
void LogInScene::LogInRequestCompleted(CCNode* sender,void* data){ CCHttpResponse* response = (CCHttpResponse*)data; if (!response) { return; } int statusCode = response->getResponseCode(); std::vector<char> *buffer = response->getResponseData(); printJson(buffer); if (statusCode == 200) { //1.标记为已经登录 if (!MainUser->hasLogIn) { MainUser->hasLogIn = true; BeginMenuFallDown(); //关闭网络,进入游戏,没有按钮掉下来,再打开网络,重新登录以后,要掉下来 } //2.记录服务器发回的信息 if(!MainUser->initUser(buffer)) MainUser->hasChosenHero = false; else MainUser->hasChosenHero = true; saveLogInInformation(UserNameStr,PassWordStr); //3.初始化rank tmpBoardID = 0; getUserHistoryGame(tmpBoardID); } else{ if(statusCode == 401){ box->closeMessageBox(); box = AsMessageBox::createMessageBox("用户名与密码不匹配", 2, 1); box->setPosition(CCPointZero); addChild(box,100); } else if(statusCode == 404){ box->closeMessageBox(); box = AsMessageBox::createMessageBox("该用户不存在", 2, 1); box->setPosition(CCPointZero); addChild(box,100); } else{ box->closeMessageBox(); box = AsMessageBox::createMessageBox("无法连接,请检查您的网络", 2, 1); box->setPosition(CCPointZero); addChild(box,100); } } }
void RankScene::unlockHeroRequestCompleted(cocos2d::CCNode *sender, void *data){ CCHttpResponse* response = (CCHttpResponse*)data; if (!response) { return; } int statusCode = response->getResponseCode(); std::vector<char> *buffer = response->getResponseData(); printJson(buffer); if (statusCode == 201) { changeGold(-MainUser->HeroUnLockPrice[HeroProcessing]); MainUser->HeroUnLocked[HeroProcessing] = true; UnlockAnimation(HeroProcessing); goldProcessingIndex = 4; updateUserGold(); } else{ MessageBox->closeMessageBox(); MessageBox = AsMessageBox::createMessageBox("与服务器通信失败,\n请检查您的网络", 2, 1); MessageBox->setPosition(CCPointZero); addChild(MessageBox,1000); } }
void RankScene::HeroLevelUpRequestCompleted(CCNode* sender,void* data){ CCHttpResponse* response = (CCHttpResponse*)data; if (!response) { return; } int statusCode = response->getResponseCode(); std::vector<char> *buffer = response->getResponseData(); printJson(buffer); if (statusCode == 204) { changeGold(-MainUser->HeroLevelUpGold[MainUser->HeroLevel[roleIndex-1]-1]); MainUser->HeroLevel[roleIndex-1]++; LevelUpAnimation(roleIndex-1); goldProcessingIndex = 4; updateUserGold(); } else{ MessageBox->closeMessageBox(); MessageBox = AsMessageBox::createMessageBox("与服务器通信失败,\n请检查您的网络", 2, 1); MessageBox->setPosition(CCPointZero); addChild(MessageBox,1000); } }