Changeset 32

Show
Ignore:
Timestamp:
12/29/05 20:56:37 (3 years ago)
Author:
clayasaurus
Message:

updated raknet to include more functionality

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/raknet/line.d

    r29 r32  
    1818 
    1919const ubyte PACKET_ID_LINE = 100; 
    20  
    21  
    22  
     20const ubyte PACKET_ID_NUM = 101; 
     21const ubyte PACKET_ID_NUM_REQUEST = 102;  
    2322 
    2423struct Line 
     
    5655  private: 
    5756   Line[] lines; 
     57   int playerNum = 0; 
    5858 
    5959   this(char *serverIP, char *portString) 
     
    8686 
    8787      lines ~= line; 
     88   } 
     89 
     90   // send player ID to server and wait to recieve player number 
     91   void getPlayerNum() 
     92   { 
     93      // get player ID 
     94      PlayerID pid = raknet.client.playerID();  
     95 
     96      // request player num based on player ID from server 
     97      raknet.bitstream.start(); 
     98    
     99      raknet.bitstream.write(PACKET_ID_NUM_REQUEST);  
     100      raknet.bitstream.write(pid.binaryAddress); 
     101      raknet.bitstream.write(pid.port);  
     102 
     103      raknet.client.sendBitstream(PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, 0); 
     104 
     105      raknet.bitstream.end(); 
     106 
     107      debug writefln("getPlayerNum: sent request"); 
     108       
     109      // wait until recieve player number from server 
     110      ubyte packetID = 0; 
     111 
     112      do  
     113      { 
     114         Packet * p = raknet.client.receivePacket(); 
     115          
     116         if(p !is null) { 
     117 
     118         // decode packet 
     119         raknet.bitstream.start(cast(char*)p.data, p.length, false); 
     120       
     121         // read packet ID 
     122         raknet.bitstream.read(packetID); 
     123       
     124         debug writefln("recieved packet ", packetID); 
     125       
     126         // if we found it, read its data  
     127         if (packetID == PACKET_ID_NUM) 
     128         { 
     129            raknet.bitstream.read(playerNum);  
     130            debug writefln("player ", playerNum, " connected"); 
     131         } 
     132             
     133         // otherwise deallocate and wait some more 
     134         raknet.client.deallocatePacket(p); 
     135 
     136         } // p !is unll 
     137 
     138      } while (packetID != PACKET_ID_NUM) 
     139    
     140 
    88141   } 
    89142 
     
    163216   ClientConnection clientConnect = new ClientConnection("127.0.0.1", "6881"); 
    164217 
     218   // send PID to  
     219   clientConnect.getPlayerNum(); 
     220    
    165221   int lineCount = 0; 
    166222 
  • trunk/raknet/lineserver.d

    r25 r32  
    99// packet identifier so we know packet is a line 
    1010const ubyte PACKET_ID_LINE = 100; 
     11const ubyte PACKET_ID_NUM = 101; 
     12const ubyte PACKET_ID_NUM_REQUEST = 102;  
     13 
     14int num = 0; 
    1115 
    1216void sendLineToClients(PlayerID clientToExclude, float x1, float y1, float x2, float y2, int r, int g, int b) 
     
    2529 
    2630   raknet.server.sendBitstream(PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, 0, clientToExclude, true); 
     31 
     32   // deallocates bitstream 
     33   raknet.bitstream.end(); 
     34} 
     35 
     36void sendNumToClients(PlayerID pid, int num) 
     37{ 
     38   // allocates bitstream 
     39   raknet.bitstream.start();       
     40  
     41   // send info & packet ID 
     42   raknet.bitstream.write(PACKET_ID_NUM); 
     43   raknet.bitstream.write(num); 
     44 
     45   raknet.server.sendBitstream(PacketPriority.HIGH_PRIORITY, PacketReliability.RELIABLE_ORDERED, 0, pid, false); 
    2746 
    2847   // deallocates bitstream 
     
    5473      sendLineToClients(p.playerId, x1, y1, x2, y2, r, g, b); 
    5574   break; 
     75 
     76   // on incoming connection tell player which number it is  
     77   case ID_NEW_INCOMING_CONNECTION: 
     78      debug writefln("player ", p.playerIndex, " connected"); 
     79 
     80      sendNumToClients(p.playerId, p.playerIndex); 
     81   break;  
     82 
     83 
    5684   default: 
    5785      printf("Unhandled packet (not a problem): %i\n", cast(int)packetID); 
  • trunk/raknet/rakglue/rakclient.h

    r23 r32  
    3333bool rakClientInterface_SendBitstream(PacketPriority priority, PacketReliability reliability, char orderingChannel); 
    3434 
     35PlayerID  rakClientInterface_GetPlayerID();  
     36 
    3537} 
    3638 
  • trunk/raknet/rakglue/rakclientglue.cpp

    r25 r32  
    6666} 
    6767 
     68PlayerID  rakClientInterface_GetPlayerID() 
     69{ 
     70   return rakClientInterface->GetPlayerID();  
     71} 
     72 
    6873 
    6974} 
  • trunk/raknet/rakglue/rakserver.h

    r23 r32  
    3535 
    3636void rakServerInterface_Disconnect( unsigned blockDuration ); 
     37 
     38int rakServerInterface_GetIndexFromPlayerID(PlayerID pid); 
    3739} 
    3840 
  • trunk/raknet/rakglue/rakserverglue.cpp

    r25 r32  
    6767} 
    6868 
     69int rakServerInterface_GetIndexFromPlayerID(PlayerID pid) 
     70{ 
     71   return rakServerInterface->GetIndexFromPlayerID(pid);  
     72} 
    6973 
    7074} 
  • trunk/raknet/raknet/client.d

    r30 r32  
    5050} 
    5151 
     52PlayerID playerID()  
     53{ 
     54   return rakClientInterface_GetPlayerID(); 
     55} 
     56 
    5257// will crash if not alias'd 
    5358alias rakClientInterface_REG_AS_RPC REG_AS_RPC; 
     
    7782 
    7883void rakClientInterface_SendBitstream(PacketPriority priority, PacketReliability reliability, char orderingChannel); 
     84 
     85PlayerID  rakClientInterface_GetPlayerID();  
    7986} 
    8087 
  • trunk/raknet/raknet/networktypes.d

    r30 r32  
    11module raknet.networktypes; 
     2 
     3debug import std.stdio;  
    24 
    35/* -*- mode: c++; c-file-style: raknet; tab-always-indent: nil; -*- */ 
     
    6971   */ 
    7072 
     73debug 
     74{ 
     75   void print() 
     76   { 
     77      writefln("Binary Address: ", binaryAddress, ", port: ", port); 
     78   } 
     79} 
     80 
    7181   // handles == and != 
    7282   int opEquals(inout PlayerID pid) 
  • trunk/raknet/raknet/server.d

    r30 r32  
    4040} 
    4141 
    42  
    43  
    4442void disconnect( uint blockDuration ) 
    4543{ 
     
    4745} 
    4846 
    49 bool sendBitstream(PacketPriority priority, PacketReliability reliability, char orderingChannel, PlayerID playerId, bool broadcast) 
     47bool sendBitstream(PacketPriority priority, PacketReliability reliability, char orderingChannel,  
     48                   PlayerID playerId, bool broadcast) 
    5049{ 
    5150   return rakServerInterface_SendBitstream(priority, reliability, orderingChannel, playerId, broadcast); 
     51} 
     52 
     53int getIndexFromPlayerID(PlayerID pid) 
     54{ 
     55   return rakServerInterface_GetIndexFromPlayerID(pid); 
    5256} 
    5357 
     
    7175bool rakServerInterface_SendBitstream(PacketPriority priority, PacketReliability reliability, char orderingChannel, PlayerID playerId, bool broadcast); 
    7276void rakServerInterface_Disconnect( uint blockDuration ); 
     77int rakServerInterface_GetIndexFromPlayerID(PlayerID pid); 
    7378} 
    7479