From dd19a2b4029065233c3bdc130e48a528208cf125 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 1 Apr 2019 16:18:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=AF=92=E5=9C=88=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index cd6fb3b..b98ede1 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -431,7 +431,7 @@ void Room::UpdateGas() gas_data.gas_mode = GasWaiting; gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001); gas_data.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002); - gas_data.gas_progress = 0.0f; + gas_data.gas_progress = gas_data.old_area_meta->i->rad(); gas_data.gas_start_frameno = frame_no; gas_data.pos_old = Vector2D(map_meta->i->width() / 2.0f, map_meta->i->height() / 2.0f); @@ -452,7 +452,6 @@ void Room::UpdateGas() if (frame_no - gas_data.gas_start_frameno >= gas_data.old_area_meta->i->wait_time() * SERVER_FRAME_RATE) { gas_data.gas_mode = GasMoving; - gas_data.gas_progress = 0.0f; gas_data.gas_start_frameno = frame_no;; } } @@ -460,12 +459,10 @@ void Room::UpdateGas() case GasMoving: { if (frame_no - gas_data.gas_start_frameno > 0 && !gas_data.is_last_gas) { - float total_distance = gas_data.rad_old - gas_data.rad_new + - (gas_data.pos_old - gas_data.pos_new).Norm(); 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::min(total_distance - distance, 0.0f); - if (distance >= total_distance) { + gas_data.gas_progress = std::max(gas_data.rad_old - distance, gas_data.rad_new); + if (std::abs(gas_data.gas_progress - gas_data.rad_new) <= 0.001f) { int pre_area_id = gas_data.new_area_meta->i->id(); Vector2D pre_pos = gas_data.pos_new; if (!MetaMgr::Instance()->GetSafeArea(pre_area_id + 1)) { @@ -475,7 +472,7 @@ void Room::UpdateGas() gas_data.gas_mode = GasWaiting; gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id); gas_data.new_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id + 1); - gas_data.gas_progress = 0.0f; + gas_data.gas_progress = gas_data.old_area_meta->i->rad(); gas_data.gas_start_frameno = frame_no; gas_data.pos_old = pre_pos; {