Timer iznogoud.

This commit is contained in:
MarcEricMartel
2023-12-06 11:16:39 -05:00
parent 9c1cd885cf
commit c975265901
12 changed files with 118 additions and 54 deletions

View File

@@ -530,12 +530,12 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) {
glPushMatrix();
int timer = GetCountdown(elapsedTime);
for (int i = 1; i < WORLD_SIZE_X; i++) {
/*for (int i = 1; i < WORLD_SIZE_X; i++) {
if (timer <= COUNTDOWN - m_timerReductionChunk * i) {
m_world.RemoveChunk(m_nbReductionChunk * i);
m_renderer.RemoveChunk(m_nbReductionChunk * i);
}
}
}*/
if (m_keyK) {
SystemNotification(m_messageNotification);
m_keyK = false;
@@ -663,8 +663,8 @@ int Engine::GetCountdown(float elapsedTime) {
m_countdown = m_time + COUNTDOWN;
m_resetcountdown = false;
}
if (m_countdown < m_time)
Stop();
if (m_countdown < m_time) {}
//Stop();
if (!m_stopcountdown)
m_time += elapsedTime;
return m_countdown - (int)m_time;
@@ -1409,10 +1409,12 @@ void Engine::Render(float elapsedTime) {
sendPackTo<Input>(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr);
std::cout << ".";
lsPck = recvPacks(m_conn.m_sock_udp, &m_buf);
char* prevptr = nullptr;
for (auto& pck : lsPck) { // We could make a few threads out of this.
Sync sync; Output out; ChunkMod cmod; BulletAdd bull;
Sync sync; Output out; ChunkMod cmod; BulletAdd bull; Chat chat;
if (!prevptr)
prevptr = m_buf.ptr;
uint32_t bsize = m_buf.len - (pck - prevptr);
@@ -1420,9 +1422,10 @@ void Engine::Render(float elapsedTime) {
switch (getType(pck, 1)) {
using enum PACKET_TYPE;
case SYNC:
std::cout << "snyc";
if (Deserialize(&sync, pck, &bsize)) {
if (sync.sid != m_conn.getId()) {
std::cout << "syncsid be no good.";
SystemNotification("syncsid be no good.");
break;
}
if (m_syncs.count(sync.timestamp)) {
@@ -1439,18 +1442,18 @@ void Engine::Render(float elapsedTime) {
m_player.Move(-diff);
}
// TODO: Syncer sync.timer avec le timer
m_countdown = sync.timer;
m_syncs.erase(sync.timestamp);
}
else std::cout << "sync be no good.";
else SystemNotification("sync be no good.");
}
break;
case OUTPUT:
std::cout << "out";
if (Deserialize(&out, pck, &bsize)) {
if (!m_players.contains(out.id)) {
std::cout << out.id << " is id no good." << std::endl;
SystemNotification(std::to_string(out.id).append(" is id no good."));
break;
}
RemotePlayer* rt = static_cast<RemotePlayer*>(m_players[out.id]);
@@ -1458,6 +1461,7 @@ void Engine::Render(float elapsedTime) {
}
break;
case CHUNKMOD:
std::cout << "cmod";
if (Deserialize(&cmod, pck, &bsize)) {
if (!std::erase_if(m_chunkmod_manifest, // Efface le chunkmod du manifeste s'il est dedans et reset le countdown, sinon fait la modification.
[cmod](ChunkMod* c) {
@@ -1468,10 +1472,12 @@ void Engine::Render(float elapsedTime) {
m_world.ChangeBlockAtPosition(cmod.b_type, cmod.pos);
else cmod_acc = 0;
}
else SystemNotification("cmod iznogoud.");
break;
case BULLET:
std::cout << "pow";
if (Deserialize(&bull, pck, &bsize)) {
Bullet* bult = new Bullet(bull.pos, bull.dir, bull.id);
Bullet* bult = new Bullet(bull.pos, bull.dir);
for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow").
if (!m_bullets[x]) {
m_bullets[x] = bult;
@@ -1483,14 +1489,23 @@ void Engine::Render(float elapsedTime) {
}
m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir * 10, false, .5f);
}
else SystemNotification("Bullet is kraput.");
break;
case CHAT:
std::cout << "cat";
if (Deserialize(&chat, pck, &bsize))
SystemNotification(chat.mess);
else SystemNotification("Chat iznogoud.");
break;
default:
std::cout << "packet be no good.";
std::cout << "wtf";
SystemNotification("packet be no good.");
break;
}
}
lsPck.clear();
glDisable(GL_CULL_FACE);
for (auto& [key, player] : m_players) {
RemotePlayer* rt = static_cast<RemotePlayer*>(player);
@@ -1607,6 +1622,8 @@ void Engine::KeyPressEvent(unsigned char key) {
}
break;
case 36: // ESC - Quitter
if (m_networkgame)
break;
if (m_gamestate == GameState::PLAY) {
m_gamestate = GameState::PAUSE;
}

View File

@@ -99,7 +99,7 @@ private:
BlockInfo* m_blockinfo[BTYPE_LAST];
BoostInfo* m_boostinfo[BTYPE_BOOST_LAST];
GameState m_gamestate = GameState::SPLASH;
GameState m_gamestate = GameState::PLAY;
Shader m_shader01;