Before the merge....
This commit is contained in:
@@ -2,20 +2,20 @@
|
||||
|
||||
|
||||
|
||||
Connection::Connection(SOCKET sock,
|
||||
sockaddr_in sockaddr,
|
||||
LoginInfo log,
|
||||
PlayerInfo play):
|
||||
m_sock(sock),
|
||||
m_addr(sockaddr),
|
||||
m_loginfo(log),
|
||||
Connection::Connection(SOCKET sock,
|
||||
sockaddr_in sockaddr,
|
||||
LoginInfo log,
|
||||
PlayerInfo play) :
|
||||
m_sock(sock),
|
||||
m_addr(sockaddr),
|
||||
m_loginfo(log),
|
||||
m_playinfo(play) {
|
||||
|
||||
}
|
||||
|
||||
Connection::~Connection() { closesocket(m_sock); }
|
||||
|
||||
uint64_t Connection::GetHash(bool self) const { return self? m_loginfo.sid: m_playinfo.id; }
|
||||
uint64_t Connection::GetHash(bool self) const { return self ? m_loginfo.sid : m_playinfo.id; }
|
||||
|
||||
uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; }
|
||||
|
||||
@@ -51,25 +51,25 @@ void Connection::getPacks(SOCKET sock) {
|
||||
std::vector<char*> lsPck;
|
||||
Input in;
|
||||
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)) {
|
||||
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 = 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)) {
|
||||
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();
|
||||
}
|
||||
lsPck.clear();
|
||||
}
|
||||
|
||||
void Connection::sendPacks(SOCKET sock, std::unordered_map<uint64_t, Connection*> conns, const uint32_t timer) {
|
||||
@@ -131,12 +131,12 @@ Timestamp Connection::Run(World* world) {
|
||||
}
|
||||
|
||||
player->SetDirection(in.direction);
|
||||
player->ApplyPhysics(player->GetInput(in.keys.forward,
|
||||
in.keys.backward,
|
||||
in.keys.left,
|
||||
in.keys.right,
|
||||
in.keys.jump, false, el), world, el);
|
||||
|
||||
player->ApplyPhysics(player->GetInput(in.keys.forward,
|
||||
in.keys.backward,
|
||||
in.keys.left,
|
||||
in.keys.right,
|
||||
in.keys.jump, false, el), world, el);
|
||||
|
||||
if (player->GetPosition().y < -10.) {
|
||||
player->InflictDamage(9000);
|
||||
player->Killer = GetHash(true);
|
||||
@@ -144,28 +144,34 @@ Timestamp Connection::Run(World* world) {
|
||||
|
||||
out.states.jumping = in.keys.jump;
|
||||
out.states.running = player->GetVelocity().Length() > .3f;
|
||||
|
||||
|
||||
if (player->AmIDead()) {
|
||||
in.keys.shoot = false;
|
||||
in.keys.block = false;
|
||||
out.states.dead = true;
|
||||
}
|
||||
|
||||
static bool toggle = false;
|
||||
if (in.keys.block) {
|
||||
bool block = false;
|
||||
ChunkMod* cmod = world->ChangeBlockAtCursor(BLOCK_TYPE::BTYPE_METAL,
|
||||
player->GetPosition(),
|
||||
player->GetDirection(),
|
||||
block, true);
|
||||
if (cmod)
|
||||
ChunkDiffs.emplace_back(cmod);
|
||||
if (!toggle) {
|
||||
toggle = true;
|
||||
bool block = false;
|
||||
ChunkMod* cmod = world->ChangeBlockAtCursor(BLOCK_TYPE::BTYPE_METAL,
|
||||
player->GetPosition(),
|
||||
player->GetDirection(),
|
||||
block, true);
|
||||
if (cmod)
|
||||
ChunkDiffs.emplace_back(cmod);
|
||||
}
|
||||
}
|
||||
else toggle = false;
|
||||
|
||||
if (in.keys.shoot && m_shoot_acc <= 0.) {
|
||||
Bullets.emplace_back(new Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection(), GetHash(true)));
|
||||
out.states.shooting = true;
|
||||
m_shoot_acc = BULLET_TIME;
|
||||
}
|
||||
|
||||
|
||||
out.position = player->GetPositionAbs();
|
||||
out.direction = in.direction;
|
||||
out.timestamp = in.timestamp;
|
||||
@@ -173,7 +179,7 @@ Timestamp Connection::Run(World* world) {
|
||||
m_output_manifest[out.timestamp] = out;
|
||||
m_output_vector.push_back(out);
|
||||
tstamp = out.timestamp;
|
||||
|
||||
|
||||
++m_last_in;
|
||||
}
|
||||
|
||||
@@ -181,10 +187,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