game2006/server/gameserver/sandtable.cc
aozhiwei f5cbdeeb42 1
2023-05-23 13:46:48 +08:00

46 lines
1.5 KiB
C++

#include "precompile.h"
#include "sandtable.h"
#include "room.h"
#include "mt/Param.h"
SandTable::SandTable(Room* room): room_(room)
{
room->OpenRoomSwitch(kRoomSwitchDisableUseSkill);
room->OpenRoomSwitch(kRoomSwitchDisableUseItem);
room->OpenRoomSwitch(kRoomSwitchDisableShot);
int lock_time = std::max(0, (int)room->GetGasInactiveTime() - 10);
room->xtimer.SetTimeoutEx
(SERVER_FRAME_RATE * lock_time,
[room = room] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
room->LockRoom();
room->CombineTeam();
room->FillTeam();
}
},
&room->xtimer_attacher_);
}
void SandTable::OnGameStart()
{
room_->OpenRoomSwitch(kRoomSwitchDisableMove);
room_->OpenRoomSwitch(kRoomSwitchDisableUseSkill);
room_->OpenRoomSwitch(kRoomSwitchDisableUseItem);
room_->OpenRoomSwitch(kRoomSwitchDisableShot);
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->CloseRoomSwitch(kRoomSwitchDisableMove);
room->CloseRoomSwitch(kRoomSwitchDisableUseSkill);
room->CloseRoomSwitch(kRoomSwitchDisableUseItem);
room->CloseRoomSwitch(kRoomSwitchDisableShot);
}
},
&room_->xtimer_attacher_);
}