This commit is contained in:
aozhiwei 2024-04-17 17:13:27 +08:00
parent 32f2441a22
commit fd7ea313bc
4 changed files with 98 additions and 32 deletions

View File

@ -175,7 +175,9 @@ void FrameMaker::PostProcess(cs::SMUpdate* msg, Room* room, Human* hum, FrameDat
int left_time = room->GetMobaLeftTime();
msg->set_game_left_time(left_time);
}
room->GetSandTable()->FillMFSandTable(msg, hum, framedata);
if (room->SupportSandTable()) {
room->GetSandTable()->FillMFSandTable(msg, hum, framedata);
}
}
void FrameMaker::SerializeLootObjects(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata)

View File

@ -1565,39 +1565,95 @@ void Room::UpdateGasInactivePvp()
}
} else {
ShuaPlane();
RoomMgr::Instance()->ActiveRoom(GetRoomUuid());
if (IsNoPlane()) {
RoomMgr::Instance()->ActiveRoom(GetRoomUuid());
{
const mt::SafeArea* first_safearea = mt::SafeArea::GetByType
(map_meta_->RandSafeArea());
gas_data_.SetGasMode(GasWaiting);
gas_data_.old_area_meta = first_safearea;
gas_data_.new_area_meta = mt::SafeArea::GetById(first_safearea->id() + 1);
gas_data_.pos_list = mt::SafeAreaPos::RandSafeAreaPos(first_safearea->id());
gas_data_.gas_progress = gas_data_.old_area_meta->rad();
gas_data_.gas_start_frameno = GetFrameNo();
#if 1
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
auto_jump_timer_ = xtimer.SetIntervalWpEx
(SERVER_FRAME_RATE * auto_jump_interval + SERVER_FRAME_RATE * 3,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
AutoJump();
}
},
&xtimer_attacher_);
gas_data_.pos_old = glm::vec2(first_safearea->x1(),
first_safearea->y1());
#else
int auto_jump_interval_delay = mt::Param::GetIntParam("auto_jump_interval_delay");
xtimer.SetTimeoutEx
(
SERVER_FRAME_RATE * auto_jump_interval_delay,
[this] (int event, const a8::Args* args)
{
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
auto_jump_timer_ = xtimer.SetIntervalWpEx
(SERVER_FRAME_RATE * auto_jump_interval,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
AutoJump();
}
},
&xtimer_attacher_);
},
&xtimer_attacher_);
gas_data_.pos_old = map_meta_->first_safearea_center;
#endif
gas_data_.pos_old_bk = gas_data_.pos_old;
{
if (gas_data_.pos_list && !gas_data_.pos_list->_poses.empty()) {
gas_data_.pos_old = glm::vec2(
gas_data_.pos_list->_poses[0].x,
gas_data_.pos_list->_poses[0].z
);
gas_data_.pos_old_bk = gas_data_.pos_old;
}
bool gen_ok = GenSmallCircle();
if (!gen_ok) {
A8_ABORT();
}
}
gas_data_.rad_old = gas_data_.old_area_meta->rad();
gas_data_.rad_new = gas_data_.new_area_meta->rad();
if (map_meta_->init_gas_ring() > 0) {
ForwardGasRing(map_meta_->init_gas_ring());
}
}
TraverseHumanList
(
[] (Human* hum) -> bool
{
hum->RemoveBuffByEffectId(kBET_ThroughWall);
hum->OnLand();
if (hum->GetEntitySubType() == EST_Player) {
GameLog::Instance()->GameStart((Player*)hum);
}
return true;
});
NotifyUiUpdate();
NotifyGameStart();
sand_table_->OnGameStart();
if (custom_battle_) {
}
} else {
ShuaPlane();
RoomMgr::Instance()->ActiveRoom(GetRoomUuid());
#if 1
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
auto_jump_timer_ = xtimer.SetIntervalWpEx
(SERVER_FRAME_RATE * auto_jump_interval + SERVER_FRAME_RATE * 3,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
AutoJump();
}
},
&xtimer_attacher_);
#else
int auto_jump_interval_delay = mt::Param::GetIntParam("auto_jump_interval_delay");
xtimer.SetTimeoutEx
(
SERVER_FRAME_RATE * auto_jump_interval_delay,
[this] (int event, const a8::Args* args)
{
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
auto_jump_timer_ = xtimer.SetIntervalWpEx
(SERVER_FRAME_RATE * auto_jump_interval,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
AutoJump();
}
},
&xtimer_attacher_);
},
&xtimer_attacher_);
#endif
}
}
#ifdef MYDEBUG
a8::XPrintf("max_run_delay:%d %d\n", {PerfMonitor::Instance()->max_run_delay_time,
@ -3527,7 +3583,7 @@ void Room::ForceOver()
bool Room::SupportSandTable()
{
return true;
return map_meta_->support_sandtable();
}
void Room::OnAddHuman(Human* hum)
@ -4016,3 +4072,8 @@ void Room::SendRecentBattle()
{
}
bool Room::IsNoPlane()
{
return true;
}

View File

@ -306,6 +306,7 @@ public:
bool IsAlreadyRoomReportBattle() { return already_room_report_battle_; }
int GetReportMapMode();
void StartOverTimer();
bool IsNoPlane();
std::shared_ptr<InGameVoice> GetInGameVoice() { return ingame_voice_; }

View File

@ -253,8 +253,10 @@ void SelfChecker::Check()
void SelfChecker::AddBuff(int buff_id)
{
#if 0
if (!mt::Buff::GetById(buff_id)) {
abort();
}
#endif
used_buffs.insert(buff_id);
}