Ejemplo n.º 1
0
        public override void TakeTurn(BlobScript source, List <BlobScript> allyBlobs, List <BlobScript> enemyBlobs)
        {
            _me         = source;
            _allyBlobs  = allyBlobs;
            _enemyBlobs = enemyBlobs;

            BaseAttack a       = new PunchAttack();
            var        targets = a.GetPossibleTargets(source, enemyBlobs.ToList());

            /*
             * if (source.GetUltCharge() >= 100)
             * {
             *  a = new WhirlwindStrikeUlt();
             *  a.FireAttack(_me, targets);
             *  _me.ResetUltCharge();
             *  return;
             * }*/

            if (targets.Count > 0)
            {
                a.FireAttack(source, targets.First());
                return;
            }


            var close  = 1000;
            var x      = 0;
            var y      = 0;
            var target = DetermineTarget();
            var loc    = target.GetGridLocation();
            var myLoc  = _me.GetGridLocation();

            for (int i = -1; i < 2; i++)
            {
                for (int j = -1; j < 2; j++)
                {
                    if (GridService.Instance.SpaceOccupied((int)loc.x + i, (int)loc.y + j) || !GridService.Instance.IsInGrid((int)loc.x + i, (int)loc.y + j))
                    {
                        continue;
                    }
                    var dis = GridService.Instance.GetDistance(myLoc, new Vector2(loc.x + i, loc.y + j));
                    if (dis < close && dis != 0)
                    {
                        close = dis;
                        x     = (int)loc.x + i;
                        y     = (int)loc.y + j;
                    }
                }
            }

            var newGridLoc = MoveTo(myLoc, new Vector2(x, y), 5f);

            source.SetGridLocation((int)newGridLoc.x, (int)newGridLoc.y);
            source.transform.position = GridService.Instance.ConvertToPoint(newGridLoc);
            //source.GetComponent<Rigidbody2D>().MovePosition(MoveTo(source.transform.position, target.transform.position, 5f));

            God.Instance.EndTurn();
        }
Ejemplo n.º 2
0
        public bool InRangeC(BlobScript attacker, BlobScript target)
        {
            var attackerLoc = attacker.GetGridLocation();
            var targetLoc   = target.GetGridLocation();
            var xdis        = Math.Pow(targetLoc.x - attackerLoc.x, 2);
            var ydis        = Math.Pow(targetLoc.y - attackerLoc.y, 2);

            var c = (int)Math.Sqrt(xdis + ydis);

            //for close distances calculating the hypotenuse is a resonable approximation of diagonals counting as 1 square
            if (attackRange <= 2 && c <= attackRange)
            {
                return(true);
            }

            return(GridService.Instance.GetDistance(attackerLoc, targetLoc) <= attackRange);
        }
Ejemplo n.º 3
0
        public bool InRange(BlobScript attacker, BlobScript target)
        {
            var attackerLoc = attacker.GetGridLocation();
            var targetLoc   = target.GetGridLocation();
            var xdis        = Math.Abs(targetLoc.x - attackerLoc.x);
            var ydis        = Math.Abs(targetLoc.y - attackerLoc.y);

            if (xdis > ydis)
            {
                return(xdis <= attackRange);
            }

            if (ydis > xdis)
            {
                return(ydis <= attackRange);
            }

            return(ydis <= attackRange);
        }