skill processing
This commit is contained in:
@@ -31,6 +31,8 @@ using UnityEngine.UI;
|
||||
using static Unity.Burst.Intrinsics.X86.Avx;
|
||||
using static UnityEditor.PlayerSettings;
|
||||
using Scene = UnityEngine.SceneManagement.Scene;
|
||||
using Trace_reason = CECHPWorkTrace.Trace_reason;
|
||||
using Host_work_ID = BrewMonster.Scripts.CECHPWork.Host_work_ID;
|
||||
|
||||
public class CECHostPlayer : CECPlayer
|
||||
{
|
||||
@@ -249,15 +251,15 @@ public class CECHostPlayer : CECPlayer
|
||||
SelectTarget(m_idUCSelTarget);
|
||||
}
|
||||
|
||||
/* if (idTraceTarget != 0)
|
||||
{
|
||||
if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_ATTACK)
|
||||
/* if (idTraceTarget != 0)
|
||||
{
|
||||
if (!CanDo(ActionCanDo.CANDO_MELEE))
|
||||
return;
|
||||
NormalAttackObject(idTraceTarget, bForceAttack);
|
||||
}
|
||||
}*/
|
||||
if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_ATTACK)
|
||||
{
|
||||
if (!CanDo(ActionCanDo.CANDO_MELEE))
|
||||
return;
|
||||
NormalAttackObject(idTraceTarget, bForceAttack);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
m_pWorkMan?.Tick(Time.deltaTime);
|
||||
}
|
||||
@@ -404,8 +406,16 @@ public class CECHostPlayer : CECPlayer
|
||||
|
||||
private void OnMsgHstSkillData(ECMSG Msg)
|
||||
{
|
||||
cmd_skill_data pCmd = GPDataTypeHelper.FromBytes<cmd_skill_data>((byte[])Msg.dwParam1);
|
||||
|
||||
cmd_skill_data pCmd = default;
|
||||
pCmd.skill_count = GPDataTypeHelper.FromBytes<uint>((byte[])Msg.dwParam1);
|
||||
int offset = sizeof(uint);
|
||||
int skillSize = Marshal.SizeOf<cmd_skill_data.SKILL>();
|
||||
pCmd.skill_list = new cmd_skill_data.SKILL[2];
|
||||
for (int i = 0; i < pCmd.skill_count; i++)
|
||||
{
|
||||
pCmd.skill_list[i] = GPDataTypeHelper.FromBytes<cmd_skill_data.SKILL>((byte[])Msg.dwParam1, offset);
|
||||
offset += skillSize;
|
||||
}
|
||||
if (pCmd.skill_list == null)
|
||||
{
|
||||
BMLogger.LogError("OnMsgHstSkillData: cmd is null");
|
||||
@@ -419,22 +429,22 @@ public class CECHostPlayer : CECPlayer
|
||||
|
||||
if (HostIsReady())
|
||||
{
|
||||
/*
|
||||
for (int i = 0; i < HostConstants.NUM_HOSTSCSETS1; i++)
|
||||
{
|
||||
if (hostPlayer.m_aSCSets1[i] != null)
|
||||
{
|
||||
hostPlayer.m_aSCSets1[i].RemoveSkillShortcuts();
|
||||
}
|
||||
}
|
||||
/*
|
||||
for (int i = 0; i < HostConstants.NUM_HOSTSCSETS1; i++)
|
||||
{
|
||||
if (hostPlayer.m_aSCSets1[i] != null)
|
||||
{
|
||||
hostPlayer.m_aSCSets1[i].RemoveSkillShortcuts();
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < HostConstants.NUM_HOSTSCSETS2; i++)
|
||||
{
|
||||
if (hostPlayer.m_aSCSets2[i] != null)
|
||||
{
|
||||
hostPlayer.m_aSCSets2[i].RemoveSkillShortcuts();
|
||||
}
|
||||
}*/
|
||||
for (int i = 0; i < HostConstants.NUM_HOSTSCSETS2; i++)
|
||||
{
|
||||
if (hostPlayer.m_aSCSets2[i] != null)
|
||||
{
|
||||
hostPlayer.m_aSCSets2[i].RemoveSkillShortcuts();
|
||||
}
|
||||
}*/
|
||||
|
||||
m_aPtSkills.Clear();
|
||||
|
||||
@@ -467,27 +477,27 @@ public class CECHostPlayer : CECPlayer
|
||||
}
|
||||
|
||||
// Restore and convert shortcuts after loading new skills
|
||||
/* if (hostPlayer.HostIsReady())
|
||||
{
|
||||
hostPlayer.ConvertSkillShortcut(skillSCConfigArray1);
|
||||
hostPlayer.AssignSkillShortcut(skillSCConfigArray1, hostPlayer.m_aSCSets1);
|
||||
hostPlayer.ConvertSkillShortcut(skillSCConfigArray2);
|
||||
hostPlayer.AssignSkillShortcut(skillSCConfigArray2, hostPlayer.m_aSCSets2);
|
||||
hostPlayer.ConvertComboSkill();
|
||||
hostPlayer.ValidateSkillGrpShortcut(skillGrpSCConfigArray1);
|
||||
hostPlayer.AssignSkillGrpShortcut(skillGrpSCConfigArray1, hostPlayer.m_aSCSets1);
|
||||
hostPlayer.ValidateSkillGrpShortcut(skillGrpSCConfigArray2);
|
||||
hostPlayer.AssignSkillGrpShortcut(skillGrpSCConfigArray2, hostPlayer.m_aSCSets2);
|
||||
}
|
||||
/* if (hostPlayer.HostIsReady())
|
||||
{
|
||||
hostPlayer.ConvertSkillShortcut(skillSCConfigArray1);
|
||||
hostPlayer.AssignSkillShortcut(skillSCConfigArray1, hostPlayer.m_aSCSets1);
|
||||
hostPlayer.ConvertSkillShortcut(skillSCConfigArray2);
|
||||
hostPlayer.AssignSkillShortcut(skillSCConfigArray2, hostPlayer.m_aSCSets2);
|
||||
hostPlayer.ConvertComboSkill();
|
||||
hostPlayer.ValidateSkillGrpShortcut(skillGrpSCConfigArray1);
|
||||
hostPlayer.AssignSkillGrpShortcut(skillGrpSCConfigArray1, hostPlayer.m_aSCSets1);
|
||||
hostPlayer.ValidateSkillGrpShortcut(skillGrpSCConfigArray2);
|
||||
hostPlayer.AssignSkillGrpShortcut(skillGrpSCConfigArray2, hostPlayer.m_aSCSets2);
|
||||
}
|
||||
|
||||
if (hostPlayer.HostIsReady())
|
||||
{
|
||||
// Update UI when profession changes, save all shortcut configurations
|
||||
// to remove effects from intermediate skills (invalid pointers)
|
||||
// C++: CECGameUIMan *pGameUIMan = g_pGame->GetGameRun()->GetUIManager()->GetInGameUIMan();
|
||||
// pGameUIMan->UpdateSkillRelatedUI();
|
||||
hostPlayer.UpdateSkillRelatedUI();
|
||||
}*/
|
||||
if (hostPlayer.HostIsReady())
|
||||
{
|
||||
// Update UI when profession changes, save all shortcut configurations
|
||||
// to remove effects from intermediate skills (invalid pointers)
|
||||
// C++: CECGameUIMan *pGameUIMan = g_pGame->GetGameRun()->GetUIManager()->GetInGameUIMan();
|
||||
// pGameUIMan->UpdateSkillRelatedUI();
|
||||
hostPlayer.UpdateSkillRelatedUI();
|
||||
}*/
|
||||
}
|
||||
public bool HostIsReady() { return true /*m_bEnterGame*/; }
|
||||
private void OnMsgHstInfo00(in ECMSG Msg)
|
||||
@@ -1075,6 +1085,10 @@ public class CECHostPlayer : CECPlayer
|
||||
}
|
||||
else
|
||||
m_pActionSwitcher = new CECActionSwitcherBase(this);
|
||||
|
||||
UnityGameSession.c2s_CmdGetAllData(true, true, false);
|
||||
// TODO: Move this to right flow later , it's just for test now
|
||||
UnityGameSession.c2s_CmdSendEnterPKPrecinct();
|
||||
}
|
||||
|
||||
private void JoystickStartDrag(JoystickPressEvent joystickPressEvent)
|
||||
@@ -1612,7 +1626,7 @@ public class CECHostPlayer : CECPlayer
|
||||
//}
|
||||
|
||||
//// Get force attack flag
|
||||
bool bForceAttack = true;
|
||||
bool bForceAttack = false;
|
||||
//if (iForceAtk < 0)
|
||||
// bForceAttack = glb_GetForceAttackFlag(0);
|
||||
//else
|
||||
@@ -1635,8 +1649,8 @@ public class CECHostPlayer : CECPlayer
|
||||
//}
|
||||
|
||||
//// Check whether target type match
|
||||
//int idCastTarget = idSelTarget;
|
||||
//int iTargetType = pSkill->GetTargetType();
|
||||
int idCastTarget = idSelTarget;
|
||||
int iTargetType = pSkill.GetTargetType();
|
||||
|
||||
//if (pSkill->GetType() == CECSkill::TYPE_BLESS ||
|
||||
// pSkill->GetType() == CECSkill::TYPE_NEUTRALBLESS)
|
||||
@@ -1767,8 +1781,8 @@ public class CECHostPlayer : CECPlayer
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// m_pPrepSkill = pSkill;
|
||||
CastSkill(m_PlayerInfo.cid, bForceAttack);
|
||||
m_pPrepSkill = pSkill;
|
||||
//CastSkill(m_idSelTarget, bForceAttack);
|
||||
//}
|
||||
//else if (IsSpellingMagic() && m_pCurSkill == pSkill)
|
||||
//{
|
||||
@@ -1789,39 +1803,40 @@ public class CECHostPlayer : CECPlayer
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// bool bTraceOK = false;
|
||||
// bool bUseAutoPF = false;
|
||||
// CECPlayerWrapper* pWrapper = CECAutoPolicy::GetInstance().GetPlayerWrapper();
|
||||
// if (CECAutoPolicy::GetInstance().IsAutoPolicyEnabled() && pWrapper->GetAttackError() >= 2)
|
||||
// bUseAutoPF = true;
|
||||
bool bTraceOK = false;
|
||||
bool bUseAutoPF = false;
|
||||
/* CECPlayerWrapper* pWrapper = CECAutoPolicy::GetInstance().GetPlayerWrapper();
|
||||
if (CECAutoPolicy::GetInstance().IsAutoPolicyEnabled() && pWrapper->GetAttackError() >= 2)
|
||||
bUseAutoPF = true;*/
|
||||
|
||||
// if (!idCastTarget)
|
||||
// {
|
||||
// idCastTarget = GetCharacterID(); // ±ÜÃâË²ÒÆµÈ¼¼ÄÜʱ idCastTarget Ϊ0µ¼Ö CECWorkTrace::CreateTraceTarget ·µ»Ø¿Õ
|
||||
// }
|
||||
// if (CECHPWork * pWork = m_pWorkMan->GetWork(CECHPWork::WORK_TRACEOBJECT))
|
||||
// {
|
||||
// CECHPWorkTrace* pWorkTrace = dynamic_cast<CECHPWorkTrace*>(pWork);
|
||||
// if (pWorkTrace->GetTraceReason() == CECHPWorkTrace::TRACE_SPELL &&
|
||||
// pWorkTrace->GetTarget() == idCastTarget &&
|
||||
// pWorkTrace->GetPrepSkill() == pSkill)
|
||||
// return false; // We are just doing the same thing
|
||||
if (idCastTarget == 0)
|
||||
{
|
||||
idCastTarget = GetCharacterID(); // ±ÜÃâË²ÒÆµÈ¼¼ÄÜʱ idCastTarget Ϊ0µ¼Ö CECWorkTrace::CreateTraceTarget ·µ»Ø¿Õ
|
||||
}
|
||||
CECHPWork pWork = m_pWorkMan.GetWork(Host_work_ID.WORK_TRACEOBJECT);
|
||||
if (pWork != null)
|
||||
{
|
||||
CECHPWorkTrace pWorkTrace = (CECHPWorkTrace)(pWork);
|
||||
if (pWorkTrace.GetTraceReason() == Trace_reason.TRACE_SPELL &&
|
||||
pWorkTrace.GetTarget() == idCastTarget &&
|
||||
pWorkTrace.GetPrepSkill() == pSkill)
|
||||
return false; // We are just doing the same thing
|
||||
|
||||
// pWorkTrace->SetTraceTarget(pWorkTrace->CreatTraceTarget(idCastTarget, CECHPWorkTrace::TRACE_SPELL, bForceAttack), bUseAutoPF);
|
||||
// pWorkTrace->SetPrepSkill(pSkill);
|
||||
// bTraceOK = true;
|
||||
// }
|
||||
// else if (m_pWorkMan->CanStartWork(CECHPWork::WORK_TRACEOBJECT))
|
||||
// {
|
||||
// CECHPWorkTrace* pWork = (CECHPWorkTrace*)m_pWorkMan->CreateWork(CECHPWork::WORK_TRACEOBJECT);
|
||||
// pWork->SetTraceTarget(pWork->CreatTraceTarget(idCastTarget, CECHPWorkTrace::TRACE_SPELL, bForceAttack), bUseAutoPF);
|
||||
// pWork->SetPrepSkill(pSkill);
|
||||
// m_pWorkMan->StartWork_p1(pWork);
|
||||
// bTraceOK = true;
|
||||
// }
|
||||
pWorkTrace.SetTraceTarget(pWorkTrace.CreatTraceTarget(idCastTarget, Trace_reason.TRACE_SPELL, bForceAttack), bUseAutoPF);
|
||||
pWorkTrace.SetPrepSkill(pSkill);
|
||||
bTraceOK = true;
|
||||
}
|
||||
else if (m_pWorkMan.CanStartWork(Host_work_ID.WORK_TRACEOBJECT))
|
||||
{
|
||||
CECHPWorkTrace pWork2 = (CECHPWorkTrace)m_pWorkMan.CreateWork(Host_work_ID.WORK_TRACEOBJECT);
|
||||
/* pWork2->SetTraceTarget(pWork2->CreatTraceTarget(idCastTarget, CECHPWorkTrace::TRACE_SPELL, bForceAttack), bUseAutoPF);
|
||||
pWork2->SetPrepSkill(pSkill);
|
||||
m_pWorkMan->StartWork_p1(pWork2);*/
|
||||
bTraceOK = true;
|
||||
}
|
||||
|
||||
// if (!bTraceOK) return false;
|
||||
// }
|
||||
if (!bTraceOK) return false;
|
||||
// }
|
||||
//}
|
||||
|
||||
return true;
|
||||
@@ -1830,6 +1845,9 @@ public class CECHostPlayer : CECPlayer
|
||||
private void CastSkill(int idTarget, bool bForceAttack, CECObject pTarget = null)
|
||||
{
|
||||
byte byPVPMask = glb_BuildPVPMask(bForceAttack);
|
||||
BMLogger.LogError("HoangDev: HostPlayer CastSkill SkillID=" + m_pPrepSkill.GetSkillID() +
|
||||
" TargetID=" + idTarget + " bForceAttack=" + bForceAttack +
|
||||
" byPVPMask=" + byPVPMask);
|
||||
UnityGameSession.c2s_CmdCastSkill(m_pPrepSkill.GetSkillID(), byPVPMask, 1, idTarget);
|
||||
}
|
||||
public byte glb_BuildPVPMask(bool bForceAttack)
|
||||
|
||||
Reference in New Issue
Block a user