diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 3c14c17..194f8da 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -53,9 +53,7 @@ enum DoorState_e enum GasMode_e { GasInactive = 0, - GasWaiting = 1, - GasMoving = 2, - GasJump = 3 + GasStarted = 1, }; enum ActionType_e diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 790a131..1c1659d 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -10,11 +10,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) cs::SMUpdate* msg = new cs::SMUpdate; { Room* room = hum->room; - if (room->gas_data.gas_mode == GasJump) { - cs::MFPlane* p = msg->mutable_plane(); - TypeConvert::ToPb(room->plane.start_point, p->mutable_start_point()); - TypeConvert::ToPb(room->plane.end_point, p->mutable_end_point()); - } for (auto& itr : hum->new_objects) { itr->FillMFObjectFull(msg->add_full_objects()); } @@ -70,11 +65,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) if (room->frame_event.airdrops_.size() > 0) { *msg->mutable_airdrop() = room->frame_event.airdrops_.Get(0); } - if (room->gas_data.gas_mode == GasMoving) { - msg->set_gas_progress(room->gas_data.gas_progress); - TypeConvert::ToPb(room->gas_data.pos_old, msg->mutable_gas_pos_old()); - } - msg->set_alive_count(room->AliveCount()); } return msg; } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index f8049e7..7cec849 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1241,17 +1241,6 @@ void Human::FillMFGasData(cs::MFGasData* gas_data) long long duration = MetaMgr::Instance()->gas_inactive_time * SERVER_FRAME_RATE - (room->frame_no - room->gas_data.gas_start_frameno); gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000); - } else if (room->gas_data.gas_mode == GasJump) { - gas_data->set_duration(0); - } else if (room->gas_data.gas_mode == GasMoving) { - if (room->gas_data.new_area_meta->i->shrink_speed() > 0.01f) { - long long duration = (room->gas_data.old_area_meta->i->rad() - room->gas_data.new_area_meta->i->rad()) / - room->gas_data.new_area_meta->i->shrink_speed(); - ++duration; - gas_data->set_duration(++duration); - } else { - gas_data->set_duration(0); - } } else { if (room->gas_data.old_area_meta->i->wait_time() <= 0) { gas_data->set_duration(0); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 5d0470a..8c71159 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -233,7 +233,6 @@ void Player::UpdateUseItemIdx() void Player::UpdateSpectate() { if (room->gas_data.gas_mode == GasInactive || - room->gas_data.gas_mode == GasJump || a8::HasBitFlag(status, HS_Fly)) { spectate = false; return; @@ -339,7 +338,7 @@ void Player::Shot() } bullet_dir.Rotate(bullet_angle / 180.0f); room->frame_event.AddBullet(this, bullet_born_pos, bullet_dir, fly_distance); - if (room->BattleStarted() || room->gas_data.gas_mode == GasJump && !a8::HasBitFlag(status, HS_Jump)) { + if (room->BattleStarted()) { room->CreateBullet(this, curr_weapon, bullet_born_pos, bullet_dir, fly_distance); } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 082abdd..4efad87 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -781,14 +781,9 @@ void Room::UpdateGas() switch (gas_data.gas_mode) { case GasInactive: { -#if 0 - if (frame_no - gas_data.gas_start_frameno >= - 3 * SERVER_FRAME_RATE) { -#else if (frame_no - gas_data.gas_start_frameno >= MetaMgr::Instance()->gas_inactive_time * SERVER_FRAME_RATE) { -#endif - gas_data.gas_mode = GasJump; + gas_data.gas_mode = GasStarted; gas_data.gas_start_frameno = frame_no; if (human_hash_.size() < ROOM_MAX_PLAYER_NUM) { CreateAndroid(ROOM_MAX_PLAYER_NUM - human_hash_.size()); @@ -825,137 +820,6 @@ void Room::UpdateGas() } } break; - case GasJump: - { - a8::Vec2 len_vec = plane.dir * - ((frame_no - gas_data.gas_start_frameno)*airline_->i->plane_speed() / SERVER_FRAME_RATE); - plane.curr_pos = plane.start_point + len_vec; - if ((plane.end_point - plane.start_point).Norm() <= len_vec.Norm()) { - TouchHumanList( - a8::XParams(), - [] (Human* hum, a8::XParams& param) -> bool - { - if (a8::HasBitFlag(hum->status, HS_Fly)) { - hum->DoJump(); - } - if (hum->entity_subtype == EST_Player) { - GameLog::Instance()->GameStart((Player*)hum); - } - return true; - }); - 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 = gas_data.old_area_meta->i->rad(); - gas_data.gas_start_frameno = frame_no; - gas_data.pos_old = a8::Vec2(MAP_WIDTH / 2.0f, - MAP_HEIGHT / 2.0f); - gas_data.pos_old_bk = gas_data.pos_old; - { - bool gen_ok = GenSmallCircle(gas_data.pos_old, - gas_data.old_area_meta->i->rad(), - gas_data.new_area_meta->i->rad(), - gas_data.pos_new); - assert(gen_ok); - } - gas_data.rad_old = gas_data.old_area_meta->i->rad(); - gas_data.rad_new = gas_data.new_area_meta->i->rad(); - battle_start_frameno_ = frame_no; - xtimer.DeleteTimer(auto_jump_timer_); - auto_jump_timer_ = nullptr; - } - } - break; - case GasWaiting: - { - 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_start_frameno = frame_no;; - } - } - break; - case GasMoving: - { - if (frame_no - gas_data.gas_start_frameno > 0 && !gas_data.is_last_gas) { - 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 - a8::Vec2 p1 = gas_data.pos_new - gas_data.pos_old_bk; - gas_data.pre_pos_old = gas_data.pos_old; - if (p1.Norm() - distance <= 0.01f) { - gas_data.pos_old = gas_data.pos_new; - } else { - a8::Vec2 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) { - #if 0 - assert(gas_data.pos_new == gas_data.pos_old); - #endif - } - } - if (std::abs(gas_data.gas_progress - gas_data.rad_new) <= 0.001f) { - int pre_area_id = gas_data.new_area_meta->i->id(); - a8::Vec2 pre_pos = gas_data.pos_new; - if (!MetaMgr::Instance()->GetSafeArea(pre_area_id + 1)) { - gas_data.is_last_gas = true; - return; - } - 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 = gas_data.old_area_meta->i->rad(); - gas_data.gas_start_frameno = frame_no; - gas_data.pos_old = pre_pos; - gas_data.pos_old_bk = gas_data.pos_old; - { - bool gen_ok = GenSmallCircle(gas_data.pos_old, - gas_data.old_area_meta->i->rad(), - gas_data.new_area_meta->i->rad(), - gas_data.pos_new); - assert(gen_ok); - } - gas_data.rad_old = gas_data.old_area_meta->i->rad(); - gas_data.rad_new = gas_data.new_area_meta->i->rad(); - } - } - } - break; - } - if (gas_data.gas_mode != GasInactive && gas_data.gas_mode != GasJump) { - if (!game_over && alive_count_ <= 1) { - game_over = true; - game_over_frameno = frame_no; - OnGameOver(); - } - for (auto& pair : human_hash_) { - if (pair.second->dead) { - continue; - } - bool b1 = a8::CircleContainCircle(gas_data.pos_old, - gas_data.gas_progress, - pair.second->pos, - pair.second->GetRadius() - ); - bool b2 = a8::CircleContainCircle(gas_data.pos_new, - gas_data.rad_new, - pair.second->pos, - pair.second->GetRadius() - ); - if (!b1 && !b2) { - pair.second->poisoning = true; - } else { - pair.second->poisoning = false; - pair.second->poisoning_time = false; - } - } } } diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 52a3af1..9e901d8 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -422,11 +422,9 @@ message MFGasData { /* 0: 进入战前准备 - 3:跳伞状态 - 1: 辐射区将在多少时间后扩大 - 2: 辐射区正在扩大 + 1: 开始战斗 */ - optional int32 mode = 1; //0:inactive 1:waiting 2:moving 3:jump + optional int32 mode = 1; //0:inactive 1:started optional float duration = 2; //持续时间(秒) optional MFVector2D pos_old = 3; //前一个圆心 optional MFVector2D pos_new = 4; //新圆心