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()) return; var pCmd = GPDataTypeHelper.FromBytes(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()) return; var pCmd = GPDataTypeHelper.FromBytes(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()) return; var pCmd = GPDataTypeHelper.FromBytes(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 { } } } }