From 5b91b5bfdfb1ad0a736938489342ff47ff532cfd Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 1 Apr 2019 19:15:59 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 10 +++++++++- server/gameserver/types.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index b10b2c0..4043eef 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -463,15 +463,23 @@ void Room::UpdateGas() float distance = gas_data.old_area_meta->i->shrink_speed() * ((frame_no - gas_data.gas_start_frameno) * (1.0 / SERVER_FRAME_RATE)); gas_data.gas_progress = std::max(gas_data.rad_old - distance, gas_data.rad_new); +#if 0 + { +#else if (!(gas_data.pos_new == gas_data.pos_old)) { +#endif Vector2D p1 = gas_data.pos_new - gas_data.pos_old_bk; - if (std::abs(p1.Norm() - distance) <= 0.01f) { + gas_data.pre_pos_old = gas_data.pos_old; + if (p1.Norm() - distance <= 0.01f) { gas_data.pos_old = gas_data.pos_new; } else { Vector2D dir = p1; dir.Normalize(); gas_data.pos_old = gas_data.pos_old_bk + dir * distance; } + if (gas_data.rad_old - distance <= gas_data.rad_new) { + assert(gas_data.pos_new == gas_data.pos_old); + } } if (std::abs(gas_data.gas_progress - gas_data.rad_new) <= 0.001f) { int pre_area_id = gas_data.new_area_meta->i->id(); diff --git a/server/gameserver/types.h b/server/gameserver/types.h index 6c24a31..e41b00b 100755 --- a/server/gameserver/types.h +++ b/server/gameserver/types.h @@ -51,6 +51,7 @@ struct GasData GasMode_e gas_mode = GasInactive; Vector2D pos_old; Vector2D pos_old_bk; + Vector2D pre_pos_old; Vector2D pos_new; float rad_old = 0.0f; float rad_new = 0.0f;