Add message process

This commit is contained in:
HungDK
2026-02-02 09:12:15 +07:00
parent 030a42031b
commit ecc3a888ca
+87 -1
View File
@@ -1,4 +1,4 @@
using BrewMonster;
using BrewMonster;
using BrewMonster.Assets.PerfectWorld.Scripts.Players;
using BrewMonster.Managers;
using BrewMonster.Network;
@@ -125,6 +125,7 @@ namespace BrewMonster
const int ID_SUMMONPLAYER_SKILL = 1824;
private CECAutoTeam m_pAutoTeam;
private CECTeam m_pTeam; // Current team (null when not in team)
// ====== Ground cast config ======
[Header("Ground Cast")]
@@ -199,6 +200,16 @@ namespace BrewMonster
{
return m_pAutoTeam;
}
public override CECTeam GetTeam()
{
return m_pTeam;
}
internal void SetTeam(CECTeam team)
{
m_pTeam = team;
}
public EC_Inventory GetPack()
{
return m_pPack;
@@ -588,6 +599,10 @@ namespace BrewMonster
case int value when value == EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_EMBEDITEM: OnMsgHstEmbedItem(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_JOINTEAM: OnMsgHstJoinTeam(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_LEAVETEAM: OnMsgHstLeaveTeam(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_NEWTEAMMEM: OnMsgHstNewTeamMem(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_TEAMMEMBERDATA: OnMsgHstTeamMemberData(Msg); break;
}
@@ -611,6 +626,76 @@ namespace BrewMonster
}*/
}
private void OnMsgHstJoinTeam(ECMSG Msg)
{
var data = (byte[])Msg.dwParam1;
if (data == null || data.Length < Marshal.SizeOf<cmd_team_join_team>()) return;
var pCmd = GPDataTypeHelper.FromBytes<cmd_team_join_team>(data);
var pTeamMan = CECGameRun.Instance?.GetTeamMan();
if (pTeamMan == null) return;
var pTeam = pTeamMan.GetTeam(pCmd.idLeader);
if (pTeam == null)
pTeam = pTeamMan.CreateTeam(pCmd.idLeader);
if (pTeam == null) return;
if (pCmd.idLeader == m_PlayerInfo.cid)
pTeam.AddMember(pCmd.idLeader);
pTeam.SetPickupFlag(pCmd.wPickFlag);
SetTeam(pTeam);
NotifyUIUpdateTeam();
}
private void OnMsgHstLeaveTeam(ECMSG Msg)
{
var data = (byte[])Msg.dwParam1;
if (data == null || data.Length < Marshal.SizeOf<cmd_team_leave_party>()) return;
var pCmd = GPDataTypeHelper.FromBytes<cmd_team_leave_party>(data);
if (m_pTeam == null) return;
var pTeamMan = CECGameRun.Instance?.GetTeamMan();
if (pTeamMan != null)
pTeamMan.ReleaseTeam(pCmd.idLeader);
SetTeam(null);
NotifyUIUpdateTeam();
}
private void OnMsgHstNewTeamMem(ECMSG Msg)
{
var data = (byte[])Msg.dwParam1;
if (data == null || data.Length < Marshal.SizeOf<cmd_team_new_member>()) return;
var pCmd = GPDataTypeHelper.FromBytes<cmd_team_new_member>(data);
if (m_pTeam == null) return;
int cid = pCmd.idMember;
m_pTeam.AddMember(cid);
m_pTeam.AddUnknownID(cid);
if (EC_ManMessageMono.Instance?.GetECManPlayer?.GetPlayer(cid, 0) == null && UnityGameSession.Instance != null)
UnityGameSession.c2s_CmdTeamMemberPos(1, new[] { cid });
NotifyUIUpdateTeam();
}
private void OnMsgHstTeamMemberData(ECMSG Msg)
{
var data = (byte[])Msg.dwParam1;
if (data == null) return;
try
{
var (header, members) = GPDataTypeHelper.ParseTeamMemberData(data);
if (m_pTeam == null || header.idLeader != m_pTeam.GetLeaderID()) return;
m_pTeam.UpdateTeamData(header, members);
NotifyUIUpdateTeam();
}
catch { }
}
private void NotifyUIUpdateTeam()
{
try
{
var ui = EC_Game.GetGameRun()?.GetUIManager()?.GetInGameUIMan();
if (ui is CECGameUIMan gui)
gui.UpdateTeam(false);
}
catch { }
}
private void OnMsgHstLearnSkill(ECMSG Msg)
{
BMLogger.LogError("OnMsgHstLearnSkill");
@@ -2725,6 +2810,7 @@ namespace BrewMonster
isDataAwaitToReady = true;
Vector3 pos = new Vector3(role.pos.x, role.pos.y, role.pos.z);
string roleName = Encoding.Unicode.GetString(UnityGameSession.Instance.GetRoleInfo().name.ByteArray);
SetPlayerName(roleName);
if (txtName != null) txtName.text = roleName;
EventBus.Publish(new InfoHostPlayer(roleName));
playerTransform.position = pos;