Esempio n. 1
0
        public bool CheckRunEffEnabl(int skillId, ISkillTarget target)
        {
            EffSkillInstance inst = new EffSkillInstance();

            inst.m_data = EffSkill.s_tblEffSkills.Find(iterSkill1 => EffSkill.MatchId(iterSkill1, skillId));
            if (null == inst.m_data)
            {
                // TODO : a warning message of no such skill
                return(false);
            }

            if (null != m_effShareSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchType(iterSkill0, inst.m_data.m_cdInfo.m_type)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(false);
            }

            if (null != m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(false);
            }
            // TODO : cd info check

            if (!inst.m_data.CheckTargetsValid(this, target))
            {
                // TODO : a warning message of not target in scope
                return(false);
            }
            return(true);
        }
Esempio n. 2
0
        public EffSkillInstance RunEffOnProxy(int skillId, ISkillTarget target)
        {
            EffSkillInstance inst = new EffSkillInstance();

            inst.m_data = EffSkill.s_tblEffSkills.Find(iterSkill1 => EffSkill.MatchId(iterSkill1, skillId));
            if (null == inst.m_data)
            {
                // TODO : a warning message of no such skill
                return(null);
            }

            if (null != m_effShareSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchType(iterSkill0, inst.m_data.m_cdInfo.m_type)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(null);
            }

            if (null != m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(null);
            }
            // TODO : cd info check

            //if (!inst.m_data.CheckTargetsValid(this, target))
            //{
            //	// TODO : a warning message of not target in scope
            //	return null;
            //}

            inst.m_timeStartPrep = Time.time;
            inst.m_runner        = new CoroutineStoppable(this, inst.m_data.ExecProxy(this, target, inst));
            inst.m_sharedRunner  = new CoroutineStoppable(this, inst.m_data.SharingCooling(this, inst));
            return(inst);
        }
Esempio n. 3
0
        public bool IsSkillRunning(int skillId)
        {
            EffSkillInstance inst = m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId));

            return(inst != null &&
                   inst.m_section > EffSkillInstance.EffSection.None &&
                   inst.m_section < EffSkillInstance.EffSection.Completed);
        }
Esempio n. 4
0
        public bool IsSkillCooling(int skillId)
        {
            EffSkill skill = EffSkill.s_tblEffSkills.Find(iterSkill1 => EffSkill.MatchId(iterSkill1, skillId));

            if (skill == null)
            {
                return(false);
            }

            if (null != m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(true);
            }

            return(false);
        }
Esempio n. 5
0
        // TODO : Confirm how an enemy to attack building
        public EffSkillInstance RunEff(int skillId, ISkillTarget target)
        {
            EffSkillInstance inst = new EffSkillInstance();

            inst.m_data = EffSkill.s_tblEffSkills.Find(iterSkill1 => EffSkill.MatchId(iterSkill1, skillId));
            if (null == inst.m_data)
            {
                // TODO : a warning message of no such skill
                return(null);
            }

            if (null != m_effShareSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchType(iterSkill0, inst.m_data.m_cdInfo.m_type)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(null);
            }

            if (null != m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)))
            {
                // TODO : a warning message of another instance of this effskill is still running
                return(null);
            }
            // TODO : cd info check

            if (!inst.m_data.CheckTargetsValid(this, target))
            {
                // TODO : a warning message of not target in scope
                return(null);
            }

            if (!GameConfig.IsMultiMode || IsController)
            {
                if (GameConfig.IsMultiMode)
                {
                    if (target is CommonInterface)
                    {
                        CommonInterface ta = target as CommonInterface;
                        if (null != ta && null != ta.OwnerView)
                        {
                            RPCServer(EPacketType.PT_InGame_SkillCast, skillId, ta.OwnerView.viewID);
                        }
                        else
                        {
                            RPCServer(EPacketType.PT_InGame_SkillCast, skillId, uLink.NetworkViewID.unassigned);
                        }
                    }
                    else if (target is DefaultPosTarget)
                    {
                        RPCServer(EPacketType.PT_InGame_SkillShoot, skillId, target.GetPosition());
                    }
                    else
                    {
                        RPCServer(EPacketType.PT_InGame_SkillCast, skillId, uLink.NetworkViewID.unassigned);
                    }
                }

                inst.m_timeStartPrep = Time.time;
                inst.m_runner        = new CoroutineStoppable(this, inst.m_data.Exec(this, target, inst));
                inst.m_sharedRunner  = new CoroutineStoppable(this, inst.m_data.SharingCooling(this, inst));
            }
            return(inst);
        }
Esempio n. 6
0
 public EffSkillInstance GetRunningEff(int skillId)
 {
     return(m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)));
 }
Esempio n. 7
0
 public bool IsEffRunning(int skillId)
 {
     return(m_effSkillInsts.Find(iterSkill0 => EffSkillInstance.MatchId(iterSkill0, skillId)) != null);
 }