Advertisement
Guest User

Client

a guest
Jun 9th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include "network.h"
  2.  
  3. void network::init(){
  4.     char getIP[20];
  5.     SDLNet_ResolveHost(&ip, "127.0.0.1", 7777);
  6.     connection = SDLNet_TCP_Open(&ip);
  7.  
  8.     server=SDLNet_AllocSocketSet(1);
  9.     SDLNet_TCP_AddSocket(server, connection);
  10.  
  11. }
  12.  
  13. void network::close(){
  14.     SDLNet_TCP_Send(connection, "2 \n", 4);
  15.     SDLNet_TCP_Close(connection);
  16.     SDLNet_FreeSocketSet(server);
  17. }
  18.  
  19. void network::send(Player *p){
  20.     std::cout<< SDLNet_GetError() << std::endl;
  21.     if(p->isReady()){
  22.         //1 id x y angle
  23.         sprintf(tmp, "1 %d %d %d %d", p->getID(), GameManager::GetInstance().getGlobalX(), GameManager::GetInstance().getGlobalY(), p->getAngle());
  24.         int siz=0;
  25.         int len = strlen(tmp) + 1;
  26.         while(siz < len){
  27.             siz+=SDLNet_TCP_Send(connection, tmp+siz, len - siz);
  28.         }
  29.     }
  30. }
  31.  
  32. void network::recv(std::vector<OtherPlayer*>& enemies, Player *p){
  33.     while(SDLNet_CheckSockets(server, 0)>0 && SDLNet_SocketReady(connection)){
  34.         int offset = 0;
  35.         do{
  36.             offset+=SDLNet_TCP_Recv(connection, tmp+offset, 1400);
  37.             if(offset <= 0){
  38.                 return;
  39.             }
  40.         }while(tmp[strlen(tmp - 1)] != '\n');
  41.         int type, id;
  42.         sscanf(tmp, "%d %d", &type, &id);
  43.         if(type==0){
  44.             p->setID(id);
  45.         }else if(type == 1){
  46.             int i;
  47.             for(i = 0; i < enemies.size(); i++){
  48.                 if(enemies[i]->getID() == id){
  49.                     int tmp2, tmpid, tmpx, tmpy, tmpangle;
  50.                     scanf(tmp, "%d %d %d %d", &tmp2, &tmpx, &tmpy, &tmpangle);
  51.                     enemies[i]->setX(tmpx);
  52.                     enemies[i]->setY(tmpy);
  53.                     enemies[i]->setAngle(tmpangle);
  54.                     break;
  55.                 }
  56.             }
  57.             if(i>=enemies.size()){
  58.                 enemies.push_back(new OtherPlayer());
  59.             }
  60.         }else if(type==2){
  61.             for(int i = 0; i<enemies.size(); i++){
  62.                 enemies.erase(enemies.begin() + i);
  63.             }
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement