From 0c6b8a22eef5cb02306130ee20a4b087b81c3c29 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 May 2023 22:27:30 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/Param.cc | 1 + server/gameserver/mt/Param.h | 1 + server/gameserver/room.cc | 11 +++++++++++ server/gameserver/room.h | 2 ++ server/gameserver/sandtable.cc | 17 +++++++++++++++++ server/gameserver/sandtable.h | 1 + 6 files changed, 33 insertions(+) diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 2503e70d..d1b938c0 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -38,6 +38,7 @@ namespace mt s_.match_lock_time = GetIntParam("match_lock_time", 0); s_.pickup_weapon_replace_type = GetIntParam("pickup_weapon_replace_type", 0); s_.sand_table_move_speed = GetIntParam("sand_table_move_speed", 500); + s_.wait_cloud_time = GetIntParam("wait_cloud_time", 10); #if 1 s_.match_lock_time++; #endif diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 71bfef5e..ea3223d5 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -100,6 +100,7 @@ namespace mt int compose_mode = 1; float sand_table_move_speed = 500; + float wait_cloud_time = 3; }; static void StaticPostInit(); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 91041fb6..264b760f 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1313,6 +1313,7 @@ void Room::UpdateGasInactivePvp() }); NotifyUiUpdate(); NotifyGameStart(); + sand_table_->OnGameStart(); } else { ShuaPlane(); RoomMgr::Instance()->ActiveRoom(GetRoomUuid()); @@ -3856,3 +3857,13 @@ bool Room::HasRoomSwitch(int tag) { return a8::HasBitFlag(room_switch_, tag); } + +void Room::OpenRoomSwitch(int tag) +{ + a8::SetBitFlag(room_switch_, tag); +} + +void Room::CloseRoomSwitch(int tag) +{ + a8::UnSetBitFlag(room_switch_, tag); +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 2e94eb36..6dfc2a08 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -248,6 +248,8 @@ public: void CombineTeam(); void FillTeam(); bool HasRoomSwitch(int tag); + void OpenRoomSwitch(int tag); + void CloseRoomSwitch(int tag); private: void ShuaAndroid(); diff --git a/server/gameserver/sandtable.cc b/server/gameserver/sandtable.cc index 94bac846..765df1eb 100644 --- a/server/gameserver/sandtable.cc +++ b/server/gameserver/sandtable.cc @@ -3,8 +3,12 @@ #include "sandtable.h" #include "room.h" +#include "mt/Param.h" + SandTable::SandTable(Room* room): room_(room) { + room->OpenRoomSwitch(kRoomSwitchDisableUseSkill); + room->OpenRoomSwitch(kRoomSwitchDisableUseItem); int lock_time = std::max(0, (int)room->GetGasInactiveTime() - 10); room->xtimer.SetTimeoutEx (SERVER_FRAME_RATE * lock_time, @@ -18,3 +22,16 @@ SandTable::SandTable(Room* room): room_(room) }, &room->xtimer_attacher_); } + +void SandTable::OnGameStart() +{ + room_->xtimer.SetTimeoutEx + (SERVER_FRAME_RATE * mt::Param::s().wait_cloud_time, + [room = room_] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + + } + }, + &room_->xtimer_attacher_); +} diff --git a/server/gameserver/sandtable.h b/server/gameserver/sandtable.h index 53c09123..e35895d0 100644 --- a/server/gameserver/sandtable.h +++ b/server/gameserver/sandtable.h @@ -14,6 +14,7 @@ class SandTable SandTable(Room* room); void FillMFSandTable(cs::SMUpdate* msg, Human* hum, FrameData* framedata); + void OnGameStart(); private: Room* room_ = nullptr;