| | 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 | |
|---|