Files
test/Assets/Scripts/CECHostPlayer.Party.cs
T
2026-03-09 15:29:21 +07:00

90 lines
3.5 KiB
C#

using BrewMonster.Managers;
using BrewMonster.Network;
using CSNetwork;
using CSNetwork.GPDataType;
using System.Runtime.InteropServices;
namespace BrewMonster
{
public partial class CECHostPlayer
{
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(true);
}
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(true);
}
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);
var pPlayerMan = EC_ManMessageMono.Instance?.GetECManPlayer;
if (pPlayerMan != null)
{
for (int i = 0; i < m_pTeam.GetMemberNum(); i++)
{
var pMember = m_pTeam.GetMemberByIndex(i);
if (pMember == null || pMember.IsInfoReady())
{
continue;
}
var pPlayer = pPlayerMan.GetPlayer(pMember.GetCharacterID(), 0) as CECPlayer;
if (pPlayer != null)
{
pMember.SetProfession(pPlayer.GetProfession());
pMember.SetGender(pPlayer.GetGender());
pMember.SetInfoReadyFlag(true);
}
}
}
NotifyUIUpdateTeam();
}
catch { }
}
}
}