完成毒圈逻辑
This commit is contained in:
parent
b2bf05246e
commit
dd19a2b402
@ -431,7 +431,7 @@ void Room::UpdateGas()
|
|||||||
gas_data.gas_mode = GasWaiting;
|
gas_data.gas_mode = GasWaiting;
|
||||||
gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001);
|
gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001);
|
||||||
gas_data.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002);
|
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.gas_start_frameno = frame_no;
|
||||||
gas_data.pos_old = Vector2D(map_meta->i->width() / 2.0f,
|
gas_data.pos_old = Vector2D(map_meta->i->width() / 2.0f,
|
||||||
map_meta->i->height() / 2.0f);
|
map_meta->i->height() / 2.0f);
|
||||||
@ -452,7 +452,6 @@ void Room::UpdateGas()
|
|||||||
if (frame_no - gas_data.gas_start_frameno >=
|
if (frame_no - gas_data.gas_start_frameno >=
|
||||||
gas_data.old_area_meta->i->wait_time() * SERVER_FRAME_RATE) {
|
gas_data.old_area_meta->i->wait_time() * SERVER_FRAME_RATE) {
|
||||||
gas_data.gas_mode = GasMoving;
|
gas_data.gas_mode = GasMoving;
|
||||||
gas_data.gas_progress = 0.0f;
|
|
||||||
gas_data.gas_start_frameno = frame_no;;
|
gas_data.gas_start_frameno = frame_no;;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -460,12 +459,10 @@ void Room::UpdateGas()
|
|||||||
case GasMoving:
|
case GasMoving:
|
||||||
{
|
{
|
||||||
if (frame_no - gas_data.gas_start_frameno > 0 && !gas_data.is_last_gas) {
|
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() *
|
float distance = gas_data.old_area_meta->i->shrink_speed() *
|
||||||
((frame_no - gas_data.gas_start_frameno) * (1.0 / SERVER_FRAME_RATE));
|
((frame_no - gas_data.gas_start_frameno) * (1.0 / SERVER_FRAME_RATE));
|
||||||
gas_data.gas_progress = std::min(total_distance - distance, 0.0f);
|
gas_data.gas_progress = std::max(gas_data.rad_old - distance, gas_data.rad_new);
|
||||||
if (distance >= total_distance) {
|
if (std::abs(gas_data.gas_progress - gas_data.rad_new) <= 0.001f) {
|
||||||
int pre_area_id = gas_data.new_area_meta->i->id();
|
int pre_area_id = gas_data.new_area_meta->i->id();
|
||||||
Vector2D pre_pos = gas_data.pos_new;
|
Vector2D pre_pos = gas_data.pos_new;
|
||||||
if (!MetaMgr::Instance()->GetSafeArea(pre_area_id + 1)) {
|
if (!MetaMgr::Instance()->GetSafeArea(pre_area_id + 1)) {
|
||||||
@ -475,7 +472,7 @@ void Room::UpdateGas()
|
|||||||
gas_data.gas_mode = GasWaiting;
|
gas_data.gas_mode = GasWaiting;
|
||||||
gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id);
|
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.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.gas_start_frameno = frame_no;
|
||||||
gas_data.pos_old = pre_pos;
|
gas_data.pos_old = pre_pos;
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user