+
+void Server::HandleLogin(Connection &client, const UDPpacket &udp_pack) {
+ const Packet &pack = *reinterpret_cast<const Packet *>(udp_pack.data);
+ size_t maxlen = min(udp_pack.len - int(sizeof(Packet::Header)), 32);
+ string name;
+ name.reserve(maxlen);
+ for (size_t i = 0; i < maxlen && pack.payload[i] != '\0'; ++i) {
+ name.push_back(pack.payload[i]);
+ }
+ cout << "got login request from player \"" << name << '"' << endl;
+
+ Entity *player = world.AddPlayer(name);
+ if (player) {
+ // success!
+ cout << "\taccepted" << endl;
+ } else {
+ // aw no :(
+ cout << "\trejected" << endl;
+ }
+}
+