Example #1
0
        protected override void PostInitializeComponent()
        {
            Entity            owner = GetOwnerEntity();
            PositionComponent position_component = owner.GetComponent(PositionComponent.ID) as PositionComponent;

            if (position_component == null)
            {
                return;
            }

            EffectManager effect_manager = GetLogicWorld().GetEffectManager();

            if (m_enter_generator_cfgid > 0)
            {
                m_enter_generator = effect_manager.CreateGenerator(m_enter_generator_cfgid, owner);
            }
            if (m_period_generator_cfgid > 0)
            {
                m_period_generator = effect_manager.CreateGenerator(m_period_generator_cfgid, owner);
            }

            m_region = GetLogicWorld().GetRegionCallbackManager().CreateRegion();
            m_region.Construct(this, owner);
            m_region.SetUpdateInterval(m_region_update_interval);
            m_region.SetTargetGatheringParam(m_target_gathering_param);
            m_region.Activate();

            if (m_period_generator != null)
            {
                m_task = LogicTask.Create <ComponentCommonTask>();
                m_task.Construct(this);
                var schedeler = GetLogicWorld().GetTaskScheduler();
                schedeler.Schedule(m_task, GetCurrentTime(), m_period, m_period);
            }
        }
        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
        }
Example #3
0
        protected override void OnDestruct()
        {
            if (m_die_task != null)
            {
                m_die_task.Cancel();
                LogicTask.Recycle(m_die_task);
                m_die_task = null;
            }
            EffectManager effect_manager = GetLogicWorld().GetEffectManager();

            if (m_born_generator != null)
            {
                effect_manager.DestroyGenerator(m_born_generator.ID, GetOwnerEntityID());
                m_born_generator = null;
            }
            if (m_die_generator != null)
            {
                effect_manager.DestroyGenerator(m_die_generator.ID, GetOwnerEntityID());
                m_die_generator = null;
            }
            if (m_killer_generator != null)
            {
                effect_manager.DestroyGenerator(m_killer_generator.ID, GetOwnerEntityID());
                m_killer_generator = null;
            }
        }
Example #4
0
        protected override void OnDestruct()
        {
            EffectManager effect_manager = GetLogicWorld().GetEffectManager();

            if (m_enter_generator != null)
            {
                effect_manager.DestroyGenerator(m_enter_generator.ID, GetOwnerEntityID());
                m_enter_generator = null;
            }
            if (m_period_generator != null)
            {
                effect_manager.DestroyGenerator(m_period_generator.ID, GetOwnerEntityID());
                m_period_generator = null;
            }
            if (m_region != null)
            {
                m_region.Destruct();
                m_region = null;
            }
            if (m_task != null)
            {
                m_task.Cancel();
                LogicTask.Recycle(m_task);
                m_task = null;
            }
        }
        public override void Inflict(FixPoint start_time)
        {
            if (m_generator == null)
            {
                return;
            }
            if (m_delay_time == FixPoint.Zero)
            {
                Impact();
            }
            else
            {
                if (m_delay_task == null)
                {
                    m_delay_task = LogicTask.Create <ComponentCommonTask>();
                    m_delay_task.Construct(this);
                }
                var schedeler = GetLogicWorld().GetTaskScheduler();
                schedeler.Schedule(m_delay_task, GetCurrentTime(), m_delay_time);
            }

#if COMBAT_CLIENT
            if (m_render_effect_cfgid > 0 && m_render_delay_time > FixPoint.Zero)
            {
                if (m_render_delay_task == null)
                {
                    m_render_delay_task = LogicTask.Create <PlayRenderEffectTask>();
                    m_render_delay_task.Construct(this);
                }
                var schedeler = GetLogicWorld().GetTaskScheduler();
                schedeler.Schedule(m_render_delay_task, GetCurrentTime(), m_render_delay_time);
            }
#endif
        }
 protected override void OnDestruct()
 {
     if (m_task != null)
     {
         m_task.Cancel();
         LogicTask.Recycle(m_task);
         m_task = null;
     }
 }
Example #7
0
 protected override void OnDestruct()
 {
     DeleteLocomotorSpeedRateTask();
     if (m_task != null)
     {
         m_task.Cancel();
         LogicTask.Recycle(m_task);
         m_task = null;
     }
 }
Example #8
0
 void CancelTask()
 {
     if (m_combo_task == null)
     {
         return;
     }
     m_combo_task.Cancel();
     LogicTask.Recycle(m_combo_task);
     m_combo_task = null;
 }
Example #9
0
 protected override void OnDestruct()
 {
     SignalListenerContext.Recycle(m_listener_context);
     m_listener_context = null;
     if (m_task != null)
     {
         m_task.Cancel();
         LogicTask.Recycle(m_task);
         m_task = null;
     }
 }
Example #10
0
        void Schedule()
        {
            if (m_task == null)
            {
                m_task = LogicTask.Create <ComponentCommonTask>();
                m_task.Construct(this);
            }
            var schedeler = GetLogicWorld().GetTaskScheduler();

            schedeler.Schedule(m_task, GetCurrentTime(), FixPoint.One, FixPoint.One);
        }
        protected override void OnDestruct()
        {
            RecyclableObject.Recycle(m_damage_amount);
            m_damage_amount = null;

            if (m_period_task != null)
            {
                m_period_task.Cancel();
                LogicTask.Recycle(m_period_task);
                m_period_task = null;
            }
        }
        public void ScheduleTargeting(FixPoint delay)
        {
            if (m_task == null)
            {
                m_task = LogicTask.Create <ComponentCommonTask>();
                m_task.Construct(this);
            }
            LogicWorld logic_world    = GetLogicWorld();
            var        task_scheduler = logic_world.GetTaskScheduler();

            task_scheduler.Schedule(m_task, logic_world.GetCurrentTime(), delay);
        }
 public override void Apply()
 {
     ApplyDamage();
     if (m_period > FixPoint.Zero)
     {
         if (m_period_task == null)
         {
             m_period_task = LogicTask.Create <ComponentCommonTask>();
             m_period_task.Construct(this);
         }
         var schedeler = GetLogicWorld().GetTaskScheduler();
         schedeler.Schedule(m_period_task, GetCurrentTime(), m_period, m_period);
     }
 }
Example #14
0
 protected override void OnDestruct()
 {
     m_targeting_component = null;
     SignalListenerContext.Recycle(m_listener_context);
     m_listener_context = null;
     if (m_task != null)
     {
         m_task.Cancel();
         LogicTask.Recycle(m_task);
         m_task = null;
     }
     ClearTargets();
     m_current_enemy = null;
 }
 public override void Apply()
 {
     m_remain_count = m_object_count;
     CreateOneObject();
     if (m_object_count > 1 || m_object_count == -1)
     {
         if (m_task == null)
         {
             m_task = LogicTask.Create <ComponentCommonTask>();
             m_task.Construct(this);
         }
         var schedeler = GetLogicWorld().GetTaskScheduler();
         schedeler.Schedule(m_task, GetCurrentTime(), m_interval, m_interval);
     }
 }
        protected override void OnDestruct()
        {
            if (m_generator != null)
            {
                GetLogicWorld().GetEffectManager().DestroyGenerator(m_generator.ID, GetOwnerEntityID());
                m_generator = null;
            }

            if (m_task != null)
            {
                m_task.Cancel();
                LogicTask.Recycle(m_task);
                m_task = null;
            }
        }
Example #17
0
        void StartMoving(bool from_command = true)
        {
            if (m_task == null)
            {
                m_task = LogicTask.Create <ComponentCommonTask>();
                m_task.Construct(this);
            }
            var schedeler = GetLogicWorld().GetTaskScheduler();

            schedeler.Schedule(m_task, GetCurrentTime(), LOGIC_UPDATE_INTERVAL, LOGIC_UPDATE_INTERVAL);
            if (!m_is_moving)
            {
                m_is_moving = true;
                OnMovementStarted(from_command);
            }
        }
Example #18
0
 protected override void OnActionEnter()
 {
     if (m_collision_target_generator_cfgid > 0 && m_collision_target_generator == null)
     {
         SkillComponent skill_component = m_context.GetData <SkillComponent>(BTContextKey.OwnerSkillComponent);
         m_collision_target_generator = GetLogicWorld().GetEffectManager().CreateGenerator(m_collision_target_generator_cfgid, skill_component.GetOwnerEntity());
         if (m_collision_target_generator != null && m_collided_targets == null)
         {
             m_collided_targets = new List <int>();
         }
     }
     if (m_task == null)
     {
         m_task = LogicTask.Create <ComponentCommonTask>();
         m_task.Construct(this);
     }
 }
Example #19
0
 public override void Inflict(FixPoint start_time)
 {
     if (m_delay_time == FixPoint.Zero)
     {
         RealInflict();
     }
     else
     {
         if (m_delay_task == null)
         {
             m_delay_task = LogicTask.Create <ComponentCommonTask>();
             m_delay_task.Construct(this);
         }
         var schedeler = GetLogicWorld().GetTaskScheduler();
         schedeler.Schedule(m_delay_task, GetCurrentTime(), m_delay_time);
     }
 }
Example #20
0
 public void SetLifeTime(FixPoint life_time)
 {
     m_life_time = life_time;
     if (m_die_task != null)
     {
         m_die_task.Cancel();
     }
     if (m_life_time > FixPoint.Zero)
     {
         if (m_die_task == null)
         {
             m_die_task = LogicTask.Create <ComponentCommonTask>();
             m_die_task.Construct(this);
         }
         var schedeler = GetLogicWorld().GetTaskScheduler();
         schedeler.Schedule(m_die_task, GetCurrentTime(), m_life_time);
     }
 }
Example #21
0
        protected override void PostInitializeComponent()
        {
            ResetSpawnAreaRange();
            if (m_update_interval < FixPoint.One)
            {
                m_update_interval = FixPoint.One;
            }
            m_listener_context = SignalListenerContext.CreateForEntityComponent(GetLogicWorld().GenerateSignalListenerID(), ParentObject.ID, m_component_type_id);
            m_task             = LogicTask.Create <ComponentCommonTask>();
            m_task.Construct(this);
            var schedeler = GetLogicWorld().GetTaskScheduler();

            schedeler.Schedule(m_task, GetCurrentTime(), m_update_interval, m_update_interval);
            for (int i = 0; i < m_init_count; ++i)
            {
                SpawnOneObject();
            }
        }
Example #22
0
 public override void Apply()
 {
     if (m_generator == null)
     {
         return;
     }
     m_remain_count = m_combo_count;
     ApplyOnce();
     if (m_combo_count > 1 || m_combo_count == -1)
     {
         if (m_combo_task == null)
         {
             m_combo_task = LogicTask.Create <ComponentCommonTask>();
             m_combo_task.Construct(this);
         }
         var schedeler = GetLogicWorld().GetTaskScheduler();
         schedeler.Schedule(m_combo_task, GetCurrentTime(), m_combo_interval, m_combo_interval);
     }
 }
Example #23
0
 protected override void ResetRuntimeData()
 {
     if (m_collision_target_generator != null)
     {
         SkillComponent skill_component = m_context.GetData <SkillComponent>(BTContextKey.OwnerSkillComponent);
         GetLogicWorld().GetEffectManager().DestroyGenerator(m_collision_target_generator.ID, skill_component.GetOwnerEntityID());
         m_collision_target_generator = null;
     }
     if (m_collided_targets != null)
     {
         m_collided_targets.Clear();
     }
     if (m_task != null)
     {
         m_task.Cancel();
         LogicTask.Recycle(m_task);
         m_task = null;
     }
     m_remain_time = FixPoint.Zero;
 }