add team_target_pos

This commit is contained in:
aozhiwei 2022-11-22 14:53:51 +08:00
parent 1ddf62cbde
commit c635ef0720
10 changed files with 63 additions and 0 deletions

View File

@ -108,6 +108,7 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMCancelRevive);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRequestBulletDmg);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMStowShield);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMTeamMarkTargetPos);
}
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,

View File

@ -4840,3 +4840,22 @@ void Human::FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* s)
}
}
}
void Human::NotifyTeamMarkTargetPos()
{
if (GetTeam()) {
cs::SMTeamMarkTargetPosList notify_msg;
for (auto& pair : GetTeam()->target_pos) {
auto p = notify_msg.add_pos_list();
p->set_obj_uniid(pair.first);
TypeConvert::ToPb(pair.second, p->mutable_pos());
}
GetTeam()->TraverseMembers
(
[&notify_msg] (Human* hum)
{
hum->SendNotifyMsg(notify_msg);
return true;
});
}
}

View File

@ -363,6 +363,7 @@ class Human : public Creature
void DecOxygen(int val);
void WinPveScore(int score);
int GetTeamMode();
void NotifyTeamMarkTargetPos();
protected:
void _InternalUpdateMove(float speed);

View File

@ -1320,6 +1320,20 @@ void Player::_CMStowShield(f8::MsgHdr& hdr, const cs::CMStowShield& msg)
RemoveBuffByEffectId(kBET_HoldShield);
}
void Player::_CMTeamMarkTargetPos(f8::MsgHdr& hdr, const cs::CMTeamMarkTargetPos& msg)
{
if (GetTeam()) {
if (msg.has_pos()) {
a8::Vec2 pos;
pos.x = msg.pos().x();
pos.y = msg.pos().y();
GetTeam()->target_pos[GetUniId()] = pos;
} else {
GetTeam()->target_pos.erase(GetUniId());
}
}
}
void Player::PushJoinRoomMsg()
{
if (!a8::HasBitFlag(status, CS_ForceTeam)) {

View File

@ -11,6 +11,7 @@ namespace cs
class CMVoice;
class CMStowShield;
class CMImmediateMsg;
class CMTeamMarkTargetPos;
class MFActivePlayerData;
class MFGasData;
class MFPair;
@ -124,6 +125,7 @@ class Player : public Human
void _CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg);
void _CMRequestBulletDmg(f8::MsgHdr& hdr, const cs::CMRequestBulletDmg& msg);
void _CMStowShield(f8::MsgHdr& hdr, const cs::CMStowShield& msg);
void _CMTeamMarkTargetPos(f8::MsgHdr& hdr, const cs::CMTeamMarkTargetPos& msg);
virtual void SetAttackDir(const a8::Vec2& attack_dir) override;
void AsyncRequestWatchWar(bool send_rsp_msg);

View File

@ -1576,6 +1576,7 @@ void Room::MatchTeam(Human* hum)
void Room::CombineTeam()
{
return;
if (MetaMgr::Instance()->prebattle_combine_team) {
return;
}

View File

@ -57,6 +57,9 @@ void Team::AddMember(Human* member)
if (member->GetFollowTimes() <= 0 && member != first_member_ && !member->follow_target.Get()) {
member->DoFollow(first_member_->GetUniId());
}
if (!target_pos.empty()) {
member->NotifyTeamMarkTargetPos();
}
}
bool Team::IsFull()

View File

@ -7,6 +7,7 @@ class Team
public:
Room* room = nullptr;
int team_rank = 0;
std::map<int, a8::Vec2> target_pos;
void SetInitTeamMemberNum(int init_num) { init_team_member_num_ = init_num; };
void SetAutoFill(bool auto_fill) { auto_fill_ = auto_fill; };

View File

@ -25,6 +25,7 @@ enum CMMessageId_e
_CMRequestBulletDmg = 230;
_CMStowShield = 231;
_CMImmediateMsg = 232;
_CMTeamMarkTargetPos = 233;
}
enum SMMessageId_e
@ -55,4 +56,5 @@ enum SMMessageId_e
_SMGetItemNotify = 1018;
_SMMatchMemberMsgNotify = 1019;
_SMPvePassWave = 1020;
_SMTeamMarkTargetPosList = 1021;
}

View File

@ -240,6 +240,13 @@ message MFCharacterImage
optional MFWeapon weapon = 3; //
}
//
message MFTeamMarkPos
{
optional int32 obj_uniid = 1; //id
optional MFVec2 pos = 2; //
}
//-
message MFPlayerFull
{
@ -1090,6 +1097,12 @@ message CMImmediateMsg
optional int32 stop_shot = 2; //
}
//
message CMTeamMarkTargetPos
{
optional MFVec2 pos = 1; //
}
//GM指令
message CMExecCommand
{
@ -1412,3 +1425,9 @@ message SMPvePassWave
optional int32 pve_max_wave = 18; //pve总波次
optional int32 wait_time = 2; //()
}
//
message SMTeamMarkTargetPosList
{
repeated MFTeamMarkPos pos_list = 1; //
}