From 0c5927d3a0b5898edcf5a1a8964b8f0c865b827d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 21 Mar 2023 20:19:21 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 9 +++++++++ server/gameserver/human.h | 1 + server/gameserver/pbutils.cc | 12 ++++++++++++ server/gameserver/team.cc | 10 ++++++++++ server/gameserver/team.h | 3 +++ 5 files changed, 35 insertions(+) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 99cb63b5..ed1555a4 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1705,9 +1705,13 @@ void Human::SendBattleReport() if (ok) { hum->sending_battlereport_ = false; hum->already_report_battle_ = true; + #if 0 hum->stats.ParseReward(hum, *rsp_obj); + #endif hum->SendGameOver(); + #if 0 hum->SendBattleSettlement(); + #endif } else { hum->sending_battlereport_ = false; } @@ -3564,3 +3568,8 @@ void Human::ProcGemStoneItem(AddItemDTO& dto) } dto.handled = true; } + +void Human::SendTeamBattleReport() +{ + +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index ed17935d..055c50ef 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -419,6 +419,7 @@ private: void FillSMGameOver(cs::SMGameOver& msg); void SendBattleSettlement(); void SendBattleReport(); + void SendTeamBattleReport(); void Revive(); void AdjustDecHp(float old_health, float& new_health); void ClearPartObjects(); diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 80869940..a2153ab4 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -1336,6 +1336,17 @@ void Human::SendUpdateMsg() void Human::SendGameOver() { + #if 1 + if (GetTeam()->HasPlayer()) { + SendTeamBattleReport(); + } + if (IsEntitySubType(EST_Player)) { + if (!is_game_end_) { + GameLog::Instance()->GameEnd((Player*)this); + is_game_end_ = true; + } + } + #else if (IsEntitySubType(EST_Player)) { if (already_report_battle_) { cs::SMGameOver msg; @@ -1357,6 +1368,7 @@ void Human::SendGameOver() } } } + #endif } void Human::SendDebugMsg(const std::string& debug_msg) diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index 2e7e0adc..fd4c40b6 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -164,3 +164,13 @@ bool Team::IsFreeTeam() } return false; } + +bool Team::HasPlayer() +{ + for (Human* member : members_) { + if (member->IsPlayer()) { + return true; + } + } + return false; +} diff --git a/server/gameserver/team.h b/server/gameserver/team.h index f259c246..c7c07286 100644 --- a/server/gameserver/team.h +++ b/server/gameserver/team.h @@ -8,6 +8,8 @@ class Team Room* room = nullptr; int team_rank = 0; std::map target_pos; + bool sending_battlereport = false; + bool already_report_battle = false; void SetInitTeamMemberNum(int init_num) { init_team_member_num_ = init_num; }; void SetAutoFill(bool auto_fill) { auto_fill_ = auto_fill; }; @@ -30,6 +32,7 @@ class Team int GetInitTeamMemberNum() { return init_team_member_num_; }; bool HasReviveCoin(Human* member); bool IsFreeTeam(); + bool HasPlayer(); private: int team_id_ = 0;