Corrections merge de master
hell.
This commit is contained in:
@@ -21,7 +21,7 @@ uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; }
|
||||
|
||||
std::string Connection::GetName() const { return m_loginfo.name; }
|
||||
|
||||
void Connection::AddInput(Input in) { m_input_manifest.insert({ in.timestamp, in }); }
|
||||
void Connection::AddInput(Input in) { m_input_manifest.insert({ in.timestamp, in }); m_input_vector.push_back(in); }
|
||||
|
||||
Output* Connection::getOutput(Timestamp time) {
|
||||
auto out = m_output_manifest.find(time);
|
||||
@@ -50,31 +50,39 @@ sockaddr_in* Connection::getAddr() const { return (sockaddr_in*)&m_addr; }
|
||||
void Connection::getPacks(SOCKET sock) {
|
||||
std::vector<char*> lsPck;
|
||||
Input in;
|
||||
while (true) {
|
||||
Sync sync;
|
||||
lsPck = recvPacksFrom(sock, &m_buf, m_addr);
|
||||
|
||||
for (auto& pck : lsPck) {
|
||||
uint32_t bsize = m_buf.len - (pck - m_buf.ptr);
|
||||
switch (netprot::getType(pck, 1)) {
|
||||
using enum netprot::PACKET_TYPE;
|
||||
case INPUT:
|
||||
if (Deserialize(&in, pck, &bsize))
|
||||
if (Deserialize(&in, pck, &bsize)) {
|
||||
m_input_manifest[in.timestamp] = in;
|
||||
m_input_vector.push_back(in);
|
||||
}
|
||||
break;
|
||||
case SYNC:
|
||||
if (Deserialize(&sync, pck, &bsize))
|
||||
m_nsync = true;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
lsPck.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void Connection::sendPacks(SOCKET sock, std::unordered_map<uint64_t, Connection*> conns) {
|
||||
while (m_last_out < m_output_manifest.size()) {
|
||||
Output out = m_output_manifest.at(m_last_out++);
|
||||
|
||||
void Connection::sendPacks(SOCKET sock, std::unordered_map<uint64_t, Connection*> conns, const uint32_t timer) {
|
||||
static int outs = 0;
|
||||
static Timestamp last = 0;
|
||||
while (!m_output_vector.empty()) {
|
||||
Output out = m_output_vector.front();
|
||||
for (auto& [key, conn] : conns) {
|
||||
if (m_playinfo.id == conn->GetHash(true))
|
||||
if (m_playinfo.id == conn->GetHash(false))
|
||||
continue;
|
||||
//std::cout << m_playinfo.id << ": " << m_playinfo.name << ": " << conn->GetName() << std::endl;
|
||||
//std::cout << out.id << ": " << out.position << std::endl;
|
||||
|
||||
sendPackTo<Output>(sock, &out, &m_bufout, conn->getAddr());
|
||||
}
|
||||
++outs;
|
||||
@@ -110,9 +118,17 @@ Timestamp Connection::Run(World* world) {
|
||||
if (m_input_manifest.size() < 2)
|
||||
return tstamp;
|
||||
|
||||
while (m_last_in < m_input_manifest.size()) {
|
||||
in = m_input_manifest.at(m_last_in + 1);
|
||||
last = m_input_manifest.at(m_last_in);
|
||||
while (m_last_in < m_input_vector.size() - 1) {
|
||||
in = m_input_vector.at(m_last_in + 1);
|
||||
last = m_input_vector.at(m_last_in);
|
||||
|
||||
el = (double)(in.timestamp - last.timestamp) / 1000.;
|
||||
|
||||
if (m_shoot_acc > 0.) {
|
||||
m_shoot_acc -= el;
|
||||
if (m_shoot_acc < 0.)
|
||||
m_shoot_acc = 0;
|
||||
}
|
||||
|
||||
player->SetDirection(in.direction);
|
||||
player->ApplyPhysics(player->GetInput(in.keys.forward,
|
||||
@@ -150,10 +166,10 @@ Timestamp Connection::Run(World* world) {
|
||||
}
|
||||
|
||||
void Connection::CleanInputManifest(Timestamp time) {
|
||||
auto wat = m_input_manifest.find(time);
|
||||
// auto wat = m_input_manifest.find(time);
|
||||
|
||||
while (wat != m_input_manifest.begin())
|
||||
m_input_manifest.erase(wat--);
|
||||
// while (wat != m_input_manifest.begin())
|
||||
// m_input_manifest.erase(wat--);
|
||||
}
|
||||
|
||||
Timestamp Connection::GetTStamp() const { return m_tstamp; }
|
||||
|
Reference in New Issue
Block a user