1
This commit is contained in:
parent
6b3926a88d
commit
41c3bd0ba9
@ -28,51 +28,102 @@ void CustomBattle::ParseResult(a8::XObject& obj)
|
|||||||
start_time_ = obj.Get("start_time");
|
start_time_ = obj.Get("start_time");
|
||||||
sign_ = obj.Get("sign").GetString();
|
sign_ = obj.Get("sign").GetString();
|
||||||
|
|
||||||
auto team_list = obj.At("team_list");
|
{
|
||||||
if (!team_list || !team_list->IsArray()) {
|
auto team_list = obj.At("team_list");
|
||||||
parse_ok_ = false;
|
if (!team_list || !team_list->IsArray()) {
|
||||||
return;
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int i = 0;i < team_list->Size(); ++i) {
|
||||||
|
auto team_obj = team_list->At(i);
|
||||||
|
if (!team_obj || !team_obj->IsObject()) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::string team_uuid = team_obj->Get("team_uuid").GetString();
|
||||||
|
int is_view = team_obj->Get("is_view").GetInt();
|
||||||
|
auto member_list = team_obj->At("members");
|
||||||
|
if (!member_list ||
|
||||||
|
!member_list->IsArray()) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto team = GetTeamByTeamUuid(team_uuid);
|
||||||
|
if (!team) {
|
||||||
|
team = std::make_shared<CustomTeam>();
|
||||||
|
team->team_uuid_ = team_uuid;
|
||||||
|
team->is_view_ = is_view ? true : false;
|
||||||
|
uuid_hash_[team->team_uuid_] = team;
|
||||||
|
}
|
||||||
|
for (int ii = 0; ii < member_list->Size(); ++ii) {
|
||||||
|
auto member_obj = member_list->At(ii);
|
||||||
|
if (!member_obj || !member_obj->IsObject()) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto member = std::make_shared<CustomMember>();
|
||||||
|
member->team_ = 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<BattleDataContext>();
|
||||||
|
member->battle_context_->ParseResult(*member_obj);
|
||||||
|
if (!member->battle_context_->parse_ok) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
member_id_hash_[member->account_id_] = member;
|
||||||
|
team->member_hash_[member->account_id_] = member;
|
||||||
|
account_hash_[member->account_id_] = team;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0;i < team_list->Size(); ++i) {
|
{
|
||||||
auto team_obj = team_list->At(i);
|
auto ob_list = obj.At("ob_list");
|
||||||
if (!team_obj || !team_obj->IsObject()) {
|
for (int i = 0;i < ob_list->Size(); ++i) {
|
||||||
parse_ok_ = false;
|
auto team_obj = ob_list->At(i);
|
||||||
return;
|
if (!team_obj || !team_obj->IsObject()) {
|
||||||
}
|
|
||||||
std::string team_uuid = team_obj->Get("team_uuid").GetString();
|
|
||||||
int is_view = team_obj->Get("is_view").GetInt();
|
|
||||||
auto member_list = team_obj->At("members");
|
|
||||||
if (!member_list ||
|
|
||||||
!member_list->IsArray()) {
|
|
||||||
parse_ok_ = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto team = GetTeamByTeamUuid(team_uuid);
|
|
||||||
if (!team) {
|
|
||||||
team = std::make_shared<CustomTeam>();
|
|
||||||
team->team_uuid_ = team_uuid;
|
|
||||||
team->is_view_ = is_view ? true : false;
|
|
||||||
uuid_hash_[team->team_uuid_] = team;
|
|
||||||
}
|
|
||||||
for (int ii = 0; ii < member_list->Size(); ++ii) {
|
|
||||||
auto member_obj = member_list->At(ii);
|
|
||||||
if (!member_obj || !member_obj->IsObject()) {
|
|
||||||
parse_ok_ = false;
|
parse_ok_ = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto member = std::make_shared<CustomMember>();
|
std::string team_uuid = team_obj->Get("team_uuid").GetString();
|
||||||
member->team_ = team.get();
|
int is_view = team_obj->Get("is_view").GetInt();
|
||||||
member->account_id_ = member_obj->Get("account_id").GetString();
|
auto member_list = team_obj->At("members");
|
||||||
member->session_id_ = member_obj->Get("session_id").GetString();
|
if (!member_list ||
|
||||||
member->battle_context_ = std::make_shared<BattleDataContext>();
|
!member_list->IsArray()) {
|
||||||
member->battle_context_->ParseResult(*member_obj);
|
|
||||||
if (!member->battle_context_->parse_ok) {
|
|
||||||
parse_ok_ = false;
|
parse_ok_ = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
member_id_hash_[member->account_id_] = member;
|
auto team = GetTeamByTeamUuid(team_uuid);
|
||||||
team->member_hash_[member->account_id_] = member;
|
if (!team) {
|
||||||
account_hash_[member->account_id_] = team;
|
team = std::make_shared<CustomTeam>();
|
||||||
|
team->team_uuid_ = team_uuid;
|
||||||
|
team->is_view_ = is_view ? true : false;
|
||||||
|
uuid_hash_[team->team_uuid_] = team;
|
||||||
|
}
|
||||||
|
for (int ii = 0; ii < member_list->Size(); ++ii) {
|
||||||
|
auto member_obj = member_list->At(ii);
|
||||||
|
if (!member_obj || !member_obj->IsObject()) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto member = std::make_shared<CustomMember>();
|
||||||
|
member->team_ = 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<BattleDataContext>();
|
||||||
|
member->battle_context_->ParseResult(*member_obj);
|
||||||
|
if (!member->battle_context_->parse_ok) {
|
||||||
|
parse_ok_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
member_id_hash_[member->account_id_] = member;
|
||||||
|
team->member_hash_[member->account_id_] = member;
|
||||||
|
account_hash_[member->account_id_] = team;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,3 +16,8 @@ void CustomTeam::TraverseMember(std::function<bool (std::shared_ptr<CustomMember
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CustomTeam::GetMemberNum()
|
||||||
|
{
|
||||||
|
return member_hash_.size();
|
||||||
|
}
|
||||||
|
@ -9,6 +9,7 @@ class CustomTeam
|
|||||||
std::shared_ptr<CustomMember> GetMember(const std::string& account_id);
|
std::shared_ptr<CustomMember> GetMember(const std::string& account_id);
|
||||||
bool IsView() { return is_view_; }
|
bool IsView() { return is_view_; }
|
||||||
void TraverseMember(std::function<bool (std::shared_ptr<CustomMember>)> cb);
|
void TraverseMember(std::function<bool (std::shared_ptr<CustomMember>)> cb);
|
||||||
|
int GetMemberNum();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string team_uuid_;
|
std::string team_uuid_;
|
||||||
|
@ -2787,6 +2787,7 @@ int Room::InitWithCustomBattle(long ip_saddr, int socket_handle, std::shared_ptr
|
|||||||
for (size_t i = 0; i < net_teams.size(); ++i) {
|
for (size_t i = 0; i < net_teams.size(); ++i) {
|
||||||
auto net_team = net_teams.at(i);
|
auto net_team = net_teams.at(i);
|
||||||
auto room_team = room_teams.at(i);
|
auto room_team = room_teams.at(i);
|
||||||
|
room_team->SetInitTeamMemberNum(net_team->GetMemberNum());
|
||||||
net_team->TraverseMember
|
net_team->TraverseMember
|
||||||
(
|
(
|
||||||
[join_msg, p, room_team] (std::shared_ptr<CustomMember> m) mutable -> bool
|
[join_msg, p, room_team] (std::shared_ptr<CustomMember> m) mutable -> bool
|
||||||
|
Loading…
x
Reference in New Issue
Block a user