public void InitFollowFx() { if (m_attacker == null) { DestroyFx(); return; } bStart = true; bDestory = false; m_targetObj = m_attacker.GetTargetGameObject(); ISkillPart skillPart = m_attacker.GetSkillPart(); if (skillPart != null) { m_SkillTarget = skillPart.GetSkillTarget(); table.SkillDatabase db = GameTableManager.Instance.GetTableItem <table.SkillDatabase>((uint)m_skillId, 1); if (db != null) { if (db.flyspeed != 0) { m_speed = db.flyspeed * 1.0f / 100; } } } // m_targetNode = m_attacker.GetTargetHitNode(); m_startTime = Time.time; castPos = m_attacker.GetTargetHitNodePos(m_SkillTarget, targetHitNode); float dis = GetVectorDistance(transform.position, castPos); totalTime = dis / m_speed; }
public void AddSkillCD(uint skillid, int cd) { if (m_dictskill == null) { Client.IPlayer player = Client.ClientGlobal.Instance().MainPlayer; Client.ISkillPart m_skillPart = player.GetPart(Client.EntityPart.Skill) as Client.ISkillPart; m_dictskill = m_skillPart.GetCurSkills(); } table.SkillDatabase skillTable = null; if (m_dictskill.ContainsKey(skillid)) { skillTable = m_dictskill[skillid]; } if (skillTable == null) { skillTable = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(skillid); } if (skillTable != null) { if (!m_dictSkillCD.ContainsKey(skillid)) { m_dictSkillCD.Add(skillid, new SkillCDInfo()); cdkeys.Add(skillid); } if (cd == -1) { m_dictSkillCD[skillid].totalTime = skillTable.dwIntervalTime; } else { m_dictSkillCD[skillid].totalTime = cd; } m_dictSkillCD[skillid].skillid = (int)skillid; m_dictSkillCD[skillid].currTime = m_dictSkillCD[skillid].totalTime; } else { table.RideSkillDes rideskill = GameTableManager.Instance.GetTableItem <table.RideSkillDes>(skillid); if (rideskill == null) { return; } if (!m_dictSkillCD.ContainsKey(skillid)) { m_dictSkillCD.Add(skillid, new SkillCDInfo()); cdkeys.Add(skillid); } m_dictSkillCD[skillid].totalTime = rideskill.skillCD; m_dictSkillCD[skillid].skillid = (int)skillid; m_dictSkillCD[skillid].currTime = rideskill.skillCD; } }
public void Play(ISkillAttacker attacker) { m_fCurrentTime = 0.0f; m_Atttacker = attacker; m_bAlive = true; bStop = false; bPlayFinish = false; SetPlayEffectInitPos(attacker); CurSkillID = attacker.GetCurSkillId(); table.SkillDatabase db = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(CurSkillID, 1); if (db != null) { m_uSkillLen = db.skillLength; } }
void OnShowUI() { if (m_data == null) { return; } m_labelName.gameObject.SetActive(false); m_spriteIcon.gameObject.SetActive(true); if (m_data.skillType == 1) { table.SkillDatabase skilldata = GameTableManager.Instance.GetTableItem <table.SkillDatabase>((uint)m_data.skillid); if (skilldata != null) { UIManager.GetTextureAsyn(skilldata.iconPath, ref m_playerAvataCASD, () => { if (null != m_spriteIcon) { m_spriteIcon.mainTexture = null; } }, m_spriteIcon); } } else if (m_data.skillType == 2) { table.RideSkillDes rideSkill = GameTableManager.Instance.GetTableItem <table.RideSkillDes>((uint)m_data.skillid); if (rideSkill != null) { UIManager.GetTextureAsyn(rideSkill.skillIcon, ref m_playerAvataCASD, () => { if (null != m_spriteIcon) { m_spriteIcon.mainTexture = null; } }, m_spriteIcon); } } }
//public void AddSkillCD(uint skillid) //{ // if (m_dictskill == null) // { // Client.IPlayer player = Client.ClientGlobal.Instance().MainPlayer; // Client.ISkillPart m_skillPart = player.GetPart(Client.EntityPart.Skill) as Client.ISkillPart; // m_dictskill = m_skillPart.GetCurSkills(); // } // table.SkillDatabase skillTable = null; // if (m_dictskill.ContainsKey(skillid)) // { // skillTable = m_dictskill[skillid]; // } // if (skillTable == null) // { // skillTable = GameTableManager.Instance.GetTableItem<table.SkillDatabase>(skillid); // } // if (skillTable != null) // { // if (!m_dictSkillCD.ContainsKey(skillid)) // { // m_dictSkillCD.Add(skillid, new SkillCDInfo()); // cdkeys.Add(skillid); // } // m_dictSkillCD[skillid].totalTime = skillTable.dwIntervalTime; // m_dictSkillCD[skillid].skillid = (int)skillid; // m_dictSkillCD[skillid].currTime = skillTable.dwIntervalTime; // } // else // { // table.RideSkillDes rideskill = GameTableManager.Instance.GetTableItem<table.RideSkillDes>(skillid); // if (rideskill == null) // { // return; // } // if (!m_dictSkillCD.ContainsKey(skillid)) // { // m_dictSkillCD.Add(skillid, new SkillCDInfo()); // cdkeys.Add(skillid); // } // m_dictSkillCD[skillid].totalTime = rideskill.skillCD; // m_dictSkillCD[skillid].skillid = (int)skillid; // m_dictSkillCD[skillid].currTime = rideskill.skillCD; // } //} public void AddCommonSkillCD(uint skillid) { if (m_dictskill == null) { Client.IPlayer player = Client.ClientGlobal.Instance().MainPlayer; Client.ISkillPart m_skillPart = player.GetPart(Client.EntityPart.Skill) as Client.ISkillPart; m_dictskill = m_skillPart.GetCurSkills(); } table.SkillDatabase skillTable = null; if (m_dictskill.ContainsKey(skillid)) { skillTable = m_dictskill[skillid]; if (!m_dictSkillCD.ContainsKey(skillid)) { m_dictSkillCD.Add(skillid, new SkillCDInfo()); cdkeys.Add(skillid); } m_dictSkillCD[skillid].totalTime = skillTable.dwCommonCDTime; m_dictSkillCD[skillid].skillid = (int)skillid; m_dictSkillCD[skillid].currTime = skillTable.dwCommonCDTime; } }
public override void Play(ISkillAttacker attacker, SkillEffect se) { m_ef = se; Transform attacker_node = attacker.GetRoot(); if (attacker_node == null) { return; } PlaceFxNodeProp prop = m_NodeProp as PlaceFxNodeProp; if (prop == null) { return; } // Engine.Utility.Log.Error("play PlaceFxNodeProp {0}", prop.fx_name); string stateName = prop.nodeState; int stateIndex = 0; if (!string.IsNullOrEmpty(stateName)) { Client.SkillState state = SkillSystem.GetSkillStateByString(stateName); stateIndex = (int)state - 1; } if (stateIndex < 0) { stateIndex = 0; } Vector3 pos = attacker_node.TransformPoint(prop.position); //Vector3 vscale = attacker_node.localScale * prop.scale; Vector3 vscale = Vector3.one * prop.scale; Vector3 angles = attacker_node.eulerAngles; angles += prop.rotation; if (prop.by_target) { pos = se.GetPlayEffectInitPos() + prop.position; } int level = 0; if (attacker != null) { if (attacker.GetSkillPart() != null) { level = attacker.GetSkillPart().FxLevel; } } m_uEffectID = helper.ReqPlayFx(prop.fx_name, pos, angles, vscale, level); m_startTime = Time.time; uint skillID = se.CurSkillID; m_curDb = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(skillID, 1); if (m_curDb != null) { if (stateIndex >= 0) { if (!string.IsNullOrEmpty(m_curDb.skillEffectTime)) { string[] timeArray = SkillSystem.GetTimeArrayByString(m_curDb.skillEffectTime); if (stateIndex < timeArray.Length) { uint time = 1000; if (uint.TryParse(timeArray[stateIndex], out time)) { m_uEffectLen = time; } } } } } // m_bRmove = false; IEffect ef = GetEffectByID(m_uEffectID); if (ef != null) { Transform trans = ef.GetNodeTransForm(); if (trans == null) { return; } m_placeHandle = trans.gameObject.GetComponent <PlaceFxHandle>(); if (m_placeHandle == null) { m_placeHandle = trans.gameObject.AddComponent <PlaceFxHandle>(); } } m_placeHandle.m_attacker = attacker; m_placeHandle.m_len = m_uEffectLen; m_placeHandle.m_effectid = m_uEffectID; m_placeHandle.m_placeNode = this; m_placeHandle.InitPlaceFx(); }
/// <summary> /// 格子刷新回调 /// </summary> /// <param name="grid"></param> /// <param name="index"></param> private void OnUpdateUIGrid(UIGridBase grid, int index) { if (grid is UIClanTaskGrid) { if (null != m_list_taskInfos && m_list_taskInfos.Count > index) { uint id = m_list_taskInfos[index]; UIClanTaskGrid clanTaskGrid = grid as UIClanTaskGrid; clanTaskGrid.SetGridData(m_mgr.GetClanQuestInfo(id)); } else { Engine.Utility.Log.Error("ClanTask OnUpdateUIGrid error"); } } else if (grid is UIClanApplyGrid) { UIClanApplyGrid caGrid = grid as UIClanApplyGrid; if (null != caGrid && null != m_list_applyUserIds && m_list_applyUserIds.Count > index) { caGrid.SetGridData(m_mgr.GetClanApplyUserInfo(m_list_applyUserIds[index])); } } else if (grid is UIClanDonateGrid) { UIClanDonateGrid cdGrid = grid as UIClanDonateGrid; if (null != cdGrid && null != m_list_donateDatas && m_list_donateDatas.Count > index) { ClanDefine.LocalClanDonateDB cdDB = m_mgr.GetLocalDonateDB(m_list_donateDatas[index]); cdGrid.RegisterDonateAction(DoDonate); if (null != cdDB) { cdGrid.SetGridData(cdDB); } } } else if (grid is UIClanMemberGrid) { UIClanMemberGrid cmGrid = grid as UIClanMemberGrid; //ClanDefine.LocalClanInfo clanInfo = ClanInfo; if (null != cmGrid && index < m_list_memberdatas.Count) { cmGrid.SetGridData(m_list_memberdatas[index]); cmGrid.SetHightLight((m_uint_selectmemberid == m_list_memberdatas[index]) ? true : false); cmGrid.SetBackGround(index); } } else if (grid is UIClanSkillGrid) { UIClanSkillGrid csGrid = grid as UIClanSkillGrid; if (null != csGrid && null != m_list_clanSkillIds && m_list_clanSkillIds.Count > index) { uint skillId = m_list_clanSkillIds[index]; csGrid.SetGridData(m_list_clanSkillIds[index]); table.SkillDatabase skillDB = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(skillId, 1); if (null != skillDB) { bool select = (m_uint_SelectSkillId == skillId) ? true : false; uint lv1 = 0; uint lv2 = 0; bool isLock = false; if (IsSkillMode(ClanSkillMode.Learn)) { lv1 = m_mgr.GetClanSkillLearnLv(skillId); lv2 = m_mgr.GetClanSkillDevLv(skillId); isLock = (lv1 >= lv2); } else if (IsSkillMode(ClanSkillMode.Dev)) { lv1 = m_mgr.GetClanSkillDevLv(skillId); lv2 = skillDB.dwMaxLevel; } csGrid.SetInfo(skillDB.strName , string.Format("{0}/{1}", lv1, lv2) , skillDB.iconPath , select, isLock); } } } else if (grid is UIClanHonorGrid) { UIClanHonorGrid cdGrid = grid as UIClanHonorGrid; if (null != cdGrid && null != m_list_honorInfos && m_list_honorInfos.Count > index) { cdGrid.SetGridData(m_list_honorInfos[index]); } } else if (grid is UIClanDecareWaRivalryGrid) { UIClanDecareWaRivalryGrid dwg = grid as UIClanDecareWaRivalryGrid; if (null != m_lst_Rivalry && m_lst_Rivalry.Count > index) { dwg.SetGridData(m_mgr.GetClanRivalryInfo(m_lst_Rivalry[index])); } } else if (grid is UIClanDeclareWarGrid) { UIClanDeclareWarGrid dwg = grid as UIClanDeclareWarGrid; if (null != m_lst_Rivalry && m_lst_Rivalry.Count > index) { dwg.SetGridData(m_mgr.GetClanRivalryInfo(m_lst_Rivalry[index])); dwg.SetIndex(index); } } else if (grid is UIClanTabGrid) { UIClanTabGrid tab = grid as UIClanTabGrid; tab.SetGridData(index); tab.SetName(m_list_tabContents[index]); if (index == 0 && previous == null) { previous = tab; tab.SetHightLight(true); } } }
/// <summary> /// 更新技能信息 /// </summary> private void UpdateSkill() { if (!IsInitMode(ClanPanelMode.Skill)) { return; } TextManager tmgr = DataManager.Manager <TextManager>(); if (null != m_ctor_SkillScrollView) { m_ctor_SkillScrollView.UpdateActiveGridData(); } bool isLearn = IsSkillMode(ClanSkillMode.Learn); //当前等级 uint curLv = isLearn ? m_mgr.GetClanSkillLearnLv(m_uint_SelectSkillId) : m_mgr.GetClanSkillDevLv(m_uint_SelectSkillId); table.SkillDatabase skDBCur = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(m_uint_SelectSkillId, (int)curLv); //技能最大等级 uint maxLv = (null != skDBCur) ? skDBCur.dwMaxLevel : 1; //最大等级 uint limitLv = isLearn ? m_mgr.GetClanSkillDevLv(m_uint_SelectSkillId) : ((null != skDBCur) ? skDBCur.dwMaxLevel : 0); bool isMaxLv = (curLv == maxLv); table.SkillDatabase skDBNext = (!isMaxLv) ? GameTableManager.Instance.GetTableItem <table.SkillDatabase>(m_uint_SelectSkillId, (int)curLv + 1) : null; //名称 if (null != m_label_SkillName) { m_label_SkillName.text = (null != skDBCur) ? skDBCur.strName : ""; } //等级 if (null != m_label_SkillLv) { m_label_SkillLv.text = tmgr.GetLocalFormatText(LocalTextType.Local_TXT_FM_Lv, "", curLv); } //技能效果 if (null != m_label_SkillEffectCur) { m_label_SkillEffectCur.text = (null != skDBCur) ? skDBCur.strDesc : ""; } //技能下一级效果 if (null != m_label_SkillEffectNext) { if (m_label_SkillEffectNext.gameObject.activeSelf == isMaxLv) { m_label_SkillEffectNext.gameObject.SetActive(!isMaxLv); } if (!isMaxLv) { m_label_SkillEffectNext.text = ColorManager.GetColorString(ColorType.Green , (null != skDBNext) ? skDBNext.strDesc : ""); } } //tips if (null != m_label_SkillTips) { string tips = ""; if (isMaxLv) { tips = ColorManager.GetColorString(ColorType.Red, tmgr.GetLocalText(LocalTextType.Local_TXT_UpgradeMax)); } else { string name = (isLearn) ? tmgr.GetLocalText(LocalTextType.Local_TXT_Learn) : tmgr.GetLocalText(LocalTextType.Local_TXT_Dev); string who = (isLearn) ? tmgr.GetLocalText(LocalTextType.Local_TXT_Person) : tmgr.GetLocalText(LocalTextType.Local_TXT_Clan); table.ClanSkillDataBase sdbNext = GameTableManager.Instance.GetTableItem <table.ClanSkillDataBase>(m_uint_SelectSkillId, (int)curLv + 1); ColorType cType = ColorType.Green; if ((isLearn && null != skDBNext && DataManager.Instance.PlayerLv < skDBNext.dwNeedLevel) || (!isLearn && null != sdbNext && null != ClanInfo && ClanInfo.Lv < sdbNext.needClanLv)) { cType = ColorType.Red; } uint lvuint = 0; if (isLearn) { lvuint = (null != skDBNext) ? skDBNext.dwNeedLevel : 0; } else { lvuint = (null != sdbNext) ? sdbNext.needClanLv : 0; } string lvStr = ColorManager.GetColorString(cType, tmgr.GetLocalFormatText(LocalTextType.Local_TXT_FM_Lv, who, lvuint)); tips = tmgr.GetLocalFormatText(LocalTextType.Local_TXT_NextLvNeed, name, lvStr); } m_label_SkillTips.text = tips; } if (null != m_trans_Cost && m_trans_Cost.gameObject.activeSelf == isMaxLv) { m_trans_Cost.gameObject.SetActive(!isMaxLv); } if (!isMaxLv) { //消耗 if (null != m_trans_SkillCost1 && null != m_trans_SkillCost2) { UICurrencyGrid cGrid1 = null; UICurrencyGrid cGrid2 = null; cGrid1 = m_trans_SkillCost1.GetComponent <UICurrencyGrid>(); cGrid2 = m_trans_SkillCost2.GetComponent <UICurrencyGrid>(); UICurrencyGrid.UICurrencyGridData d1 = new UICurrencyGrid.UICurrencyGridData(ClanDefine.CONST_ICON_ZG_NAME, 0); UICurrencyGrid.UICurrencyGridData d2 = new UICurrencyGrid.UICurrencyGridData(ClanDefine.CONST_ICON_ZG_NAME, 0); if (isLearn) { d1 = new UICurrencyGrid.UICurrencyGridData( MallDefine.GetCurrencyIconNameByType(GameCmd.MoneyType.MoneyType_Gold), skDBNext.dwMoney); d2 = new UICurrencyGrid.UICurrencyGridData( MallDefine.GetCurrencyIconNameByType(GameCmd.MoneyType.MoneyType_Reputation), skDBNext.dwNeedSW); m_trans_SkillCost2.gameObject.SetActive(true); m_label_SkillRemainNum.text = UserData.Reputation.ToString(); UIManager.GetAtlasAsyn(MallDefine.GetCurrencyIconNameByType(GameCmd.MoneyType.MoneyType_Reputation), ref m_priceAsynSeed, () => { if (null != m_sprite_SkillRemainIcon) { m_sprite_SkillRemainIcon.atlas = null; } }, m_sprite_SkillRemainIcon); } else { table.ClanSkillDataBase cskdbNext = GameTableManager.Instance.GetTableItem <table.ClanSkillDataBase>(m_uint_SelectSkillId, (int)curLv + 1); if (null != cskdbNext) { d1 = new UICurrencyGrid.UICurrencyGridData(ClanDefine.CONST_ICON_ZJ_NAME, cskdbNext.coseZJ); //d2 = new UICurrencyGrid.UICurrencyGridData(ClanDefine.CONST_ICON_ZJ_NAME, cskdbNext.coseZJ); } m_trans_SkillCost2.gameObject.SetActive(false); m_label_SkillRemainNum.text = DataManager.Manager <ClanManger>().ClanInfo.Money.ToString(); UIManager.GetAtlasAsyn(ClanDefine.CONST_ICON_ZJ_NAME, ref m_priceAsynSeed, () => { if (null != m_sprite_SkillRemainIcon) { m_sprite_SkillRemainIcon.atlas = null; } }, m_sprite_SkillRemainIcon); } if (null != cGrid1) { cGrid1.SetGridData(d1); } if (null != cGrid2) { cGrid2.SetGridData(d2); } bool canSee = IsSkillMode(ClanSkillMode.Learn); if (null != m_btn_BtnLearn && m_btn_BtnLearn.gameObject.activeSelf != canSee) { m_btn_BtnLearn.gameObject.SetActive(canSee); } canSee = !canSee; if (null != m_btn_BtnDev && m_btn_BtnDev.gameObject.activeSelf != canSee) { m_btn_BtnDev.gameObject.SetActive(canSee); } } } }