This commit is contained in:
aozhiwei 2024-05-30 17:31:29 +08:00
parent b104312a63
commit a12cddfe49
3 changed files with 10 additions and 192 deletions

View File

@ -911,6 +911,7 @@ void Human::UpdateMove()
Creature::UpdateMove();
}
#if 0
void Human::GenBattleReportData(a8::MutableXObject* params)
{
params->SetVal("room_mode", room->GetRoomMode());
@ -1162,7 +1163,7 @@ void Human::GenBattleReportData(a8::MutableXObject* params)
params->SetVal("__POST", post_data->ToJsonStr());
}
}
#endif
void Human::DeadDrop()
{
if (room->IsMobaModeRoom()) {

View File

@ -318,7 +318,6 @@ protected:
void DropWeapon(int weapon_idx, int num);
private:
void GenBattleReportData(a8::MutableXObject* params);
void FillSMGameOver(cs::SMGameOver& msg);
void SendBattleSettlement();
void SendPersonalBattleReport();

View File

@ -1131,203 +1131,14 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
msg.mutable_settlement_new()->set_box_payload(custom_data);
}
if (room->IsAlreadyRoomReportBattle()) {
msg.mutable_settlement_new()->set_settlement_status(1);
auto p = msg.mutable_settlement_new();
p->set_version(20230321);
p->set_team_id(GetTeam()->GetTeamId());
p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());
p->set_room_mode(room->GetReportRoomMode());
p->set_team_mode(1);
p->set_game_over(room->IsGameOver() ? 1 : 0);
p->set_victory(stats->victory ? 1 : 0);
p->set_watchable(false);
p->set_map_mode_id(room->GetMapModeMeta()->id());
p->set_map_mode(room->GetReportMapMode());
p->set_map_id(room->GetMapMeta()->map_id());
p->set_battle_uuid(GetTeam()->GetBattleUuid());
if (room->IsPveRoom()) {
p->set_pve_settlement_color(stats->settlement_color);
p->set_pve_wave(room->pve_data.GetPassedWave());
p->set_pve_max_wave(room->pve_data.max_wave);
p->set_pve_instance_id(room->pve_instance->gemini_id());
} else if (room->IsMobaModeRoom()) {
p->set_moba_my_team_kills(GetTeam()->GetKillCount());
if (room->GetMobaTeamA() == GetTeam()) {
p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount());
} else {
p->set_moba_enemy_team_kills(room->GetMobaTeamA()->GetKillCount());
}
} else {
p->set_pvp_settlement_type(stats->pvp_settlement_type);
p->set_pvp_settlement_color(stats->settlement_color);
p->set_pvp_team_rank(GetTeam()->team_rank);
p->set_pvp_total_human_num(room->GetHumanNum());
p->set_pvp_alive_human_num(room->AliveCount());
p->set_pvp_total_team_num(room->GetTeamNum());
p->set_pvp_match_mode(room->GetPvpMatchMode());
}
GetTeam()->FillMFSettlementNew(msg.mutable_settlement_new());
return;
} else {
msg.mutable_settlement_new()->set_settlement_status(0);
auto p = msg.mutable_settlement_new();
p->set_version(20230321);
p->set_team_id(GetTeam()->GetTeamId());
p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());
p->set_room_mode(room->GetReportRoomMode());
p->set_team_mode(1);
p->set_game_over(room->IsGameOver() ? 1 : 0);
p->set_victory(stats->victory ? 1 : 0);
{
int alive_team_num = room->GetAliveTeamNum();
if (stats->victory) {
p->set_watchable(false);
} else {
if (room->GetAliveTeamNum() > 1) {
p->set_watchable(true);
} else {
if (room->IsPveRoom()) {
p->set_watchable(!room->IsGameOver());
} else {
p->set_watchable(false);
}
}
}
}
p->set_map_mode_id(room->GetMapModeMeta()->id());
p->set_map_mode(room->GetReportMapMode());
p->set_map_id(room->GetMapMeta()->map_id());
p->set_battle_uuid(GetTeam()->GetBattleUuid());
if (room->IsPveRoom()) {
p->set_pve_settlement_color(stats->settlement_color);
p->set_pve_wave(room->pve_data.GetPassedWave());
p->set_pve_max_wave(room->pve_data.max_wave);
p->set_pve_instance_id(room->pve_instance->gemini_id());
} else if (room->IsMobaModeRoom()) {
p->set_moba_my_team_kills(GetTeam()->GetKillCount());
if (room->GetMobaTeamA() == GetTeam()) {
p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount());
} else {
p->set_moba_enemy_team_kills(room->GetMobaTeamA()->GetKillCount());
}
} else {
p->set_pvp_settlement_type(stats->pvp_settlement_type);
p->set_pvp_settlement_color(stats->settlement_color);
p->set_pvp_team_rank(GetTeam()->team_rank);
p->set_pvp_total_human_num(room->GetHumanNum());
p->set_pvp_alive_human_num(room->AliveCount());
p->set_pvp_total_team_num(room->GetTeamNum());
p->set_pvp_match_mode(room->GetPvpMatchMode());
}
GetTeam()->FillMFSettlementNew(msg.mutable_settlement_new());
return;
}
int alive_team_num = room->GetAliveTeamNum();
if (stats->victory) {
msg.set_watchable(false);
} else {
if (room->GetAliveTeamNum() > 1) {
msg.set_watchable(true);
} else {
if (room->IsPveRoom()) {
msg.set_watchable(!room->IsGameOver());
} else {
msg.set_watchable(false);
}
}
}
msg.set_map_id(room->GetMapMeta()->map_id());
msg.set_team_id(team_id);
msg.set_team_rank(GetTeam()->team_rank);
msg.set_personal_rank(stats->rank);
if (room->IsPveRoom()) {
msg.set_game_over(room->IsGameOver());
} else {
msg.set_game_over(room->IsGameOver() || (alive_team_num == 1));
}
msg.set_victory(stats->victory);
msg.set_room_uuid(a8::XValue(room->GetRoomUuid()));
msg.set_total_human_num(room->GetHumanNum());
msg.set_alive_human_num(room->AliveCount());
if (GetTeam()) {
GetTeam()->TraverseMembers
(
[this, &msg] (Human* member) -> bool
{
{
member->FillMFTeamData(this, msg.add_team_data(), true);
cs::MFPlayerStats* p = msg.add_player_stats();
member->FillMFPlayerStats(p);
}
return true;
});
}
{
msg.set_total_team_num(room->GetTeamNum());
if (room->IsPveRoom()) {
msg.set_pve_wave(room->pve_data.GetPassedWave());
msg.set_pve_max_wave(room->pve_data.max_wave);
msg.set_pve_instance_id(room->pve_instance->gemini_id());
msg.set_pve_boss_killed(room->pve_data.boss_state == 2 ? 1 : 0);
}
}
TypeConvert::ToPb(stats->over_reward, msg.mutable_reward());
{
if (!stats->over_reward.total_ceg.empty()) {
auto p = msg.add_spoils_items();
p->add_values("10001");
p->add_values(stats->over_reward.total_ceg);
}
for (auto& tuple : stats->over_reward.items) {
auto p = msg.add_spoils_items();
p->add_values(a8::XValue(std::get<0>(tuple)).GetString());
p->add_values(std::get<1>(tuple));
}
}
{
if (room->IsPveRoom()) {
msg.set_mode(GetTeam()->GetMemberNum() <= 1 ? 1 : 2);
msg.set_my_rank(room->pve_data.GetPassedWave());
msg.set_max_rank(room->pve_data.max_wave);
} else {
if (GetTeam()->GetMemberNum() <= 1) {
msg.set_mode(1);
msg.set_my_rank(stats->rank);
msg.set_max_rank(room->GetHumanNum());
} else {
if (GetTeam()->team_rank <= 0) {
msg.set_mode(1);
msg.set_my_rank(stats->rank);
msg.set_max_rank(room->GetHumanNum());
} else {
msg.set_mode(2);
msg.set_my_rank(GetTeam()->team_rank);
msg.set_max_rank(room->GetTeamNum());
}
}
}
}
#if 1
if (room->GetBattleStartFrameNo() <= 0 &&
dead_frameno) {
msg.set_team_rank(0);
msg.set_personal_rank(0);
msg.set_my_rank(0);
}
#endif
if (IsPlayer()) {
Player* p = (Player*)this;
if (!p->settlement) {
p->settlement = std::make_shared<cs::MFSettlement>();
FillMFSettlement(&msg, p->settlement.get());
}
*msg.mutable_settlement() = *p->settlement;
}
}
void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
@ -2507,6 +2318,7 @@ void GGListener::_SS_WSP_SocketDisconnect(f8::MsgHdr* hdr, const ss::SS_WSP_Sock
void Team::FillMFSettlementNew(cs::MFSettlementNew* p)
{
if (room->IsAlreadyRoomReportBattle()) {
p->set_settlement_status(1);
p->set_version(20230321);
p->set_team_id(GetTeamId());
p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());
@ -2514,6 +2326,11 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p)
p->set_team_mode(1);
p->set_game_over(room->IsGameOver() ? 1 : 0);
//p->set_victory(stats->victory ? 1 : 0);
if (room->IsPveRoom()) {
p->set_victory(room->pve_data.pve_kill_boss == 1 ? 1 : 0);
} else {
p->set_victory(team_rank == 1 ? 1 : 0);
}
p->set_watchable(false);
p->set_map_mode_id(room->GetMapModeMeta()->id());
p->set_map_mode(room->GetReportMapMode());
@ -2526,7 +2343,7 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p)
p->set_pve_max_wave(room->pve_data.max_wave);
p->set_pve_instance_id(room->pve_instance->gemini_id());
} else if (room->IsMobaModeRoom()) {
//p->set_moba_my_team_kills(GetTeam()->GetKillCount());
p->set_moba_my_team_kills(GetKillCount());
if (room->GetMobaTeamA() == this) {
p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount());
} else {
@ -2542,6 +2359,7 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p)
p->set_pvp_match_mode(room->GetPvpMatchMode());
}
} else {
p->set_settlement_status(0);
p->set_version(20230321);
p->set_team_id(GetTeamId());
p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());