示例#1
0
        public void OnHandleClickSelectTargetBtn(AttackTargetType _targetType)
        {
            OperateMode operateMode = OperateMode.DefaultMode;
            Player      hostPlayer  = Singleton <GamePlayerCenter> .instance.GetHostPlayer();

            if (hostPlayer != null)
            {
                operateMode = hostPlayer.GetOperateMode();
            }
            if (operateMode == OperateMode.DefaultMode)
            {
                return;
            }
            if (_targetType != this.m_TargetType)
            {
                this.m_CurSelectedActor.Release();
            }
            SelectEnemyType selectType = SelectEnemyType.SelectLowHp;

            if (hostPlayer != null)
            {
                selectType = hostPlayer.AttackTargetMode;
            }
            uint selectTargetByTag = this.GetSelectTargetByTag(_targetType, selectType);

            Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(selectTargetByTag);

            this.m_TargetType = _targetType;
        }
示例#2
0
        protected override uint AdvancedModeCommonAttackSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
        {
            uint num = this.commonAttackTargetID;

            if (base.IsValidTargetID(num) && base.TargetType(num, ActorTypeDef.Actor_Type_Hero))
            {
                this.SetCommonAttackTarget(num, false);
                bSearched = false;
                return(num);
            }
            bSearched = true;
            int srchR2;

            if (type != SelectEnemyType.SelectLowHp)
            {
                srchR2 = this.actor.ActorControl.SearchRange;
                return(Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, srchR2, 0u, true, SearchTargetPriority.CommonAttack));
            }
            srchR2 = this.actor.ActorControl.AttackRange;
            num    = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, srchR2, 0u, false, SearchTargetPriority.CommonAttack);

            if (num > 0u && base.TargetType(num, ActorTypeDef.Actor_Type_Hero))
            {
                return(num);
            }
            srchR2 = this.actor.ActorControl.SearchRange;
            num    = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, srchR2, 0u, false, SearchTargetPriority.CommonAttack);

            if (num > 0u && base.TargetType(num, ActorTypeDef.Actor_Type_Hero))
            {
                return(num);
            }
            srchR2 = this.actor.ActorControl.SearchRange;
            return(Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, srchR2, 0u, true, SearchTargetPriority.CommonAttack));
        }
示例#3
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            uint               num             = this.lockTargetID;
            SelectEnemyType    selectEnemyType = SelectEnemyType.SelectLowHp;
            Player             ownerPlayer     = ActorHelper.GetOwnerPlayer(ref this.actorPtr);
            SkillSelectControl instance        = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;
            uint  dwSkillTargetFilter = skill.cfgData.dwSkillTargetFilter;

            if (skill.cfgData.bSkillTargetRule == 2)
            {
                num = this.actor.ObjID;
            }
            else
            {
                ActorRoot useSkillTargetLockAttackMode = _slot.skillIndicator.GetUseSkillTargetLockAttackMode();
                if (useSkillTargetLockAttackMode != null)
                {
                    if (this.IsValidLockTargetID(useSkillTargetLockAttackMode.ObjID))
                    {
                        num = useSkillTargetLockAttackMode.ObjID;
                        Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(num);
                    }
                }
                else if (!this.IsValidLockTargetID(this.lockTargetID))
                {
                    if (ownerPlayer != null)
                    {
                        selectEnemyType = ownerPlayer.AttackTargetMode;
                    }
                    int srchR;
                    if (skill.AppointType == 1)
                    {
                        srchR = skill.GetMaxSearchDistance(_slot.GetSkillLevel());
                    }
                    else
                    {
                        srchR = skill.cfgData.iMaxAttackDistance;
                    }
                    if (selectEnemyType == SelectEnemyType.SelectLowHp)
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                    else
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                    if (this.IsValidLockTargetID(num))
                    {
                        Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(num);
                    }
                }
                else if (!this.IsValidSkillTargetID(num, dwSkillTargetFilter))
                {
                    num = 0u;
                }
            }
            return(num);
        }
示例#4
0
        protected uint ExecuteSearchTraget(int srchR, ref bool bSearched)
        {
            Player          ownerPlayer = ActorHelper.GetOwnerPlayer(ref this.actorPtr);
            SelectEnemyType type        = SelectEnemyType.SelectLowHp;
            LastHitMode     lastHitMode = LastHitMode.None;

            if (ownerPlayer != null)
            {
                type        = ownerPlayer.AttackTargetMode;
                lastHitMode = ownerPlayer.useLastHitMode;
            }
            uint result;

            if (lastHitMode == LastHitMode.None)
            {
                result = this.NormalModeCommonAttackSearchTarget(srchR, type, ref bSearched);
            }
            else if (this.commonAttackButtonType == CommonAttackButtonType.CommonAttackButton)
            {
                result = this.LastHitModeCommonAttackSearchTarget(srchR, type, ref bSearched);
            }
            else
            {
                result = this.LastHitAttackSearchTarget(srchR, type, ref bSearched);
            }
            return(result);
        }
示例#5
0
        private void ReadyUseSkillLockAttackMode(Skill readySkillObj)
        {
            this.skillTargetId = 0u;
            SelectEnemyType selectEnemyType = SelectEnemyType.SelectLowHp;
            uint            num             = this.Actor.get_handle().LockTargetAttackModeControl.GetLockTargetID();

            if (!this.Actor.get_handle().LockTargetAttackModeControl.IsValidLockTargetID(num))
            {
                Player ownerPlayer = ActorHelper.GetOwnerPlayer(ref this.Actor);
                if (ownerPlayer != null)
                {
                    selectEnemyType = ownerPlayer.AttackTargetMode;
                }
                if (readySkillObj.AppointType == 1)
                {
                    num = 0u;
                }
                else
                {
                    int  srchR = readySkillObj.cfgData.iMaxAttackDistance;
                    uint dwSkillTargetFilter = readySkillObj.cfgData.dwSkillTargetFilter;
                    if (selectEnemyType == SelectEnemyType.SelectLowHp)
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.Actor, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                    else
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.Actor, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                }
            }
            PoolObjHandle <ActorRoot> actor = Singleton <GameObjMgr> .GetInstance().GetActor(num);

            if (actor)
            {
                this.skillTargetId = actor.get_handle().ObjID;
                this.skillIndicator.SetSkillUsePosition(actor.get_handle());
            }
            else
            {
                this.skillIndicator.SetSkillUseDefaultPosition();
            }
            if (readySkillObj.AppointType == 1 && readySkillObj.cfgData.bSkillTargetRule != 2)
            {
                this.skillIndicator.SetGuildPrefabShow(false);
                this.skillIndicator.SetGuildWarnPrefabShow(false);
                this.skillIndicator.SetUseAdvanceMode(false);
                this.skillIndicator.SetSkillUseDefaultPosition();
                this.skillIndicator.SetEffectPrefabShow(false);
                this.skillIndicator.SetFixedPrefabShow(true);
            }
            else
            {
                this.skillIndicator.SetGuildPrefabShow(true);
                this.skillIndicator.SetGuildWarnPrefabShow(false);
                this.skillIndicator.SetUseAdvanceMode(true);
            }
        }
示例#6
0
        private void ReadyUseSkillLockAttackMode(Skill readySkillObj)
        {
            uint            dwSkillTargetFilter = 0;
            SelectEnemyType selectLowHp         = SelectEnemyType.SelectLowHp;
            uint            lockTargetID        = this.Actor.handle.LockTargetAttackModeControl.GetLockTargetID();

            if (!this.Actor.handle.LockTargetAttackModeControl.IsValidLockTargetID(lockTargetID))
            {
                Player ownerPlayer = ActorHelper.GetOwnerPlayer(ref this.Actor);
                if (ownerPlayer != null)
                {
                    selectLowHp = ownerPlayer.AttackTargetMode;
                }
                if (readySkillObj.AppointType == SkillRangeAppointType.Target)
                {
                    lockTargetID = 0;
                }
                else
                {
                    int iMaxAttackDistance = (int)readySkillObj.cfgData.iMaxAttackDistance;
                    dwSkillTargetFilter = readySkillObj.cfgData.dwSkillTargetFilter;
                    if (selectLowHp == SelectEnemyType.SelectLowHp)
                    {
                        lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.Actor, iMaxAttackDistance, dwSkillTargetFilter);
                    }
                    else
                    {
                        lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.Actor, iMaxAttackDistance, dwSkillTargetFilter);
                    }
                }
            }
            PoolObjHandle <ActorRoot> actor = Singleton <GameObjMgr> .GetInstance().GetActor(lockTargetID);

            if (actor != 0)
            {
                this.skillIndicator.SetSkillUsePosition(actor.handle);
            }
            else
            {
                this.skillIndicator.SetSkillUseDefaultPosition();
            }
            if ((readySkillObj.AppointType == SkillRangeAppointType.Target) && (readySkillObj.cfgData.dwSkillTargetRule != 2))
            {
                this.skillIndicator.SetGuildPrefabShow(false);
                this.skillIndicator.SetGuildWarnPrefabShow(false);
                this.skillIndicator.SetUseAdvanceMode(false);
                this.skillIndicator.SetSkillUseDefaultPosition();
                this.skillIndicator.SetEffectPrefabShow(false);
                this.skillIndicator.SetFixedPrefabShow(true);
            }
            else
            {
                this.skillIndicator.SetGuildPrefabShow(true);
                this.skillIndicator.SetGuildWarnPrefabShow(false);
                this.skillIndicator.SetUseAdvanceMode(true);
            }
        }
示例#7
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            int                iMaxSearchDistance           = 0;
            int                dwSkillTargetFilter          = 0;
            ActorRoot          useSkillTargetLockAttackMode = null;
            uint               lockTargetID = this.lockTargetID;
            SelectEnemyType    selectLowHp  = SelectEnemyType.SelectLowHp;
            Player             ownerPlayer  = ActorHelper.GetOwnerPlayer(ref this.actorPtr);
            SkillSelectControl instance     = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            if (skill.cfgData.dwSkillTargetRule == 2)
            {
                return(base.actor.ObjID);
            }
            useSkillTargetLockAttackMode = _slot.skillIndicator.GetUseSkillTargetLockAttackMode();
            if (useSkillTargetLockAttackMode != null)
            {
                if (this.IsValidLockTargetID(useSkillTargetLockAttackMode.ObjID))
                {
                    lockTargetID = useSkillTargetLockAttackMode.ObjID;
                    Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(lockTargetID);
                }
                return(lockTargetID);
            }
            if (!this.IsValidLockTargetID(this.lockTargetID))
            {
                if (ownerPlayer != null)
                {
                    selectLowHp = ownerPlayer.AttackTargetMode;
                }
                dwSkillTargetFilter = (int)skill.cfgData.dwSkillTargetFilter;
                if (skill.AppointType == SkillRangeAppointType.Target)
                {
                    iMaxSearchDistance = skill.cfgData.iMaxSearchDistance;
                }
                else
                {
                    iMaxSearchDistance = (int)skill.cfgData.iMaxAttackDistance;
                }
                if (selectLowHp == SelectEnemyType.SelectLowHp)
                {
                    lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, iMaxSearchDistance, dwSkillTargetFilter);
                }
                else
                {
                    lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, iMaxSearchDistance, dwSkillTargetFilter);
                }
                if (this.IsValidLockTargetID(lockTargetID))
                {
                    Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(lockTargetID);
                }
            }
            return(lockTargetID);
        }
        protected uint ExecuteSearchTarget(int srchR, ref bool bSearched)
        {
            PoolObjHandle <ActorRoot> poolObjHandle  = this.actorPtr;
            MonsterWrapper            monsterWrapper = poolObjHandle.handle.ActorControl as MonsterWrapper;

            if (monsterWrapper != null && monsterWrapper.isCalledMonster)
            {
                poolObjHandle = monsterWrapper.hostActor;
            }
            Player ownerPlayer = ActorHelper.GetOwnerPlayer(ref poolObjHandle);

            if (ownerPlayer == null)
            {
                return(0u);
            }
            SelectEnemyType attackTargetMode   = ownerPlayer.AttackTargetMode;
            LastHitMode     useLastHitMode     = ownerPlayer.useLastHitMode;
            AttackOrganMode curAttackOrganMode = ownerPlayer.curAttackOrganMode;
            OperateMode     operateMode        = ownerPlayer.GetOperateMode();
            uint            result;

            if (operateMode == OperateMode.LockMode)
            {
                result = this.NormalModeCommonAttackSearchTarget(srchR, attackTargetMode, ref bSearched);
            }
            else if (this.commonAttackButtonType == CommonAttackButtonType.CommonAttackButton)
            {
                if (useLastHitMode == LastHitMode.None && curAttackOrganMode == AttackOrganMode.None)
                {
                    result = this.NormalModeCommonAttackSearchTarget(srchR, attackTargetMode, ref bSearched);
                }
                else
                {
                    result = this.AdvancedModeCommonAttackSearchTarget(srchR, attackTargetMode, ref bSearched);
                }
            }
            else if (this.commonAttackButtonType == CommonAttackButtonType.LastHitButton)
            {
                result = this.LastHitModeSearchTarget(srchR, attackTargetMode, ref bSearched);
            }
            else
            {
                result = this.AttackOrganModeSearchTarget(srchR, attackTargetMode, ref bSearched);
            }
            return(result);
        }
示例#9
0
 static GameSettings()
 {
     GameSettings._EnableSound                   = true;
     GameSettings._EnableMusic                   = true;
     GameSettings.m_EnableVibrate                = true;
     GameSettings.DeviceLevel                    = SGameRenderQuality.Low;
     GameSettings.m_dynamicParticleLOD           = true;
     GameSettings.cameraHeight                   = CameraHeightType.Medium;
     GameSettings._castType                      = CastType.LunPanCast;
     GameSettings._selectType                    = SelectEnemyType.SelectLowHp;
     GameSettings.m_heroSelectHeroViewSortType   = CMallSortHelper.HeroViewSortType.Name;
     GameSettings.m_clickEnableInBattleInputChat = 1;
     GameSettings.m_heroInfoEnable               = true;
     GameSettings.s_lunpanSensitivity            = 1f;
     GameSettings.m_MusicEffectLevel             = 100f;
     GameSettings.m_SoundEffectLevel             = 100f;
     GameSettings.m_VoiceEffectLevel             = 100f;
 }
示例#10
0
        protected override uint NormalModeCommonAttackSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
        {
            uint num = this.lockTargetID;

            if (base.IsValidTargetID(num))
            {
                bSearched = false;
                return(num);
            }
            if (type == SelectEnemyType.SelectLowHp)
            {
                num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, srchR, 0u, true, SearchTargetPriority.CommonAttack);
            }
            else
            {
                num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, srchR, 0u, true, SearchTargetPriority.CommonAttack);
            }
            bSearched = true;
            return(num);
        }
示例#11
0
        public void OnHandleClickSelectTargetBtn(AttackTargetType _targetType)
        {
            if (_targetType != this.m_TargetType)
            {
                this.m_CurSelectedActor.Release();
            }
            SelectEnemyType selectLowHp = SelectEnemyType.SelectLowHp;
            Player          hostPlayer  = Singleton <GamePlayerCenter> .instance.GetHostPlayer();

            if (hostPlayer != null)
            {
                selectLowHp = hostPlayer.AttackTargetMode;
            }
            uint selectTargetByTag = 0;

            selectTargetByTag = this.GetSelectTargetByTag(_targetType, selectLowHp);
            Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(selectTargetByTag);

            this.m_TargetType = _targetType;
        }
示例#12
0
        public override uint CommonAttackSearchEnemy(int srchR)
        {
            SkillCache      skillUseCache        = null;
            SelectEnemyType selectLowHp          = SelectEnemyType.SelectLowHp;
            uint            commonAttackTargetID = this.commonAttackTargetID;
            Player          ownerPlayer          = ActorHelper.GetOwnerPlayer(ref this.actorPtr);

            if (ownerPlayer != null)
            {
                if (base.IsValidTargetID(commonAttackTargetID))
                {
                    this.SetCommonAttackTarget(commonAttackTargetID);
                    return(commonAttackTargetID);
                }
                selectLowHp = ownerPlayer.AttackTargetMode;
            }
            if (selectLowHp == SelectEnemyType.SelectLowHp)
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchLowestHpTarget(base.actor.ActorControl, srchR);
            }
            else
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchNearestTarget(base.actor.ActorControl, srchR);
            }
            if (!base.IsValidTargetID(commonAttackTargetID))
            {
                skillUseCache = base.actor.ActorControl.actor.SkillControl.SkillUseCache;
                if ((skillUseCache != null) && !skillUseCache.GetSpecialCommonAttack())
                {
                    this.CancelCommonAttackMode();
                    commonAttackTargetID = 0;
                }
            }
            if (commonAttackTargetID == 0)
            {
                this.ClearCommonAttackTarget();
                return(commonAttackTargetID);
            }
            this.SetCommonAttackTarget(commonAttackTargetID);
            return(commonAttackTargetID);
        }
示例#13
0
        protected override uint NormalModeCommonAttackSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
        {
            uint num = this.commonAttackTargetID;

            if (base.IsValidTargetID(num))
            {
                this.SetCommonAttackTarget(num, false);
                bSearched = false;
                return(num);
            }
            if (type == SelectEnemyType.SelectLowHp)
            {
                num = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchLowestHpTarget(this.actor.ActorControl, srchR);
            }
            else
            {
                num = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchNearestTarget(this.actor.ActorControl, srchR);
            }
            bSearched = true;
            return(num);
        }
示例#14
0
        private void SortActorListByTag(PoolObjHandle <ActorRoot> InActor, ref List <ActorRoot> actorList, SelectEnemyType type)
        {
            if (actorList.get_Count() <= 1)
            {
                return;
            }
            int count = actorList.get_Count();

            ulong[] array = new ulong[count];
            if (type == SelectEnemyType.SelectLowHp)
            {
                array[0] = TargetProperty.GetPropertyHpRate(actorList.get_Item(0), RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP);
            }
            else
            {
                array[0] = (ulong)(InActor.handle.location - actorList.get_Item(0).location).sqrMagnitudeLong2D;
            }
            for (int i = 1; i < count; i++)
            {
                ActorRoot actorRoot = actorList.get_Item(i);
                ulong     num;
                if (type == SelectEnemyType.SelectLowHp)
                {
                    num = TargetProperty.GetPropertyHpRate(actorRoot, RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP);
                }
                else
                {
                    num = (ulong)(InActor.handle.location - actorList.get_Item(0).location).sqrMagnitudeLong2D;
                }
                array[i] = num;
                int j;
                for (j = i; j >= 1; j--)
                {
                    if (num >= array[j - 1])
                    {
                        break;
                    }
                    array[j] = array[j - 1];
                    actorList.set_Item(j, actorList.get_Item(j - 1));
                }
                array[j] = num;
                actorList.set_Item(j, actorRoot);
            }
        }
示例#15
0
        private ActorRoot GetLowerValueTargetByTag(PoolObjHandle <ActorRoot> InActor, List <ActorRoot> actorList, SelectEnemyType type)
        {
            int count = actorList.Count;

            if (count <= 0)
            {
                return(null);
            }
            if (count > 1)
            {
                int num2 = 0;
                while (num2 < count)
                {
                    if (actorList[num2].SelfPtr == InActor)
                    {
                        break;
                    }
                    num2++;
                }
                if (num2 < (count - 1))
                {
                    return(actorList[num2 + 1]);
                }
            }
            return(actorList[0]);
        }
示例#16
0
 private void SortActorListByTag(PoolObjHandle <ActorRoot> InActor, ref List <ActorRoot> actorList, SelectEnemyType type)
 {
     if (actorList.Count > 1)
     {
         int     count    = actorList.Count;
         ulong[] numArray = new ulong[count];
         if (type == SelectEnemyType.SelectLowHp)
         {
             numArray[0] = TargetProperty.GetPropertyHpRate(actorList[0], RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP);
         }
         else
         {
             VInt3 num5 = InActor.handle.location - actorList[0].location;
             numArray[0] = (ulong)num5.sqrMagnitudeLong2D;
         }
         ulong propertyHpRate = 0L;
         for (int i = 1; i < count; i++)
         {
             ActorRoot root = actorList[i];
             if (type == SelectEnemyType.SelectLowHp)
             {
                 propertyHpRate = TargetProperty.GetPropertyHpRate(root, RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP);
             }
             else
             {
                 VInt3 num6 = InActor.handle.location - actorList[0].location;
                 propertyHpRate = (ulong)num6.sqrMagnitudeLong2D;
             }
             numArray[i] = propertyHpRate;
             int index = i;
             while (index >= 1)
             {
                 if (propertyHpRate >= numArray[index - 1])
                 {
                     break;
                 }
                 numArray[index]  = numArray[index - 1];
                 actorList[index] = actorList[index - 1];
                 index--;
             }
             numArray[index]  = propertyHpRate;
             actorList[index] = root;
         }
     }
 }
示例#17
0
        private uint GetLowerValueTargetIdByTag(PoolObjHandle <ActorRoot> InActor, List <ActorRoot> actorList, SelectEnemyType type)
        {
            ActorRoot root  = null;
            int       count = actorList.Count;

            if (count > 0)
            {
                if (count == 1)
                {
                    root = actorList[0];
                }
                else if (this.m_CurSelectedActor != 0)
                {
                    root = this.GetLowerValueTargetByTag(this.m_CurSelectedActor, actorList, type);
                }
                else
                {
                    root = actorList[0];
                }
            }
            if (root != null)
            {
                this.m_CurSelectedActor = root.SelfPtr;
                return(root.ObjID);
            }
            return(0);
        }
 protected virtual uint AttackOrganModeSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
 {
     return(0u);
 }
 protected virtual uint LastHitModeSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
 {
     return(0u);
 }
 protected virtual uint AdvancedModeCommonAttackSearchTarget(int srchR, SelectEnemyType type, ref bool bSearched)
 {
     return(0u);
 }
示例#21
0
        private ActorRoot GetLowerValueTargetByTag(PoolObjHandle <ActorRoot> InActor, List <ActorRoot> actorList, SelectEnemyType type)
        {
            int count = actorList.get_Count();

            if (count <= 0)
            {
                return(null);
            }
            if (count <= 1)
            {
                return(actorList.get_Item(0));
            }
            int i;

            for (i = 0; i < count; i++)
            {
                if (actorList.get_Item(i).SelfPtr == InActor)
                {
                    break;
                }
            }
            ActorRoot result;

            if (i < count - 1)
            {
                result = actorList.get_Item(i + 1);
            }
            else
            {
                result = actorList.get_Item(0);
            }
            return(result);
        }
示例#22
0
        private uint GetSelectTargetByTag(AttackTargetType targetType, SelectEnemyType selectType)
        {
            List <ActorRoot> actorList  = new List <ActorRoot>();
            List <ActorRoot> list2      = new List <ActorRoot>();
            List <ActorRoot> list3      = new List <ActorRoot>();
            List <ActorRoot> list4      = new List <ActorRoot>();
            Player           hostPlayer = Singleton <GamePlayerCenter> .instance.GetHostPlayer();

            if ((hostPlayer == null) || (hostPlayer.Captain == 0))
            {
                return(0);
            }
            PoolObjHandle <ActorRoot>         captain    = hostPlayer.Captain;
            List <PoolObjHandle <ActorRoot> > gameActors = Singleton <GameObjMgr> .GetInstance().GameActors;

            int count = gameActors.Count;

            for (int i = 0; i < count; i++)
            {
                PoolObjHandle <ActorRoot> handle2 = gameActors[i];
                ActorRoot handle = handle2.handle;
                if (handle.HorizonMarker.IsVisibleFor(captain.handle.TheActorMeta.ActorCamp) && captain.handle.CanAttack(handle))
                {
                    if (targetType == AttackTargetType.ATTACK_TARGET_HERO)
                    {
                        if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Hero) && DistanceSearchCondition.Fit(handle, (ActorRoot)captain, captain.handle.ActorControl.SearchRange))
                        {
                            actorList.Add(handle);
                        }
                    }
                    else if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Organ))
                    {
                        if (DistanceSearchCondition.Fit(handle, (ActorRoot)captain, captain.handle.ActorControl.SearchRange))
                        {
                            list4.Add(handle);
                        }
                    }
                    else if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Monster) && DistanceSearchCondition.Fit(handle, (ActorRoot)captain, captain.handle.ActorControl.SearchRange))
                    {
                        MonsterWrapper wrapper = handle.AsMonster();
                        if (((wrapper.cfgInfo.bSoldierType == 7) || (wrapper.cfgInfo.bSoldierType == 8)) || (wrapper.cfgInfo.bSoldierType == 9))
                        {
                            list3.Add(handle);
                        }
                        else
                        {
                            list2.Add(handle);
                        }
                    }
                }
            }
            if (targetType == AttackTargetType.ATTACK_TARGET_HERO)
            {
                this.SortActorListByTag(captain, ref actorList, selectType);
                return(this.GetLowerValueTargetIdByTag(captain, actorList, selectType));
            }
            this.SortActorListByTag(captain, ref list3, selectType);
            this.SortActorListByTag(captain, ref list2, selectType);
            this.SortActorListByTag(captain, ref list4, selectType);
            List <ActorRoot> list6 = new List <ActorRoot>();
            int num4 = 0;

            for (num4 = 0; num4 < list3.Count; num4++)
            {
                list6.Add(list3[num4]);
            }
            for (num4 = 0; num4 < list2.Count; num4++)
            {
                list6.Add(list2[num4]);
            }
            for (num4 = 0; num4 < list4.Count; num4++)
            {
                list6.Add(list4[num4]);
            }
            return(this.GetLowerValueTargetIdByTag(captain, list6, selectType));
        }
示例#23
0
        private uint GetLowerValueTargetIdByTag(PoolObjHandle <ActorRoot> InActor, List <ActorRoot> actorList, SelectEnemyType type)
        {
            ActorRoot actorRoot = null;
            int       count     = actorList.get_Count();

            if (count > 0)
            {
                if (count == 1)
                {
                    actorRoot = actorList.get_Item(0);
                }
                else if (this.m_CurSelectedActor)
                {
                    actorRoot = this.GetLowerValueTargetByTag(this.m_CurSelectedActor, actorList, type);
                }
                else
                {
                    actorRoot = actorList.get_Item(0);
                }
            }
            if (actorRoot != null)
            {
                this.m_CurSelectedActor = actorRoot.SelfPtr;
                return(actorRoot.ObjID);
            }
            return(0u);
        }
示例#24
0
        private uint GetSelectTargetByTag(AttackTargetType targetType, SelectEnemyType selectType)
        {
            List <ActorRoot> list       = new List <ActorRoot>();
            List <ActorRoot> list2      = new List <ActorRoot>();
            List <ActorRoot> list3      = new List <ActorRoot>();
            List <ActorRoot> list4      = new List <ActorRoot>();
            Player           hostPlayer = Singleton <GamePlayerCenter> .instance.GetHostPlayer();

            if (hostPlayer == null || !hostPlayer.Captain)
            {
                return(0u);
            }
            PoolObjHandle <ActorRoot>         captain    = hostPlayer.Captain;
            List <PoolObjHandle <ActorRoot> > gameActors = Singleton <GameObjMgr> .GetInstance().GameActors;

            int count = gameActors.get_Count();

            for (int i = 0; i < count; i++)
            {
                ActorRoot handle = gameActors.get_Item(i).handle;
                if (handle.HorizonMarker.IsVisibleFor(captain.handle.TheActorMeta.ActorCamp) && captain.handle.CanAttack(handle))
                {
                    if (targetType == AttackTargetType.ATTACK_TARGET_HERO)
                    {
                        if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Hero) && DistanceSearchCondition.Fit(handle, captain, captain.handle.ActorControl.SearchRange))
                        {
                            list.Add(handle);
                        }
                    }
                    else if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Organ))
                    {
                        if (DistanceSearchCondition.Fit(handle, captain, captain.handle.ActorControl.SearchRange))
                        {
                            list4.Add(handle);
                        }
                    }
                    else if (TypeSearchCondition.Fit(handle, ActorTypeDef.Actor_Type_Monster) && DistanceSearchCondition.Fit(handle, captain, captain.handle.ActorControl.SearchRange))
                    {
                        MonsterWrapper monsterWrapper = handle.AsMonster();
                        if (monsterWrapper.cfgInfo.bSoldierType == 7 || monsterWrapper.cfgInfo.bSoldierType == 8 || monsterWrapper.cfgInfo.bSoldierType == 9)
                        {
                            list3.Add(handle);
                        }
                        else
                        {
                            list2.Add(handle);
                        }
                    }
                }
            }
            uint lowerValueTargetIdByTag;

            if (targetType == AttackTargetType.ATTACK_TARGET_HERO)
            {
                this.SortActorListByTag(captain, ref list, selectType);
                lowerValueTargetIdByTag = this.GetLowerValueTargetIdByTag(captain, list, selectType);
            }
            else
            {
                this.SortActorListByTag(captain, ref list3, selectType);
                this.SortActorListByTag(captain, ref list2, selectType);
                this.SortActorListByTag(captain, ref list4, selectType);
                List <ActorRoot> list5 = new List <ActorRoot>();
                for (int j = 0; j < list3.get_Count(); j++)
                {
                    list5.Add(list3.get_Item(j));
                }
                for (int k = 0; k < list2.get_Count(); k++)
                {
                    list5.Add(list2.get_Item(k));
                }
                for (int l = 0; l < list4.get_Count(); l++)
                {
                    list5.Add(list4.get_Item(l));
                }
                lowerValueTargetIdByTag = this.GetLowerValueTargetIdByTag(captain, list5, selectType);
            }
            return(lowerValueTargetIdByTag);
        }