public static Orb Instantiate(ISkillCaster p_SkillCaster, IOrbCaster p_OrbCaster, IOrbTarget p_OrbTarget, OrbData p_OrbData) { Orb _orb = new Orb(); _orb.SkillCaster = p_SkillCaster; _orb.OrbCaster = p_OrbCaster; _orb.OrbTarget = p_OrbTarget; return(_orb); }
public Summon BuildSummon(uint summon_id, ISkillCaster caster, ISummonCaster summon_caster, ISkillTarget summon_target, SMTargetGet trigger_target_get) { Summon summon = new Summon(); summon.Create(GameCenter.Instance.DataManager.skillSummonDB.Get(id, summon_id), m_Skill, caster, summon_caster, summon_target); summon.TriggerTargetsGet = trigger_target_get; summons.Add(summon); return(summon); }
/// <summary> /// Create orb instance /// </summary> /// <param name="p_SkillCaster"></param> /// <param name="p_OrbCaster"></param> /// <param name="p_OrbTarget"></param> /// <param name="p_OrbData"></param> /// <returns></returns> public static Orb Instantiate(ISkillCaster p_SkillCaster, IOrbCaster p_OrbCaster, IOrbTarget p_OrbTarget, OrbData p_OrbData) { Orb _orb = new Orb(p_OrbData); //Init some data _orb.SkillCaster = p_SkillCaster; _orb.OrbCaster = p_OrbCaster; _orb.OrbTarget = p_OrbTarget; #region Init action motion trigger if (p_OrbData.createActions != null) { for (int i = 0; i < p_OrbData.createActions.Length; i++) { OrbAction ac = SkillFactory.CreateAction(p_OrbData.createActions[i]); ac.Holder = _orb; _orb.CreateActions.Add(ac); } } if (p_OrbData.triggerActions != null) { for (int i = 0; i < p_OrbData.triggerActions.Length; i++) { OrbAction ac = SkillFactory.CreateAction(p_OrbData.triggerActions[i]); ac.Holder = _orb; _orb.TriggerActions.Add(ac); } } if (p_OrbData.destroyActions != null) { for (int i = 0; i < p_OrbData.destroyActions.Length; i++) { OrbAction ac = SkillFactory.CreateAction(p_OrbData.destroyActions[i]); ac.Holder = _orb; _orb.DestroyActions.Add(ac); } } if (p_OrbData.motions != null) { for (int i = 0; i < p_OrbData.motions.Length; i++) { OrbMotion mo = SkillFactory.CreateMotion(p_OrbData.motions[i]); mo.Holder = _orb; _orb.Motions.Add(mo); } } #endregion _orb.TriggerCreate(); return(_orb); }
public Action StartCastSkill(Skill skill, float castTime, GameObject skillObj) { if (castTime <= 0) { return(null); } // 技能施放冷卻計算 if (skill.coolDownType == SkillCoolDownType.CoolInCast) { StartCoroutine(GetIntoCoolDown(skill)); } ISkillCaster skillCaster = skillObj.GetComponent <ISkillCaster>(); return(delegate { skillCaster.CastSkill(); }); }
public void Create(ISkillCaster caster, SkillStaticData data) { holder = caster; skillStaticData = data; skillDynamicData = new SkillDynamicData(this); m_Machine = new Machine <Skill>(this); skillState = new SkillDynamicState(this); timeLine = new TimeLine <Skill>(skillStaticData.id, this, skillStaticData.skill_time); timeLine.AddEvent(GameCenter.Instance.DataManager.timelineDB.GetTimeLineEvents(skillStaticData.id)); //timeLine.AddEvent(new TimeEventSkillSummon((int)skillStaticData.id, 10020001, 0.5f)); m_Machine.Register <SkillStReady>(); m_Machine.Register <SkillStSing>(); m_Machine.Register <SkillStCast>(); m_Machine.Register <SkillStCoolDown>(); }
public SMTargetGet(ISkillCaster holder) { m_Holder = holder; }
public SMTargetGetNear(ISkillCaster holder) : base(holder) { }
/// <summary> /// 召唤物初始化 /// </summary> /// <param name="summon_data"></param> /// <param name="skill"></param> /// <param name="skill_caster"></param> /// <param name="summon_caster"></param> public void Create(SummonData summon_data, Skill skill, ISkillCaster skill_caster, ISummonCaster summon_caster, ISkillTarget summon_target) { m_SummonData = summon_data; m_Skill = skill; m_SkillCaster = skill_caster; m_SummonCaster = summon_caster; m_TriggerCount = summon_data.prop.GetInt(PropertiesKey.SUMMON_TRIGGERCOUNT, 0); m_Duration = summon_data.prop.GetInt(PropertiesKey.SUMMON_DURATION, 20); //要在下一行代码之前,因为在获取motion里面初始化中要使用此对象 m_SummonMoveTarget = summon_target; m_Motions = GameCenter.Instance.DataManager.skillMotionDB.GetMotion(m_SummonData.owner, m_SummonData.id, this); m_Actions = GameCenter.Instance.DataManager.skillActionDB.GetAction(m_SummonData.owner, m_SummonData.id, this); GameObject summon = new GameObject(summon_data.prop.GetString(PropertiesKey.SUMMON_NAME) + "_fly"); Transform = summon.GetComponent <Transform>(); switch (summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_TYPE)) { case "summon": { if (m_SummonCaster != null && m_SummonCaster.GetMount(summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_NAME)) != null) { Transform.position = m_SummonCaster.GetMount(summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_NAME)).position + summon_data.prop.GetVector3(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_OFFSET); } break; } case "caster": { Transform.position = m_SkillCaster.GetMount(summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_NAME)).position + summon_data.prop.GetVector3(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_OFFSET); break; } case "scene": { Transform.position = summon_data.prop.GetVector3(PropertiesKey.SUMMON_CREATE_EFFECT_NODE_OFFSET); break; } } //生成特效 if (!string.IsNullOrEmpty(summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NAME))) { Effect create_effect = GameCenter.Instance.EffectManager.Create(summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_EFFECT_NAME), Transform.position, Transform.rotation); create_effect.Destroy(); //Effect.SetParent(Transform, true); } //生成音效 GameCenter.Instance.AudioManager.Play(eAudioLayer.EFFECTAUDIO, summon_data.prop.GetString(PropertiesKey.SUMMON_CREATE_AUDIO_NAME)); // if (!string.IsNullOrEmpty(summon_data.prop.GetString(PropertiesKey.SUMMON_FLY_EFFECT_NAME))) { Effect = GameCenter.Instance.EffectManager.Create(summon_data.prop.GetString(PropertiesKey.SUMMON_FLY_EFFECT_NAME), Transform.position, Transform.rotation); Effect.SetParent(Transform, true); } }
public void ReplaceHoler(ISkillCaster caster) { holder = caster; }
public SkillHub(ISkillCaster caster) { holder = caster; }