优化NotifyGameStart

This commit is contained in:
aozhiwei 2020-05-29 20:43:28 +08:00
parent c8e8c92889
commit a0de81fcf2
2 changed files with 60 additions and 50 deletions

View File

@ -1580,58 +1580,33 @@ void Room::NotifyGameStart()
cs::SMGameStart msg; cs::SMGameStart msg;
for (auto& pair : accountid_hash_) { for (auto& pair : accountid_hash_) {
pair.second->SendNotifyMsg(msg); pair.second->SendNotifyMsg(msg);
if (room_type_ == RT_NewBrid) {
first_newbie_ = pair.second;
}
} }
xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 1,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
room->ProcDisableHuman();
room->SecondRandPoint();
},
&xtimer_attacher_.timer_list_);
waiting_start_ = true; waiting_start_ = true;
xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 2, xtimer.AddDeadLineTimerAndAttach
a8::XParams() (SERVER_FRAME_RATE * 2,
.SetSender(this), a8::XParams()
[] (const a8::XParams& param) .SetSender(this),
{ [] (const a8::XParams& param)
Room* room = (Room*)param.sender.GetUserData(); {
room->waiting_start_ = false; Room* room = (Room*)param.sender.GetUserData();
}, room->waiting_start_ = false;
&xtimer_attacher_.timer_list_); },
if (room_type_ == RT_NewBrid) { &xtimer_attacher_.timer_list_);
xtimer.AddDeadLineTimerAndAttach xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * MetaMgr::Instance()->level0room_robot_protect_time, (SERVER_FRAME_RATE * 1,
a8::XParams() a8::XParams()
.SetSender(this), .SetSender(this),
[] (const a8::XParams& param) [] (const a8::XParams& param)
{ {
Room* room = (Room*)param.sender.GetUserData(); Room* room = (Room*)param.sender.GetUserData();
if (room->GetFirstNewBie()) { room->ProcDisableHuman();
room->GetFirstNewBie()->ProcNewBieLogic(); room->SecondRandPoint();
} },
}, &xtimer_attacher_.timer_list_);
&xtimer_attacher_.timer_list_);
} if (room_type == RT_NewBrid || room_type == RT_MidBrid) {
if (room_type_ == RT_MidBrid) { NewBieRoomStart();
xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * MetaMgr::Instance()->level1room_shua_robot_min_time,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
#if 0
room->ShuaAndroidTimerFunc();
#endif
room->DieAndroidTimerFunc();
},
&xtimer_attacher_.timer_list_);
} }
} }
@ -2454,3 +2429,37 @@ void Room::ForceSetBornPoint(Human* hum, BornPoint* born_point)
grid_service->MoveHuman(hum); grid_service->MoveHuman(hum);
} }
} }
void Room::NewBieRoomStart()
{
if (room_type_ == RT_NewBrid) {
for (auto& pair : accountid_hash_) {
first_newbie_ = pair.second;
break;
}
xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * MetaMgr::Instance()->level0room_robot_protect_time,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
if (room->GetFirstNewBie()) {
room->GetFirstNewBie()->ProcNewBieLogic();
}
},
&xtimer_attacher_.timer_list_);
}
if (room_type_ == RT_MidBrid) {
xtimer.AddDeadLineTimerAndAttach
(SERVER_FRAME_RATE * MetaMgr::Instance()->level1room_shua_robot_min_time,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
room->DieAndroidTimerFunc();
},
&xtimer_attacher_.timer_list_);
}
}

View File

@ -178,6 +178,7 @@ private:
void AddPlayerPostProc(Player* hum); void AddPlayerPostProc(Player* hum);
void CombineTeamBornPoint(); void CombineTeamBornPoint();
void ForceSetBornPoint(Human* hum, BornPoint* born_point); void ForceSetBornPoint(Human* hum, BornPoint* born_point);
void NewBieRoomStart();
#ifdef DEBUG #ifdef DEBUG
void InitDebugInfo(); void InitDebugInfo();