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::_CMCancelRevive);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRequestBulletDmg); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRequestBulletDmg);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMStowShield); RegisterNetMsgHandler(&ggmsghandler, &Player::_CMStowShield);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMTeamMarkTargetPos);
} }
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle, 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 DecOxygen(int val);
void WinPveScore(int score); void WinPveScore(int score);
int GetTeamMode(); int GetTeamMode();
void NotifyTeamMarkTargetPos();
protected: protected:
void _InternalUpdateMove(float speed); void _InternalUpdateMove(float speed);

View File

@ -1320,6 +1320,20 @@ void Player::_CMStowShield(f8::MsgHdr& hdr, const cs::CMStowShield& msg)
RemoveBuffByEffectId(kBET_HoldShield); 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() void Player::PushJoinRoomMsg()
{ {
if (!a8::HasBitFlag(status, CS_ForceTeam)) { if (!a8::HasBitFlag(status, CS_ForceTeam)) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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