add team_target_pos
This commit is contained in:
parent
1ddf62cbde
commit
c635ef0720
@ -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,
|
||||
|
@ -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
|
||||
(
|
||||
[¬ify_msg] (Human* hum)
|
||||
{
|
||||
hum->SendNotifyMsg(notify_msg);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
|
||||
|
@ -1576,6 +1576,7 @@ void Room::MatchTeam(Human* hum)
|
||||
|
||||
void Room::CombineTeam()
|
||||
{
|
||||
return;
|
||||
if (MetaMgr::Instance()->prebattle_combine_team) {
|
||||
return;
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -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; };
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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; //位置列表
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user