Untitled
void Player::sendVariant(int delay, int NetID, std::vector<std::any> var) { int index = 0, len = 61; BYTE* packet_data = new BYTE[61]; int MessageType = 0x4, PacketType = 0x1, CharState = 0x8; memset(packet_data, 0, 61); memcpy(packet_data, &MessageType, 4); memcpy(packet_data + 4, &PacketType, 4); memcpy(packet_data + 8, &NetID, 4); memcpy(packet_data + 16, &CharState, 4); memcpy(packet_data + 24, &delay, 4); std::cout << "[1]\n"; for (const auto& element : var) { std::cout << "[2]\n"; if (element.type() == typeid(std::string)) { std::cout << "[3]\n"; std::string a = std::any_cast<std::string>(element); BYTE* data = new BYTE[len + 2 + a.length() + 4]; memcpy(data, packet_data, len); delete[] packet_data; packet_data = data; data[len] = index; data[len + 1] = 0x2; int str_len = (int)a.length(); memcpy(data + len + 2, &str_len, 4); memcpy(data + len + 6, a.data(), str_len); len = len + 2 + (int)a.length() + 4; index++; packet_data[60] = index; std::cout << "[4]\n"; } else if (element.type() == typeid(int)) { std::cout << "[5]\n"; int a = std::any_cast<int>(element); BYTE* data = new BYTE[len + 2 + 4]; memcpy(data, packet_data, len); delete[] packet_data; packet_data = data; data[len] = index; data[len + 1] = 0x9; memcpy(data + len + 2, &a, 4); len = len + 2 + 4; index++; packet_data[60] = index; std::cout << "[6]\n"; } else if (element.type() == typeid(float)) { std::cout << "[7]\n"; float a = std::any_cast<float>(element); BYTE* data = new BYTE[len + 2 + 4]; memcpy(data, packet_data, len); delete[] packet_data; packet_data = data; data[len] = index; data[len + 1] = 0x1; memcpy(data + len + 2, &a, 4); len = len + 2 + 4; index++; packet_data[60] = index; std::cout << "[8]\n"; } else if (element.type() == typeid(std::pair<float, float>)) { std::cout << "[9]\n"; float a = std::any_cast<std::pair<float, float>>(element).first; float b = std::any_cast<std::pair<float, float>>(element).first; BYTE* data = new BYTE[len + 2 + 8]; memcpy(data, packet_data, len); delete[] packet_data; packet_data = data; data[len] = index; data[len + 1] = 0x3; memcpy(data + len + 2, &a, 4); memcpy(data + len + 6, &b, 4); len = len + 2 + 8; index++; packet_data[60] = index; std::cout << "[10]\n"; } else if (element.type() == typeid(std::tuple<float, float, float>)) { std::cout << "[11]\n"; float a = std::get<0>(std::any_cast<std::tuple<float, float, float>>(element)); float b = std::get<1>(std::any_cast<std::tuple<float, float, float>>(element)); float c = std::get<2>(std::any_cast<std::tuple<float, float, float>>(element)); BYTE* data = new BYTE[len + 2 + 12]; memcpy(data, packet_data, len); delete[] packet_data; packet_data = data; data[len] = index; data[len + 1] = 0x4; memcpy(data + len + 2, &a, 4); memcpy(data + len + 6, &b, 4); memcpy(data + len + 10, &c, 4); len = len + 2 + 12; index++; packet_data[60] = index; std::cout << "[12]\n"; } } std::cout << "[13]\n"; ENetPacket* packet = enet_packet_create(packet_data, len, 1); enet_peer_send(this->m_peer, 0, packet); delete[] packet_data; std::cout << "[14]\n"; }
Leave a Comment