/// <summary> /// 获取当前技能武器VO信息 /// </summary> /// <returns></returns> public PlayerShipSkillVO GetCurrentWeaponSkillVO() { IWeapon weapon = GetCurrentWeapon(); if (weapon != null) { int skillID = (int)weapon.GetBaseConfig().SkillId; PlayerShipSkillVO skillVO = new PlayerShipSkillVO((int)skillID); return(skillVO); } return(null); }
/// <summary> /// 更新技能图标(打开时、技能升级时) /// </summary> /// <param name="button">按钮</param> /// <param name="skill">数据</param> private void UpdateSkillIcon(RectTransform button, PlayerShipSkillVO skill) { Image icon = button.Find("Image_SkillIcon").GetComponent <Image>(); bool skillIsValid = skill != null; if (skill != null) { UIUtil.SetIconImage(icon, skillIsValid ? TableUtil.GetIconBundle((uint)skill.GetIcon()) : "", skillIsValid ? TableUtil.GetIconAsset((uint)skill.GetIcon()) : ""); } else { icon.sprite = null; icon.gameObject.SetActive(skillIsValid); } }
/// <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); }
public void RefreshShipSkills() { skillVOs = null; List <PlayerShipSkillVO> skills = new List <PlayerShipSkillVO>(); IShip currentShip = m_ShipProxy.GetAppointWarShip(); if (currentShip != null) { ISkill[] shipSkills = currentShip.GetSkillContainer().GetSkills(); List <ISkill> tempList = new List <ISkill>(shipSkills); tempList.Sort((skill1, skill2) => { int pos1 = m_PackageProxy.GetItem <ItemSkillVO>(skill1.GetUID()).Position; int pos2 = m_PackageProxy.GetItem <ItemSkillVO>(skill2.GetUID()).Position; return(pos1.CompareTo(pos2)); }); foreach (var skill in tempList) { int skillID = (int)skill.GetTID(); if (m_CfgEternityProxy.IsSkillExist(skillID)) { PlayerShipSkillVO skillVO = new PlayerShipSkillVO((int)skill.GetTID()); skills.Add(skillVO); } } } if (skills.Count > 0) { skillVOs = skills.ToArray(); } SendNotification(NotificationName.MSG_SHIP_SKILL_CHANGED); }
/// <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); } } }