/// <summary> ///武器释放的技能结束 /// </summary> private void WeaponSkillFinish(IComponentEvent entityEvent) { WeaponSkillFinish weaponskillfinish = entityEvent as WeaponSkillFinish; if (!weaponskillfinish.IsMain) { return; } PlayerShipSkillVO skillVO = m_SkillProxy.GetCurrentWeaponSkillVO(); if (skillVO != null && skillVO.GetID() == weaponskillfinish.skillId && weaponskillfinish.skillId > 0) { WeaponAndCrossSight weaponCS = m_SkillProxy.GetCurrentWeaponAndCrossSight(); if (weaponCS != null) { weaponCS.WeaponSkillFinish(); } } }
/// <summary> /// 更新技能冷却 /// </summary> /// <param name="button">技能按钮</param> /// <param name="skill">技能数据</param> private bool UpdateSkillCooldown(RectTransform button, PlayerShipSkillVO skill) { //cd Animator animator = button.GetComponent <Animator>(); Transform cdBox = button.Find("CDImage").GetComponent <Transform>(); Image cdMask = button.Find("CDImage/CD").GetComponent <Image>(); TMP_Text cdField = button.Find("CDImage/Label_CDTimes").GetComponent <TMP_Text>(); float cooldown = 0; if (skill != null) { PlayerSkillCDVO cdVO = m_SkillProxy.GetActiveCDVO(skill.GetID()); if (cdVO != null) { cooldown = cdVO.GetRemainingTime(); } if (cooldown > 0.0f) { cdBox.gameObject.SetActive(true); cdMask.fillAmount = cdVO.GetProgress(); cdField.text = string.Format("{0:N1}", cooldown); } else { cdBox.gameObject.SetActive(false); } } else { cdBox.gameObject.SetActive(false); } if (animator) { animator.SetInteger("State", cooldown > 0 ? 2 : 0); } return(cooldown > 0.0f); }
/// <summary> /// 技能按键相应 /// </summary> /// <param name="obj"></param> private void OnHotkey(IComponentEvent obj) { //战斗状态||过载模式 才响应 if (m_ISpacecraftSkillProperty.GetCurrentState().GetMainState() == EnumMainState.Fight || m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Overload)) { SkillCastEvent skillCastEvent = obj as SkillCastEvent; if (m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Peerless) && !skillCastEvent.IsWeaponSkill) //转化炉模式只允许释放武器技能 { return; } int skillId = 0; if (skillCastEvent.IsWeaponSkill) { skillId = skillCastEvent.SkillIndex; //非武器 表示第几个技能,武器则表示技能ID } else { PlayerShipSkillVO skillVO = null; skillVO = m_PlayerSkillProxy.GetShipSkillByIndex(skillCastEvent.SkillIndex); //由第几个技能,获取技能VO if (skillVO == null) { return; } skillId = skillVO.GetID(); } Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} , 按下 = {1}", skillId, skillCastEvent.KeyPressed)); //按下 if (skillCastEvent.KeyPressed) { //是否可释放 if (!CanReleaseSkill(skillId)) { Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} , 不可释放", skillId)); return; } float fire_CountDown = m_CfgEternityProxy.GetGamingConfig(1).Value.Sound.Value.CountDown.Value.Fire; m_ISpacecraftSkillProperty.SetFireCountdown(fire_CountDown); ////执行预演播放,并请求服务器验证,如果失败则打断释放 ////执行释放 ReleaseSkill(skillId); if (m_ISpacecraftSkillProperty.IsMain()) //主角 { C2S_ButtonDown(); } // Trigger 重复类技能记录 m_TriggerStartTime = Time.time; m_TriggerSkillId = skillId; IsTrigger = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.IsTrigger; m_TriggerLogicTime = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.Triggertime; m_ISpacecraftSkillProperty.SetSkillBttonIsDown(true); } else //抬起 { if (m_ISpacecraftSkillProperty.IsMain()) //主角 { if (m_StateMachine.IsRunning && skillId == SkillID) { C2S_ButtonUp(); } } m_TriggerSkillId = -1; IsTrigger = false; m_ISpacecraftSkillProperty.SetSkillBttonIsDown(false); } } }