Add message process
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user