完成毒圈逻辑

This commit is contained in:
aozhiwei 2019-04-01 16:18:17 +08:00
parent b2bf05246e
commit dd19a2b402

View File

@ -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;
{