diff --git a/server/gameserver/custom_battle.cc b/server/gameserver/custom_battle.cc index 8c94db20..3b5ed6c5 100644 --- a/server/gameserver/custom_battle.cc +++ b/server/gameserver/custom_battle.cc @@ -18,6 +18,16 @@ void CustomBattle::Init() ob_team_ = std::make_shared(); ob_team_->team_uuid_ = ""; ob_team_->is_view_ = true; + f8::Timer::Instance()->SetIntervalEx + ( + 2000, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + NotifyState(); + } + }, + &timer_attacher); } void CustomBattle::UnInit() @@ -84,14 +94,11 @@ void CustomBattle::ParseResult(a8::XObject& obj) auto member = std::make_shared(); member->team_ = team.get(); member->account_id_ = member_obj->Get("account_id").GetString(); -#ifdef MYDEBUG1 - if (IsMoba()) { - member->account_id_ = member->account_id_ + "$$$$"; - } -#endif member->session_id_ = member_obj->Get("session_id").GetString(); member->name_ = member_obj->Get("name").GetString(); member->sex_ = member_obj->Get("sex"); + member->robot_id_ = member_obj->Get("robot_id"); + member->is_android_ = member_obj->Get("is_android"); member->avatar_url_ = member_obj->Get("head_id").GetString(); member->battle_context_ = std::make_shared(); member->battle_context_->ParseResult(*member_obj); @@ -102,24 +109,6 @@ void CustomBattle::ParseResult(a8::XObject& obj) member_id_hash_[member->account_id_] = member; team->member_hash_[member->account_id_] = member; account_hash_[member->account_id_] = team; -#ifdef MYDEBUG1 - if (IsMoba()) { - auto member = std::make_shared(); - member->team_ = ob_team_.get(); - member->account_id_ = member_obj->Get("account_id").GetString(); - member->session_id_ = member_obj->Get("session_id").GetString(); - member->name_ = member_obj->Get("name").GetString(); - member->sex_ = member_obj->Get("sex"); - member->battle_context_ = std::make_shared(); - member->battle_context_->ParseResult(*member_obj); - if (!member->battle_context_->parse_ok) { - parse_ok_ = false; - return; - } - account_hash_[member->account_id_] = ob_team_; - ob_id_hash_[member->account_id_] = member; - } -#endif } } } @@ -324,9 +313,12 @@ void CustomBattle::OnEnter(std::shared_ptr join_msg, long ip_saddr, ( a8::RandEx(mt::Param::s().battle_auto_ready_min_time, mt::Param::s().battle_auto_ready_max_time) * 1000, - [] (int event, const a8::Args* args) + [member] (int event, const a8::Args* args) { if (a8::TIMER_EXEC_EVENT == event) { + if (!member->is_ready_) { + member->GetTeam()->GetCustomBattle()->OnMemberReady(member.get()); + } } }, &timer_attacher); diff --git a/server/gameserver/custom_member.cc b/server/gameserver/custom_member.cc index 2f9f7afb..22b58b78 100644 --- a/server/gameserver/custom_member.cc +++ b/server/gameserver/custom_member.cc @@ -28,5 +28,5 @@ void CustomMember::_CMBattlePreSetReady(f8::MsgHdr* hdr, const cs::CMBattlePreSe bool CustomMember::IsAndroid() { - return false; + return is_android_ != 0; } diff --git a/server/gameserver/custom_member.h b/server/gameserver/custom_member.h index 40671608..75795c7d 100644 --- a/server/gameserver/custom_member.h +++ b/server/gameserver/custom_member.h @@ -49,6 +49,7 @@ private: int head_frame_ = 0; int sex_ = 0; int is_ready_ = 0; + int is_android_ = 0; int robot_id_ = 0; std::shared_ptr battle_context_; friend class CustomBattle;