Пример #1
0
    public AbilityData(AbilityDataJsonWrapper wrapper)
    {
        name      = wrapper.name;
        isCalm    = wrapper.isCalm;
        calmReq   = wrapper.calmReq;
        strifeReq = wrapper.strifeReq;
        calmGen   = wrapper.calmGen;
        strifeGen = wrapper.strifeGen;

        // Filter to find this ability's effects
        effects = new List <EffectData>();
        foreach (string effectName in wrapper.effectNames)
        {
            effects.Add(allEffects.Find(d => d.name.ToUpperInvariant() == effectName.ToUpperInvariant()));
        }

        // Filter to find this ability's auras
        auras = new List <AuraData>();
        foreach (string auraName in wrapper.auraNames)
        {
            auras.Add(allAuras.Find(d => d.name.ToUpperInvariant() == auraName.ToUpperInvariant()));
        }

        // Discern this ability's targeting mode
        targetingMode = (wrapper.targetingMode.ToLowerInvariant()) switch
        {
            "single" => TargetingMode.SINGLE,
            "party" => TargetingMode.PARTY,
            "opposition" => TargetingMode.OPPOSITION,
            _ => throw new System.Exception("Could not discern ability's targeting mode"),
        };
    }
Пример #2
0
        public static Player GetTarget(TargetingMode targetingMode, float worldDistance)
        {
            var enemies      = EntitiesManager.EnemyTeam;
            var player       = LocalPlayer.Instance;
            var aliveEnemies = enemies.Where(e =>
                                             !e.IsDead &&
                                             e.Distance(LocalPlayer.Instance) <= worldDistance);

            switch (targetingMode)
            {
            case TargetingMode.LowestHealth:
                return(aliveEnemies.OrderBy(e => e.Health).FirstOrDefault(Helper.IsValidTarget));

            case TargetingMode.NearLocalPlayer:
                return(aliveEnemies.OrderBy(e => e.Distance(player.WorldPosition))
                       .FirstOrDefault(Helper.IsValidTarget));

            case TargetingMode.NearMouse:
                return(aliveEnemies.OrderBy(e => e.Distance(InputManager.MousePosition))
                       .FirstOrDefault(Helper.IsValidTarget));

            default:
                return(null);
            }
        }
Пример #3
0
        public static void Targetlist(TargetingMode TMode)
        {
            int i1, i2;
            Obj_AI_Hero Buf;
            {
                if (Targets.Count != ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.Team != ObjectManager.Player.Team).Count())
                    foreach (var enemy in ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.Team != ObjectManager.Player.Team))
                    {
                        Targets.Add(enemy);
                    }

                for (i1 = 0; i1 < Targets.Count; i1++)
                    for (i2 = 0; i2 < Targets.Count; i2++)
                        if (FindPrioForTarget(Targets[i1], TMode) > FindPrioForTarget(Targets[i2], TMode))
                        {
                            Buf = Targets[i2];
                            Targets[i1] = Targets[i1];
                            Targets[i2] = Buf;
                        }
                        else if (FindPrioForTarget(Targets[i1], TMode) < FindPrioForTarget(Targets[i2], TMode))
                        {
                            Buf = Targets[i1];
                            Targets[i1] = Targets[i2];
                            Targets[i2] = Buf;
                        }
            }
        }
Пример #4
0
        private static void Targetlist(TargetingMode TMode)
        {
            int         i1, i2;
            Obj_AI_Hero Buf;
            {
                if (Targets.Count != ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.Team != ObjectManager.Player.Team).Count())
                {
                    foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.Team != ObjectManager.Player.Team))
                    {
                        Targets.Add(enemy);
                    }
                }


                for (i1 = 0; i1 < Targets.Count; i1++)
                {
                    for (i2 = 0; i2 < Targets.Count; i2++)
                    {
                        if (FindPrioForTarget(Targets[i1], TMode) > FindPrioForTarget(Targets[i2], TMode))
                        {
                            Buf         = Targets[i2];
                            Targets[i1] = Targets[i1];
                            Targets[i2] = Buf;
                        }
                        else if (FindPrioForTarget(Targets[i1], TMode) < FindPrioForTarget(Targets[i2], TMode))
                        {
                            Buf         = Targets[i1];
                            Targets[i1] = Targets[i2];
                            Targets[i2] = Buf;
                        }
                    }
                }
            }
        }
Пример #5
0
    public TargetSelector(float range, TargetingMode mode)
    {
        _range = range;
        _mode = mode;

        Game.OnGameUpdate += Game_OnGameUpdate;
        Drawing.OnDraw += Drawing_OnDraw;
    }
Пример #6
0
        // ==

        public WorstSelector(float range = 1135f, TargetingMode mode = TargetingMode.PRIORITY)
        {
            this.range = range;
            this.mode  = mode;

            Game.OnGameUpdate += onGameUpdate;
            Game.OnWndProc    += onWndProc;
        }
Пример #7
0
    public TargetSelector(float range, TargetingMode mode)
    {
        _range = range;
        _mode  = mode;

        Game.OnGameUpdate += Game_OnGameUpdate;
        Drawing.OnDraw    += Drawing_OnDraw;
    }
Пример #8
0
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="old">AbilityData object being copied from.</param>
 public AbilityData(AbilityData old)
 {
     name          = old.name;
     isCalm        = old.isCalm;
     calmReq       = old.calmReq;
     strifeReq     = old.strifeReq;
     calmGen       = old.calmGen;
     strifeGen     = old.strifeGen;
     effects       = new List <EffectData>(old.effects);
     auras         = new List <AuraData>(old.auras);
     targetingMode = old.targetingMode;
 }
Пример #9
0
 public Action PickupCard(CardButton card)
 {
     return () => {
         if (Selected != null || TargetingMode != TargetingMode.Inactive) {
             return;
         }
         TargetingMode = TargetingMode.Transitional;
         Selected = card;
         Selected.OnPickup();
         ActiveCard = card.GetCard();
         StartCoroutine(Select());
     };
 }
Пример #10
0
        public void SwitchTargetingMode()
        {
            string[] targetingModes = Enum.GetNames(typeof(TargetingModes));

            int currentIndex = targetingModes.IndexOf(TargetingMode.ToString());

            if (currentIndex < targetingModes.Length - 1)
            {
                UpdateTargetingMode((TargetingModes)Enum.Parse(typeof(TargetingModes), targetingModes[currentIndex + 1]));
            }
            else
            {
                UpdateTargetingMode((TargetingModes)Enum.Parse(typeof(TargetingModes), targetingModes[0]));
            }
        }
Пример #11
0
    private IEnumerator Reset()
    {
        yield return(new WaitForSeconds(0.2f));

        if (isChoosingTarget)
        {
            isChoosingTarget = false;
        }

        if (selectionComplete)
        {
            selectionComplete = false;
        }

        targetingMode = TargetingMode.CombatTargeting;
    }
Пример #12
0
        /// <summary>
        /// Shoot Method that uses the Coordinates that the AI saved as possible Coordinates of the Ship that got hit
        /// </summary>
        /// <returns>Coordinates of the shot that got chosen by the AI</returns>
        public Coordinates ShootDeliberately( )
        {
            try
            {
                Coordinates shot;
                if (this._shipCoordinates.Count == 0)
                {
                    // Debug.WriteLine( "Ship coordinates missing" );
                }

                List <Coordinates> mostLikelyShotCoordinates = new List <Coordinates>( );
                mostLikelyShotCoordinates = this._shipCoordinates.Where(w => (w.X == this._lastHit.X + 1 && w.Y == this._lastHit.Y) ||
                                                                        (w.X == this._lastHit.X - 1 && w.Y == this._lastHit.Y) ||
                                                                        (w.Y == this._lastHit.Y + 1 && w.X == this._lastHit.X) ||
                                                                        (w.Y == this._lastHit.Y - 1 && w.X == this._lastHit.X)).ToList( );
                int index;
                if (mostLikelyShotCoordinates.Count == 0)
                {
                    //Debug.WriteLine( "Using inital Shot" );
                    this._initialHit.PointOfAim = this._lastHit.PointOfAim;
                    this._lastHit = this._initialHit;
                    RemoveRedundantHeadings( );
                    mostLikelyShotCoordinates = this._shipCoordinates.Where(w => (w.X == this._initialHit.X + 1 && w.Y == this._lastHit.Y) ||
                                                                            (w.X == this._initialHit.X - 1 && w.Y == this._initialHit.Y) ||
                                                                            (w.Y == this._initialHit.Y + 1 && w.X == this._initialHit.X) ||
                                                                            (w.Y == this._initialHit.Y - 1 && w.X == this._initialHit.X)).ToList( );

                    if (mostLikelyShotCoordinates.Count == 0)
                    {
                        //Debug.WriteLine( "Random Shot" );
                        this._shipCoordinates.Clear( );
                        Mode           = TargetingMode.ByChance;
                        shot           = ShootByChance( );
                        this._lastShot = shot;
                        return(shot);
                    }
                }
                index          = this._rnd.Next(0, mostLikelyShotCoordinates.Count( ));
                shot           = mostLikelyShotCoordinates.ElementAt(index);
                this._lastShot = shot;
                return(shot);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #13
0
        private static double FindPrioForTarget(Obj_AI_Hero enemy, TargetingMode TMode)
        {
            switch (TMode)
            {
            case TargetingMode.AutoPriority:
            {
                if (p1.Contains(enemy.CharData.BaseSkinName))
                {
                    return(4);
                }
                else if (p2.Contains(enemy.CharData.BaseSkinName))
                {
                    return(3);
                }
                else if (p3.Contains(enemy.CharData.BaseSkinName))
                {
                    return(2);
                }
                else if (p4.Contains(enemy.CharData.BaseSkinName))
                {
                    return(1);
                }
                else
                {
                    return(5);
                }
            }

            case TargetingMode.FastKill:
            {
                if (enemy.IsValid && enemy != null && enemy.IsVisible && !enemy.IsDead)
                {
                    return(enemy.Health / Player.GetSpellDamage(enemy, SpellSlot.E));
                }
                else
                {
                    return(1000000);
                }
            }

            default:
                return(0);
            }
        }
Пример #14
0
        private static double FindPrioForTarget(AIHeroClient enemy, TargetingMode TMode)
        {
            switch (TMode)
            {
            case TargetingMode.AutoPriority:
            {
                if (p1.Contains(enemy.BaseSkinName))
                {
                    return(4);
                }
                else if (p2.Contains(enemy.BaseSkinName))
                {
                    return(3);
                }
                else if (p3.Contains(enemy.BaseSkinName))
                {
                    return(2);
                }
                else if (p4.Contains(enemy.BaseSkinName))
                {
                    return(1);
                }
                else
                {
                    return(5);
                }
            }

            case TargetingMode.FastKill:
            {
                if (enemy.IsValid && enemy != null && enemy.IsVisible && !enemy.IsDead)
                {
                    return(enemy.Health / Player.GetSpellDamage(enemy, XDSharp.Champions.Main.TSSpell()));
                }
                else
                {
                    return(1000000);
                }
            }

            default:
                return(0);
            }
        }
Пример #15
0
 // Monitors if the Targeting Mode has to be forced to change
 private void MonitorTargetingMode( )
 {
     if (this._shipCoordinates.Count == 0 && Mode == TargetingMode.Deliberately)
     {
         //if ( this._removedShipCoordinates.Count != 0 )
         //{
         //    Debug.WriteLine( "Monitor overrides '_shipCoordinates' " );
         //    this._shipCoordinates = this._removedShipCoordinates;
         //}
         //else
         //{
         //   Debug.WriteLine( "Monitor forces By Chance Mode" );
         this._shipCoordinates.Clear( );
         Mode = TargetingMode.ByChance;
         //}
     }
     else
     {
         Mode = TargetingMode.Deliberately;
     }
 }
Пример #16
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            //Version 0
            if (version >= 0)
            {
                m_MultiID = reader.ReadInt();
                m_Offset  = reader.ReadPoint3D();

                int coOwnerCount = reader.ReadInt();
                for (int a = 0; a < coOwnerCount; a++)
                {
                    m_CoOwners.Add(reader.ReadMobile());
                }

                int friendCount = reader.ReadInt();
                for (int a = 0; a < friendCount; a++)
                {
                    m_Friends.Add(reader.ReadMobile());
                }

                GuildAsFriends = reader.ReadBool();

                HitPoints  = reader.ReadInt();
                SailPoints = reader.ReadInt();
                GunPoints  = reader.ReadInt();

                m_Owner = reader.ReadMobile();

                m_ShipName = reader.ReadString();

                m_TargetingMode = (TargetingMode)reader.ReadInt();

                m_TimeLastRepaired   = reader.ReadDateTime();
                m_NextTimeRepairable = reader.ReadDateTime();
            }
        }
Пример #17
0
        private static void currentMode(object sender, OnValueChangeEventArgs e)
        {
            switch (e.GetNewValue <StringList>().SelectedIndex)
            {
            case 0:
            default:
                _Mode = TargetingMode.LowHP;
                break;

            case 1:
                _Mode = TargetingMode.MostAD;
                break;

            case 2:
                _Mode = TargetingMode.MostAP;
                break;

            case 3:
                _Mode = TargetingMode.Closest;
                break;

            case 4:
                _Mode = TargetingMode.NearMouse;
                break;

            case 5:
                _Mode = TargetingMode.AutoPriority;
                break;

            case 6:
                _Mode = TargetingMode.LessAttack;
                break;

            case 7:
                _Mode = TargetingMode.LessCast;
                break;
            }
        }
    private void Update()
    {
        if (playerStat.lockControls)
        {
            return;
        }

        x = guiHud.joyStick.Horizontal;
        y = guiHud.joyStick.Vertical;
        //if (Input.GetKeyDown(KeyCode.Z)) StartCoroutine(Attack());
        if (Input.GetKey(KeyCode.Z))
        {
            //print("pressed");
            //playerStat.chargeStrength = 0;
            playerStat.isCharging = true;
            playerStat.shield     = true;
        }
        if (Input.GetKeyUp(KeyCode.Z))
        {
            playerStat.isCharging = false;
            playerStat.attack     = true;
            playerStat.shield     = false;
            _Attack();
        }

        if (Input.GetKeyDown(KeyCode.X))
        {
            if (target == TargetingMode.PLAYER)
            {
                target = TargetingMode.BOMB;
            }
            else if (target == TargetingMode.BOMB)
            {
                target = TargetingMode.PLAYER;
            }
            print(target);
        }
    }
Пример #19
0
        public static Player GetAlly(TargetingMode targetingMode, float worldDistance)
        {
            var allies     = EntitiesManager.LocalTeam;
            var player     = LocalPlayer.Instance;
            var aliveAlies = allies.Where(e => !e.IsDead && e.Distance(LocalPlayer.Instance) <= worldDistance && !Helper.IsColliding(player, e));

            switch (targetingMode)
            {
            case TargetingMode.LowestHealth:
                return(aliveAlies.OrderByDescending(e => e.MaxRecoveryHealth - e.Health)
                       .FirstOrDefault());

            case TargetingMode.NearLocalPlayer:
                return(aliveAlies.OrderBy(e => e.Distance(player.WorldPosition))
                       .FirstOrDefault());

            case TargetingMode.NearMouse:
                return(aliveAlies.OrderBy(e => e.Distance(InputManager.MousePosition))
                       .FirstOrDefault());

            default:
                return(null);
            }
        }
Пример #20
0
 public void SetTargetingMode(TargetingMode mode)
 {
     _mode = mode;
 }
Пример #21
0
 public bool HasTargetingMode(TargetingMode tm)
 {
     return this.TargetSettings.Any(t => t.targetingMode == tm);
 }
Пример #22
0
 private static double FindPrioForTarget(Obj_AI_Hero enemy, TargetingMode TMode)
 {
     switch (TMode)
     {
         case TargetingMode.AutoPriority:
             {
                 if (p1.Contains(enemy.CharData.BaseSkinName))
                 {
                     return 4;
                 }
                 else if (p2.Contains(enemy.CharData.BaseSkinName))
                 {
                     return 3;
                 }
                 else if (p3.Contains(enemy.CharData.BaseSkinName))
                 {
                     return 2;
                 }
                 else if (p4.Contains(enemy.CharData.BaseSkinName))
                 {
                     return 1;
                 }
                 else
                 {
                     return 5;
                 }
             }
         case TargetingMode.FastKill:
             {
                 if (enemy.IsValid && enemy != null && enemy.IsVisible && !enemy.IsDead)
                     return (enemy.Health / Player.GetSpellDamage(enemy, SpellSlot.E));
                 else
                     return 1000000;
             }
         default:
             return 0;
     }
 }
Пример #23
0
    protected IEnumerator Select()
    {
        Region testRegion = new Region () {
            Left = (int)Input.mousePosition.x - DRAG_SIZE,
            Top = Screen.height - (int)Input.mousePosition.y - DRAG_SIZE,
            Width = DRAG_SIZE * 2,
            Height = DRAG_SIZE * 2
        };
        float startTime = DRAG_TIMER;

        while (true) {
            startTime -= Time.deltaTime;
            if (!Input.GetMouseButton(0)) {
                TargetingMode = TargetingMode.ClickTargeting;
                break;
            }
            if (testRegion.ContainsMouse() == null || startTime <= 0) {
                TargetingMode = TargetingMode.DragTargeting;
                break;
            }
            yield return 0;
        }

        bool cancel = false;
        while (
            (Input.GetMouseButton(0) && TargetingMode == TargetingMode.DragTargeting) ||
            (!Input.GetMouseButton(0) && TargetingMode == TargetingMode.ClickTargeting)
        ) {
            if (Input.GetMouseButton(1)) {
                cancel = true;
                break;
            }
            yield return 0;
            if (ActiveCard.TargetingType == TargetingType.All ||
                ClickRaycast.MouseOverThis(LeftSide)
            ) {
                ReticleController.Shown = false;
                Selected.SuspendDrag = false;
            } else {
                ReticleController.Shown = true;
                Selected.SuspendDrag = true;
            }
        }
        if (ClickRaycast.MouseOverThis(LeftSide)) {
            cancel = true;
        }
        foreach (SelectionRegion pickedRegion in Sprites
                 .Where(x => typeof(SelectionRegion).IsAssignableFrom(x.GetType()))
                 .Cast<SelectionRegion>()
                 .Where(x => x.ContainsMouse())
        ) {
            Target.SetTarget(pickedRegion);
            if (
                !cancel &&
                Selected.GetCard().Cost <= Morphid.LocalPlayer.Morphium &&
                ActiveCard.TargetableGuids != null &&
                ((ActiveCard.TargetableGuids.Contains(Target.GUID)) || ActiveCard.TargetingType != TargetingType.Single)
            ) {
                Morphid.PlayLocalCard(Selected.GetCard(), Target.GUID);
                break;
            }
        }
        Selected.SuspendDrag = false;
        ReticleController.Shown = false;
        TargetingMode = TargetingMode.Inactive;
        ActiveCard = null;
        Selected.OnDrop();
        Selected.Enabled = true;
        Selected = null;
    }
Пример #24
0
    public void OnFixedUpdate()
    {
        float targetPitchAngle = human.controls.targetPitchAngle;
        float targetYawAngle   = human.controls.targetYawAngle;
        float leftExtend       = human.controls.leftExtend;
        float rightExtend      = human.controls.rightExtend;
        bool  grab             = human.controls.leftGrab;
        bool  grab2            = human.controls.rightGrab;
        bool  onGround         = human.onGround;

        if ((ragdoll.partLeftHand.transform.position - ragdoll.partChest.transform.position).sqrMagnitude > 6f)
        {
            grab = false;
        }
        if ((ragdoll.partRightHand.transform.position - ragdoll.partChest.transform.position).sqrMagnitude > 6f)
        {
            grab2 = false;
        }
        Quaternion rotation  = Quaternion.Euler(targetPitchAngle, targetYawAngle, 0f);
        Quaternion rotation2 = Quaternion.Euler(0f, targetYawAngle, 0f);
        Vector3    worldPos  = Vector3.zero;
        Vector3    worldPos2 = Vector3.zero;
        float      num       = 0f;
        float      z         = 0f;

        if (targetPitchAngle > 0f && onGround)
        {
            z = 0.4f * targetPitchAngle / 90f;
        }
        TargetingMode targetingMode  = (!(ragdoll.partLeftHand.sensor.grabJoint != null)) ? this.targetingMode : grabTargetingMode;
        TargetingMode targetingMode2 = (!(ragdoll.partRightHand.sensor.grabJoint != null)) ? this.targetingMode : grabTargetingMode;

        switch (targetingMode)
        {
        case TargetingMode.Shoulder:
            worldPos = ragdoll.partLeftArm.transform.position + rotation * new Vector3(0f, 0f, leftExtend * ragdoll.handLength);
            break;

        case TargetingMode.Chest:
            worldPos = ragdoll.partChest.transform.position + rotation2 * new Vector3(-0.2f, 0.15f, 0f) + rotation * new Vector3(0f, 0f, leftExtend * ragdoll.handLength);
            break;

        case TargetingMode.Hips:
            if (targetPitchAngle > 0f)
            {
                num = -0.3f * targetPitchAngle / 90f;
            }
            worldPos = ragdoll.partHips.transform.position + rotation2 * new Vector3(-0.2f, 0.65f + num, z) + rotation * new Vector3(0f, 0f, leftExtend * ragdoll.handLength);
            break;

        case TargetingMode.Ball:
            if (targetPitchAngle > 0f)
            {
                num = -0.2f * targetPitchAngle / 90f;
            }
            if (ragdoll.partLeftHand.sensor.grabJoint != null)
            {
                z = ((!human.isClimbing) ? 0f : (-0.2f));
            }
            worldPos = ragdoll.partBall.transform.position + rotation2 * new Vector3(-0.2f, 0.7f + num, z) + rotation * new Vector3(0f, 0f, leftExtend * ragdoll.handLength);
            break;
        }
        switch (targetingMode2)
        {
        case TargetingMode.Shoulder:
            worldPos2 = ragdoll.partRightArm.transform.position + rotation * new Vector3(0f, 0f, rightExtend * ragdoll.handLength);
            break;

        case TargetingMode.Chest:
            worldPos2 = ragdoll.partChest.transform.position + rotation2 * new Vector3(0.2f, 0.15f, 0f) + rotation * new Vector3(0f, 0f, rightExtend * ragdoll.handLength);
            break;

        case TargetingMode.Hips:
            if (targetPitchAngle > 0f)
            {
                num = -0.3f * targetPitchAngle / 90f;
            }
            worldPos2 = ragdoll.partHips.transform.position + rotation2 * new Vector3(0.2f, 0.65f + num, z) + rotation * new Vector3(0f, 0f, rightExtend * ragdoll.handLength);
            break;

        case TargetingMode.Ball:
            if (targetPitchAngle > 0f)
            {
                num = -0.2f * targetPitchAngle / 90f;
            }
            if (ragdoll.partRightHand.sensor.grabJoint != null)
            {
                z = ((!human.isClimbing) ? 0f : (-0.2f));
            }
            worldPos2 = ragdoll.partBall.transform.position + rotation2 * new Vector3(0.2f, 0.7f + num, z) + rotation * new Vector3(0f, 0f, rightExtend * ragdoll.handLength);
            break;
        }
        ProcessHand(leftMem, ragdoll.partLeftArm, ragdoll.partLeftForearm, ragdoll.partLeftHand, worldPos, leftExtend, grab, motion.legs.legPhase + 0.5f, right: false);
        ProcessHand(rightMem, ragdoll.partRightArm, ragdoll.partRightForearm, ragdoll.partRightHand, worldPos2, rightExtend, grab2, motion.legs.legPhase, right: true);
    }
Пример #25
0
 public void SetTargetingMode(TargetingMode mode)
 {
     _mode = mode;
 }
Пример #26
0
    public List <BaseEnemy> FindEnemiesInRange(Vector3 turretPosition, float range, int count, TargetingMode mode)
    {
        List <BaseEnemy> ret  = new List <BaseEnemy>();
        List <BaseEnemy> list = new List <BaseEnemy>(Enemies);

        foreach (BaseEnemy obj in list)
        {
            if (Vector3.Distance(turretPosition, obj.transform.position) <= range)
            {
                ret.Add(obj);
            }
        }
        switch (mode)
        {
        case TargetingMode.Farthest:
            ret.Sort((x, y) => Vector3.Distance(x.transform.position, Base.transform.position).CompareTo(Vector3.Distance(y.transform.position, Base.transform.position)));
            break;

        case TargetingMode.Nearest:
            ret.Sort((x, y) => Vector3.Distance(x.transform.position, turretPosition).CompareTo(Vector3.Distance(y.transform.position, turretPosition)));
            break;

        case TargetingMode.MaxHP:
            ret.Sort((x, y) => y.stats.health.CompareTo(x.stats.health));
            break;

        case TargetingMode.MinHP:
            ret.Sort((x, y) => x.stats.health.CompareTo(y.stats.health));
            break;
        }

        ret = new List <BaseEnemy>(ret.GetRange(0, Mathf.Min(count, ret.Count)));
        return(ret);
    }
Пример #27
0
 public void SetText(TargetingMode mode)
 {
     transform.GetChild(0).gameObject.GetComponent <Text>().text = mode.ToString();
     currentModeIndex = Array.FindIndex(targetModeArray, w => w == mode);
 }
Пример #28
0
 public static void SetTargetingMode(TargetingMode mode) => Call(SET_PLAYER_TARGETING_MODE, mode);
Пример #29
0
 public void ActivateSpellTargeting()
 {
     targetingMode = TargetingMode.SpellAbilityTargetng;
 }
Пример #30
0
        public static PokemonCard AskForTargetFromTargetingMode(TargetingMode targetingMode, GameField game, Player caster, Player opponent, PokemonCard pokemonOwner, string info = "", string nameFilter = "")
        {
            PokemonCard    target;
            NetworkMessage message;
            NetworkId      selectedId;
            IDeckFilter    filter = !string.IsNullOrEmpty(nameFilter) ? new PokemonWithNameOrTypeFilter(nameFilter, EnergyTypes.All) : null;

            switch (targetingMode)
            {
            case TargetingMode.Self:
                target = pokemonOwner;
                break;

            case TargetingMode.YourActive:
                target = caster.ActivePokemonCard;
                break;

            case TargetingMode.YourBench:
                if (caster.BenchedPokemon.Count == 0)
                {
                    return(null);
                }
                else if (caster.BenchedPokemon.Count == 1)
                {
                    return(caster.BenchedPokemon.GetFirst());
                }
                message = new SelectFromYourBenchMessage(1)
                {
                    Info = info, Filter = filter
                }.ToNetworkMessage(game.Id);
                selectedId = caster.NetworkPlayer.SendAndWaitForResponse <CardListMessage>(message).Cards.First();
                target     = (PokemonCard)game.Cards[selectedId];
                break;

            case TargetingMode.YourPokemon:
                message = new SelectFromYourPokemonMessage()
                {
                    Info = info, Filter = filter
                }.ToNetworkMessage(game.Id);
                selectedId = caster.NetworkPlayer.SendAndWaitForResponse <CardListMessage>(message).Cards.First();
                target     = (PokemonCard)game.Cards[selectedId];
                break;

            case TargetingMode.OpponentActive:
                target = opponent.ActivePokemonCard;
                break;

            case TargetingMode.OpponentBench:
                if (opponent.BenchedPokemon.Count == 0)
                {
                    return(null);
                }
                else if (opponent.BenchedPokemon.Count == 1)
                {
                    return(opponent.BenchedPokemon.GetFirst());
                }

                message = new SelectFromOpponentBenchMessage(1)
                {
                    Info = info, Filter = filter
                }.ToNetworkMessage(game.Id);
                selectedId = caster.NetworkPlayer.SendAndWaitForResponse <CardListMessage>(message).Cards.First();
                target     = (PokemonCard)game.Cards[selectedId];
                break;

            case TargetingMode.OpponentPokemon:
                message = new SelectOpponentPokemonMessage(1)
                {
                    Info = info, Filter = filter
                }.ToNetworkMessage(game.Id);
                selectedId = caster.NetworkPlayer.SendAndWaitForResponse <CardListMessage>(message).Cards.First();
                target     = (PokemonCard)game.Cards[selectedId];
                break;

            case TargetingMode.LastEffectTarget:
                target = game.LastTarget;
                break;

            case TargetingMode.AnyPokemon:
                throw new NotImplementedException("TargetingMode.AnyPokemon not implemented in Targeting");

            default:
                target = caster.ActivePokemonCard;
                break;
            }

            if (game != null)
            {
                game.LastTarget = target;
            }

            return(target);
        }
Пример #31
0
 public static bool IsYours(TargetingMode mode)
 {
     return(mode == TargetingMode.YourBench || mode == TargetingMode.YourPokemon);
 }
Пример #32
0
 public void StartAttackTargeting()
 {
     targetingMode = TargetingMode.AttackMove;
     Cursor.SetCursor(attackCursorTexture, hotSpot, cursorMode);
 }
Пример #33
0
 protected void Start()
 {
     targetingMode = TargetingMode.None;
 }
Пример #34
0
 public void ExitTargeting()
 {
     targetingMode = TargetingMode.None;
     Cursor.SetCursor(null, Vector2.zero, cursorMode);
 }
Пример #35
0
        public void Process(GameField game, Player caster, Player opponent, PokemonCard pokemonSource)
        {
            PokemonCard source;

            while (true)
            {
                source = Targeting.AskForTargetFromTargetingMode(Source, game, caster, opponent, pokemonSource, "Select a pokemon to move energy from");

                if (FromAnother && source == pokemonSource)
                {
                    continue;
                }

                break;
            }

            if (source == null)
            {
                return;
            }

            var availableEnergyCards = source.AttachedEnergy
                                       .Where(energy => !OnlyBasic || (OnlyBasic && energy.IsBasic))
                                       .Where(energy => EnergyType == EnergyTypes.All || EnergyType == EnergyTypes.None || energy.EnergyType == EnergyType)
                                       .ToList();

            PokemonCard target;
            bool        first = true;

            if (availableEnergyCards.Count <= Amount)
            {
                target = Targeting.AskForTargetFromTargetingMode(Target, game, caster, opponent, pokemonSource, "Select a pokemon to move energy to");
                while (source.AttachedEnergy.Count > 0)
                {
                    var energyCard = source.AttachedEnergy[0];

                    source.AttachedEnergy.RemoveAt(0);

                    game.SendEventToPlayers(new AttachedEnergyDiscardedEvent {
                        DiscardedCard = energyCard, FromPokemonId = source.Id
                    });

                    if (DifferentTargetForEachCard && !first)
                    {
                        target = Targeting.AskForTargetFromTargetingMode(Target, game, caster, opponent, pokemonSource, "Select a pokemon to move energy to");
                    }

                    target.AttachedEnergy.Add(energyCard);

                    game.SendEventToPlayers(new EnergyCardsAttachedEvent {
                        EnergyCard = energyCard, AttachedTo = target
                    });
                    first = false;
                }

                return;
            }

            var message = new PickFromListMessage(availableEnergyCards.OfType <Card>().ToList(), 1, Amount);
            var ids     = caster.NetworkPlayer.SendAndWaitForResponse <CardListMessage>(message.ToNetworkMessage(game.Id)).Cards;

            var cards = source.AttachedEnergy.Where(x => ids.Contains(x.Id)).ToList();

            target = Targeting.AskForTargetFromTargetingMode(Target, game, caster, opponent, pokemonSource, "Select a pokemon to move energy to");

            foreach (var card in cards)
            {
                if (DifferentTargetForEachCard && !first)
                {
                    target = Targeting.AskForTargetFromTargetingMode(Target, game, caster, opponent, pokemonSource, "Select a pokemon to move energy to");
                }

                source.AttachedEnergy.Remove(card);

                game.SendEventToPlayers(new AttachedEnergyDiscardedEvent {
                    DiscardedCard = card, FromPokemonId = source.Id
                });

                target.AttachedEnergy.Add(card);

                game.SendEventToPlayers(new EnergyCardsAttachedEvent {
                    EnergyCard = card, AttachedTo = target
                });
                first = false;
            }
        }
Пример #36
0
    protected virtual void SetArgsFromTarget(
        Target t,
        TargetSettings ts,
        string prefix,
        Vector3?start = null
        )
    {
        TargetingMode tm = TargetingMode.Custom;

        if (ts != null)
        {
            tm = ts.targetingMode;
        }
        else
        {
            if (t.path != null)
            {
                tm = TargetingMode.Pick;
            }
            else if (t.character != null)
            {
                tm = TargetingMode.Pick;
            }
            else if (t.facing != null)
            {
                tm = TargetingMode.Radial;
            }
            else if (t.subregion != -1)
            {
                tm = TargetingMode.SelectRegion;
            }
        }
        Vector3 pos = character.TilePosition;

        switch (tm)
        {
        case TargetingMode.Self:
        case TargetingMode.Pick:
        case TargetingMode.Path:
            pos = t.Position;
            SetArgsFrom(pos, t.facing, prefix, start);
            break;

        case TargetingMode.Cardinal:
        case TargetingMode.Radial:
        //FIXME: wrong for selectRegion
        case TargetingMode.SelectRegion:
            if (t.character != null)
            {
                pos = t.character.TilePosition;
            }
            else if (t.path != null)
            {
                pos = t.Position;
            }
            SetArgsFrom(pos, t.facing, prefix, start);
            break;

        default:
            Debug.LogError("Unrecognized targeting mode");
            break;
        }
    }
Пример #37
0
        public static List <PokemonCard> GetPossibleTargetsFromMode(TargetingMode targetingMode, GameField game, Player caster, Player opponent, PokemonCard pokemonOwner, string nameFilter = "")
        {
            var pokemons = new List <PokemonCard>();

            switch (targetingMode)
            {
            case TargetingMode.YourActive:
                pokemons.Add(caster.ActivePokemonCard);
                break;

            case TargetingMode.YourBench:
                pokemons = caster.BenchedPokemon.ValidPokemonCards.ToList();
                break;

            case TargetingMode.YourPokemon:
                pokemons = caster.GetAllPokemonCards();
                break;

            case TargetingMode.OpponentActive:
            {
                if (game.CurrentDefender != null && game.CurrentDefender.Owner.Id.Equals(opponent.Id))
                {
                    pokemons.Add(game.CurrentDefender);
                }
                else
                {
                    pokemons.Add(opponent.ActivePokemonCard);
                }
                break;
            }

            case TargetingMode.OpponentBench:
                pokemons = opponent.BenchedPokemon.ValidPokemonCards.ToList();
                break;

            case TargetingMode.OpponentPokemon:
                pokemons = opponent.GetAllPokemonCards();
                break;

            case TargetingMode.AnyPokemon:
                pokemons = caster.GetAllPokemonCards();
                pokemons.AddRange(opponent.GetAllPokemonCards());
                break;

            case TargetingMode.AttachedTo:
                pokemons.Add(pokemonOwner);
                break;

            case TargetingMode.Self:
                pokemons.Add(pokemonOwner);
                break;

            default:
                pokemons.Add(pokemonOwner);
                break;
            }

            if (!string.IsNullOrEmpty(nameFilter))
            {
                return(pokemons.Where(p => p.Name.ToLower().Contains(nameFilter.ToLower())).ToList());
            }

            return(pokemons);
        }