1
This commit is contained in:
parent
40f80c2bd5
commit
c9cd7f7947
@ -1756,7 +1756,7 @@ void Human::SendGameOver()
|
|||||||
sent_personal_report_ = true;
|
sent_personal_report_ = true;
|
||||||
}
|
}
|
||||||
if (GetTeam()->team_rank && GetTeam()->HasPlayer() && !GetTeam()->IsViewTeam() &&
|
if (GetTeam()->team_rank && GetTeam()->HasPlayer() && !GetTeam()->IsViewTeam() &&
|
||||||
stats->abandon_battle != 1) {
|
stats->abandon_battle != 1 && !room->IsMobaModeRoom()) {
|
||||||
GetTeam()->TrySendTeamBattleReport(this);
|
GetTeam()->TrySendTeamBattleReport(this);
|
||||||
} else {
|
} else {
|
||||||
cs::SMGameOver msg;
|
cs::SMGameOver msg;
|
||||||
|
@ -2207,6 +2207,69 @@ void Room::AddObjectLater(RoomEntity* entity)
|
|||||||
&entity->xtimer_attacher);
|
&entity->xtimer_attacher);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Room::TryMobaReport(int try_count)
|
||||||
|
{
|
||||||
|
if (!IsMobaModeRoom()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sending_moba_report_battle_) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (already_moba_report_battle_) {
|
||||||
|
return;;
|
||||||
|
}
|
||||||
|
sending_moba_report_battle_ = true;
|
||||||
|
Player* player = nullptr;
|
||||||
|
TraversePlayerList
|
||||||
|
(
|
||||||
|
[&player] (Player* hum) -> bool
|
||||||
|
{
|
||||||
|
player = hum;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
if (!player) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::string url;
|
||||||
|
JsonDataMgr::Instance()->GetApiUrl(url);
|
||||||
|
if (url.find('?') != std::string::npos) {
|
||||||
|
url += "c=Battle&a=mobaTeamReport";
|
||||||
|
} else {
|
||||||
|
url += "?c=Battle&a=mobaTeamReport";
|
||||||
|
}
|
||||||
|
std::shared_ptr<a8::MutableXObject> params = a8::MutableXObject::CreateObject();
|
||||||
|
std::shared_ptr<a8::MutableXObject> post_data = a8::MutableXObject::CreateObject();
|
||||||
|
params->SetVal("account_id", player->account_id);
|
||||||
|
params->SetVal("session_id", player->session_id);
|
||||||
|
GenBattleMobaReportData(post_data.get());
|
||||||
|
std::string content = post_data->ToJsonStr();
|
||||||
|
HttpProxy::Instance()->HttpPost
|
||||||
|
(
|
||||||
|
[room_uuid = GetRoomUuid()]
|
||||||
|
(bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx)
|
||||||
|
{
|
||||||
|
auto room = RoomMgr::Instance()->GetRoomByUuid(room_uuid);
|
||||||
|
if (room) {
|
||||||
|
room->already_moba_report_battle_ = true;
|
||||||
|
room->sending_moba_report_battle_ = false;
|
||||||
|
room->TraverseHumanList
|
||||||
|
(
|
||||||
|
[] (Human* ele_hum) -> bool
|
||||||
|
{
|
||||||
|
ele_hum->SendGameOver();
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
url.c_str(),
|
||||||
|
*params.get(),
|
||||||
|
content
|
||||||
|
);
|
||||||
|
#ifdef MYDEBUG
|
||||||
|
a8::XPrintf("MobaReportReportLen:%d\n", {params->ToJsonStr().size()});
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void Room::OnGameOver()
|
void Room::OnGameOver()
|
||||||
{
|
{
|
||||||
if (IsAlreadyRoomReportBattle() ||
|
if (IsAlreadyRoomReportBattle() ||
|
||||||
@ -2228,6 +2291,9 @@ void Room::OnGameOver()
|
|||||||
ele_hum->SendGameOver();
|
ele_hum->SendGameOver();
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
if (IsMobaModeRoom()) {
|
||||||
|
TryMobaReport(0);
|
||||||
|
}
|
||||||
xtimer.SetIntervalEx
|
xtimer.SetIntervalEx
|
||||||
(SERVER_FRAME_RATE / 0.5,
|
(SERVER_FRAME_RATE / 0.5,
|
||||||
[this, frameno = GetFrameNo()] (int event, const a8::Args* args)
|
[this, frameno = GetFrameNo()] (int event, const a8::Args* args)
|
||||||
@ -3961,6 +4027,27 @@ void Room::GenBattleRoomReportData(a8::MutableXObject* params)
|
|||||||
params->SetVal("team_list", *teams_pb);
|
params->SetVal("team_list", *teams_pb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Room::GenBattleMobaReportData(a8::MutableXObject* params)
|
||||||
|
{
|
||||||
|
params->SetVal("version", 2023030201);
|
||||||
|
params->SetVal("room_uuid", a8::XValue(GetRoomUuid()));
|
||||||
|
params->SetVal("room_mode", GetReportRoomMode());
|
||||||
|
params->SetVal("map_mode", GetReportMapMode());
|
||||||
|
params->SetVal("map_id", GetMapMeta()->map_id());
|
||||||
|
auto teams_pb = a8::MutableXObject::CreateArray();
|
||||||
|
TraverseTeams
|
||||||
|
(
|
||||||
|
[&teams_pb] (Team* team) -> bool
|
||||||
|
{
|
||||||
|
auto team_pb = a8::MutableXObject::CreateObject();
|
||||||
|
team->GenBattleReportData(team_pb.get());
|
||||||
|
teams_pb->Push(*team_pb);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
params->SetVal("team_list", *teams_pb);
|
||||||
|
}
|
||||||
|
|
||||||
void Room::StartOverTimer()
|
void Room::StartOverTimer()
|
||||||
{
|
{
|
||||||
int param1 = 1;
|
int param1 = 1;
|
||||||
|
@ -375,7 +375,9 @@ private:
|
|||||||
void IncAliveCount();
|
void IncAliveCount();
|
||||||
void DecAliveCount();
|
void DecAliveCount();
|
||||||
void GenBattleRoomReportData(a8::MutableXObject* params);
|
void GenBattleRoomReportData(a8::MutableXObject* params);
|
||||||
|
void GenBattleMobaReportData(a8::MutableXObject* params);
|
||||||
void TryRoomReport(int try_count);
|
void TryRoomReport(int try_count);
|
||||||
|
void TryMobaReport(int try_count);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool destorying_ = false;
|
bool destorying_ = false;
|
||||||
@ -389,6 +391,10 @@ private:
|
|||||||
RoomType_e room_type_ = RoomType_NewBrid;
|
RoomType_e room_type_ = RoomType_NewBrid;
|
||||||
bool already_room_report_battle_ = false;
|
bool already_room_report_battle_ = false;
|
||||||
bool sending_room_report_battle_ = false;
|
bool sending_room_report_battle_ = false;
|
||||||
|
|
||||||
|
bool already_moba_report_battle_ = false;
|
||||||
|
bool sending_moba_report_battle_ = false;
|
||||||
|
|
||||||
long long moba_overtime_race_frameno_ = 0;
|
long long moba_overtime_race_frameno_ = 0;
|
||||||
|
|
||||||
GasData gas_data_;
|
GasData gas_data_;
|
||||||
|
@ -205,7 +205,7 @@ void Team::SendTeamBattleReport(Human* sender)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::shared_ptr<a8::MutableXObject> post_data = a8::MutableXObject::CreateObject();
|
std::shared_ptr<a8::MutableXObject> post_data = a8::MutableXObject::CreateObject();
|
||||||
GenBattleReportData(player, post_data.get());
|
GenBattleReportData(post_data.get());
|
||||||
#ifdef MYDEBUG
|
#ifdef MYDEBUG
|
||||||
a8::XPrintf("SendTeamBattleReport:%s\n", {post_data->ToJsonStr()});
|
a8::XPrintf("SendTeamBattleReport:%s\n", {post_data->ToJsonStr()});
|
||||||
#endif
|
#endif
|
||||||
@ -273,7 +273,7 @@ void Team::SendTeamBattleReport(Human* sender)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Team::GenBattleReportData(Human* player, a8::MutableXObject* params)
|
void Team::GenBattleReportData(a8::MutableXObject* params)
|
||||||
{
|
{
|
||||||
params->SetVal("version", 2023030201);
|
params->SetVal("version", 2023030201);
|
||||||
params->SetVal("battle_uuid", a8::XValue(battle_uuid_));
|
params->SetVal("battle_uuid", a8::XValue(battle_uuid_));
|
||||||
@ -620,9 +620,12 @@ bool Team::AllIsDead()
|
|||||||
void Team::TrySendTeamBattleReport(Human* sender)
|
void Team::TrySendTeamBattleReport(Human* sender)
|
||||||
{
|
{
|
||||||
if (!sending_battlereport_ && !already_report_battle_) {
|
if (!sending_battlereport_ && !already_report_battle_) {
|
||||||
|
if (room->IsMobaModeRoom()) {
|
||||||
|
} else {
|
||||||
sending_battlereport_ = true;
|
sending_battlereport_ = true;
|
||||||
SendTeamBattleReport(sender);
|
SendTeamBattleReport(sender);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Team::GenRoomReportData(a8::MutableXObject* params)
|
void Team::GenRoomReportData(a8::MutableXObject* params)
|
||||||
|
@ -49,7 +49,7 @@ class Team : public std::enable_shared_from_this<Team>
|
|||||||
bool HasPlayer();
|
bool HasPlayer();
|
||||||
int GetPlayerNum();
|
int GetPlayerNum();
|
||||||
void FillSMGameOver(cs::SMGameOver& msg);
|
void FillSMGameOver(cs::SMGameOver& msg);
|
||||||
void GenBattleReportData(Human* player, a8::MutableXObject* params);
|
void GenBattleReportData(a8::MutableXObject* params);
|
||||||
void GenRoomReportData(a8::MutableXObject* params);
|
void GenRoomReportData(a8::MutableXObject* params);
|
||||||
void RunAway(Human* hum);
|
void RunAway(Human* hum);
|
||||||
bool AllIsRunAway();
|
bool AllIsRunAway();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user