90 lines
3.5 KiB
C#
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 { }
|
|
}
|
|
}
|
|
}
|