public void PlayRenderEffect() { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); }
public void Impact() { m_remain_attack_cnt = m_combo_attack_cnt; if (m_combo_type_crc == ComboType_Time) { CreateOneObject(0); if (m_combo_attack_cnt > 1) { if (m_task == null) { m_task = LogicTask.Create <ComponentCommonTask>(); m_task.Construct(this); } var schedeler = GetLogicWorld().GetTaskScheduler(); schedeler.Schedule(m_task, GetCurrentTime(), m_combo_interval, m_combo_interval); } } else if (m_combo_type_crc == ComboType_Angle || m_combo_type_crc == ComboType_Circle) { for (int i = 0; i < m_combo_attack_cnt; ++i) { CreateOneObject(i); } } #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } #endif }
protected override void OnActionUpdate(FixPoint delta_time) { #if COMBAT_CLIENT Skill skill = GetOwnerSkill(); PlayRenderEffectMessage start_msg = RenderMessage.Create <PlayRenderEffectMessage>(); start_msg.ConstructAsPlay(skill.GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(start_msg); #endif }
public void Impact() { #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { if (m_remain_attack_cnt != m_combo_attack_cnt) { PlayRenderEffectMessage stop_msg = RenderMessage.Create <PlayRenderEffectMessage>(); stop_msg.ConstructAsStop(GetOwnerEntityID(), m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(stop_msg); } PlayRenderEffectMessage start_msg = RenderMessage.Create <PlayRenderEffectMessage>(); start_msg.ConstructAsPlay(GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(start_msg); } #endif --m_remain_attack_cnt; if (m_remain_attack_cnt <= 0) { if (m_combo_task != null) { m_combo_task.Cancel(); } } Skill skill = GetOwnerSkill(); if (!skill.GetDefinitionComponent().NeedGatherTargets) { skill.BuildSkillTargets(); } Entity attacker = GetOwnerEntity(); List <Target> targets = skill.GetTargets(); LogicWorld logic_world = GetLogicWorld(); for (int i = 0; i < targets.Count; ++i) { m_current_target = targets[i].GetEntity(logic_world); if (m_current_target == null) { continue; } DamagableComponent damageable_component = m_current_target.GetComponent(DamagableComponent.ID) as DamagableComponent; if (damageable_component == null) { continue; } Damage damage = RecyclableObject.Create <Damage>(); damage.m_attacker_id = attacker.ID; damage.m_defender_id = m_current_target.ID; damage.m_damage_type = m_damage_type_id; damage.m_damage_amount = m_damage_amount.Evaluate(this); damage.m_damage_amount = DamageSystem.Instance.CalculateDamageAmount(m_damage_type_id, damage.m_damage_amount, attacker, m_current_target); damage.m_render_effect_cfgid = m_damage_render_effect_cfgid; damage.m_sound_cfgid = m_damage_sound_cfgid; damageable_component.TakeDamage(damage); } m_current_target = null; }
public override void Apply() { #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } #endif }
void ActivateState(StateData data) { for (int i = 0; i < data.m_disable_componnets.Count; ++i) { Component component = ParentObject.GetComponent(data.m_disable_componnets[i]); if (component != null) { component.Disable(); } } #if COMBAT_CLIENT if (data.m_render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), data.m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } #endif }
bool PostActivate(FixPoint start_time) { if (m_definition_component.NeedGatherTargets) { BuildSkillTargets(); if (!CheckTargetRange()) { Deactivate(false); return(false); } } FixPoint mana_cost = m_definition_component.ManaCost; if (mana_cost > FixPoint.Zero) { if (!m_mana_component.ChangeMana(m_definition_component.ManaType, -mana_cost)) { Deactivate(false); return(false); } } var enumerator = m_components.GetEnumerator(); while (enumerator.MoveNext()) { SkillComponent cmp = enumerator.Current.Value as SkillComponent; if (cmp != null) { cmp.PostActivate(start_time); } } m_definition_component.StartCooldownTimer(start_time, m_owner_component); if (m_definition_component.InflictTime > FixPoint.Zero) { m_definition_component.StartInflictingTimer(start_time, m_owner_component); } else { Inflict(start_time); } if (m_definition_component.NormalAttack) { GetOwnerEntity().SendSignal(SignalType.CastNormalAttack); } else if (!m_definition_component.StartsActive) { GetOwnerEntity().SendSignal(SignalType.CastSkill); } string main_animation = m_definition_component.GenerateMainActionNameLogicly(); #if COMBAT_CLIENT if (main_animation != null) { PlayAnimationRenderMessage msg = RenderMessage.Create <PlayAnimationRenderMessage>(); FixPoint speed = m_definition_component.NormalAttack ? m_owner_component.AttackSpeedRate : FixPoint.One; if (m_definition_component.m_expiration_animation == null) { msg.Construct(GetOwnerEntityID(), main_animation, AnimationName.IDLE, true, speed); } else { msg.Construct(GetOwnerEntityID(), main_animation, m_definition_component.m_expiration_animation, true, speed); } GetLogicWorld().AddRenderMessage(msg); } int render_effect_cfgid = m_definition_component.GetMainRenderEffectConfigID(); if (render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } if (m_definition_component.m_main_sound > 0) { PlaySoundMessage msg = RenderMessage.Create <PlaySoundMessage>(); msg.Construct(GetOwnerEntityID(), m_definition_component.m_main_sound, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } #endif return(true); }