All pastes #293508 Raw Edit

Stuff

public text v1 · immutable
#293508 ·published 2006-12-27 17:48 UTC
rendered paste body
#ifndef HOSTJOIN_H_3456786
#define HOSTJOIN_H_3456786

#include "SDLsidekick.h"
#include <cstdlib>

/*
struct PlayerNode
{
  PlayerNode *next;
  string Player_nick;
  IPaddress Player_IP;
  TCPsocket Player_TCPSOCK;
};
*/

  
void pre_game_client() 
{
  PlayerNode Client;
  
  //Sets up connecting to server
  SDLNet_ResolveHost(&Server_IP, Hosts_IP.c_str(), 1337);
  
  Client.Outbound=SDLNet_TCP_Open(&Server_IP);
  SDLNet_TCP_Send(Client.Outbound,My_nick.c_str(),My_nick.size());
  
  sprintf(temphold,"%i",Client.Player_number);
  

  SDLNet_TCP_Recv(Client.Outbound,temphold,MAXLEN);
  
  Client.Player_number = atoi(temphold);
  
  SDL_WM_SetCaption(temphold, NULL);
  
  while(quit==false)
  {
    
    if( SDL_PollEvent( &event ) )
    {
      switch (event.type)
      {
        case SDL_QUIT: 
        {
          quit = true;
          break;
        }
      }
    }                    
  }
  
}


void pre_game_server()  
{
  //sets up the linked list
  PlayerNode *Root;
  PlayerNode *Conductor;
  
  Root = new PlayerNode;
  Root-> next = NULL;
  Conductor = Root;
  
  //Sets up server port listening
  SDLNet_ResolveHost(&Server_IP, NULL, 1337);
  Server_socket= SDLNet_TCP_Open(&Server_IP);
  
  while (quit == false)
  {
    //Testing
    //char Temphold[30];
    //sprintf( Temphold, "%i", Player_count);
    //SDL_WM_SetCaption(Temphold, NULL);
    
    mouse_x = event.button.x;
    mouse_y = event.button.y; 

    SDL_Flip( screen);
    SDL_Delay( 30 );
    //Accepts the connection
    Conductor->Inbound = SDLNet_TCP_Accept(Server_socket);
    
    //If connection has come
    if(Conductor->Inbound!=NULL) 
    {   
      Conductor->Player_number=Player_count;
      
      SDLNet_TCP_Recv(Conductor->Inbound,temphold,MAXLEN);
      
      Conductor->Player_nick= Conductor->Player_nick + temphold;
      SDL_WM_SetCaption(Conductor->Player_nick.c_str(), NULL);
      
      sprintf(temphold,"%i",Conductor->Player_number);
      
      SDLNet_TCP_Send(Conductor->Inbound,temphold,MAXLEN);
      
      //Sets a new Node for the next player to connect to
      Conductor->next = new PlayerNode;
      Conductor=Conductor->next;
      Conductor->next=0;
      Player_count++;
    }
    if( SDL_PollEvent( &event ) )
    {
      switch (event.type)
      {
        case SDL_QUIT: 
        {
          quit = true;
          break;
        }
      }
    }
  }
  return;
}


void join_update_screen()
{
  apply_surface( 0, 0, background, screen);
  apply_surface( 64*3, 64*3, HostJoin_menu, screen);
  apply_surface( 0, 480-64,back_button, screen);
  apply_surface( 0, -5, version, screen);
}

void host_update_screen()
{
  apply_surface( 0, 0, background, screen);
  apply_surface( 64*3, 64*3, HostJoin_menu, screen);
  apply_surface( 0, 480-64,back_button, screen);
  apply_surface( 0, -5, version, screen);
}

void host_game()
{
  SDL_FreeSurface(message);
  message=TTF_RenderText_Solid( font, Race_length.c_str(), textColor );
  SDL_FreeSurface(HostJoin_menu);
  HostJoin_menu = load_image("Host Menu.bmp");
  while (quit == false)
  {

    mouse_x = event.button.x;
    mouse_y = event.button.y; 
    
    host_update_screen();
    apply_surface(5*64+48, 3*64+18, message, screen);
    SDL_Flip( screen);
    SDL_Delay( 30 );

    if( SDL_PollEvent( &event ) )
    {     //Checks if user wants to quit
      switch (event.type)
      {
        case SDL_QUIT: 
        {
          quit = true;
          break;
        }
        case SDL_MOUSEBUTTONDOWN:
        {
          if( event.button.button == SDL_BUTTON_LEFT )
          {
                 //MOUSE X                           //MOUSE Y
                 //IP input
            if( (mouse_x>3*64 && mouse_x<7*64) && (mouse_y > 3*64 && mouse_y < 4*64) )
            {
              change_string( &Race_length, host_update_screen,4,5*64+48, 3*64+18);
            }
                 //MOUSE X                           //MOUSE Y
                 //Pre Game Server
            if( (mouse_x>3*64 && mouse_x<7*64) && (mouse_y > 4*64 && mouse_y < 5*64) )
            {
              pre_game_server();
            }

                 //MOUSE X                           //MOUSE Y  
                 //go back
            if( (mouse_x>0 && mouse_x<64) && (mouse_y > 480-64 && mouse_y < 480) )
            {
              return;            
            }
          }
        }
      }
    }
  }   
}

void join_game()
{
  
  SDL_FreeSurface(message);
  message=TTF_RenderText_Solid( font, Hosts_IP.c_str(), textColor );
  SDL_FreeSurface(HostJoin_menu);
  HostJoin_menu = load_image("Join Menu.bmp");
  
  while (quit == false)
  {
    mouse_x = event.button.x;
    mouse_y = event.button.y; 
    
    join_update_screen();
    apply_surface(3*64+48, 3*64+18, message, screen);
    
    SDL_Flip( screen);
    SDL_Delay( 30 );

    if( SDL_PollEvent( &event ) )
    {     //Checks if user wants to quit
      switch (event.type)
      {
        case SDL_QUIT: 
        {
          quit = true;
          break;
        }
        case SDL_KEYDOWN:
        { 
          switch( event.key.keysym.sym)
          {     
            case SDLK_ESCAPE: return ;
          }
        }
        case SDL_MOUSEBUTTONDOWN:
        {
          if( event.button.button == SDL_BUTTON_LEFT )
          {      //MOUSE X                           //MOUSE Y
                 //IP input
            if( (mouse_x>3*64 && mouse_x<7*64) && (mouse_y > 3*64 && mouse_y < 4*64) )
            {
              change_string(&Hosts_IP, join_update_screen , 15, 3*64+48, 3*64+18);
            }
                 //MOUSE X                           //MOUSE Y
                 //Connect to server
            if( (mouse_x>3*64 && mouse_x<7*64) && (mouse_y > 4*64 && mouse_y < 5*64) )
            {
              pre_game_client();
            }
                 //MOUSE X                           //MOUSE Y  
                 //go back
            if( (mouse_x>0 && mouse_x<64) && (mouse_y > 480-64 && mouse_y < 480) )
            {
              return;
            }
            
          }
        }
      }
    }
  }
  return; 
}

#endif