46 lines
1.5 KiB
C++
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_);
|
|
}
|