Esempio n. 1
0
 void Awake()
 {
     start = GetComponentInParent <DangerArea> ();
     start.AddEnemie(this);
 }
Esempio n. 2
0
 // Use this for initialization
 void Start()
 {
     player           = GameObject.FindGameObjectWithTag("Player");
     dangerZone       = FindObjectOfType <DangerArea>();
     checkPlayerAlive = player.transform.GetComponent <Unit>().alive;
 }
Esempio n. 3
0
 public virtual void RegistrationInStack()
 {
     myStack = GetComponentInParent <DangerArea> ();
     myStack.AddEnemie(this);
 }
        private bool ShouldBuildTurretHere()
        {
            if (!CanBuildTurretNow)
            {
                return(false);
            }

            if (!Actor.CanBuildTurretHere())
            {
                return(false);
            }

            m_availableDirection = AvailableTurretDirection.None;
            var prioritizedDirection = Player.FacingDirection == 1 ? AvailableTurretDirection.Right : AvailableTurretDirection.Left;

            for (var i = 0; i < ScanLines.Count; i++)
            {
                var scanLine = ScanLines[i];
                Game.DrawLine(scanLine[0], scanLine[1], Color.Yellow);
                if (RayCastHelper.ImpassableObjects(scanLine[0], scanLine[1]).Count() == 0)
                {
                    m_availableDirection = i == 0 ? AvailableTurretDirection.Right : AvailableTurretDirection.Left;
                    if (m_availableDirection == prioritizedDirection)
                    {
                        break;
                    }
                }
            }
            if (m_availableDirection == AvailableTurretDirection.None)
            {
                return(false);
            }

            // Uncomment if Engineer is too OP
            // foreach (var bot in BotManager.GetBots<EngineerBot>())
            // {
            //     if (bot.IsBuilding) return false;
            // }

            // Don't build turret when enemies are nearby
            foreach (var bot in BotManager.GetBots())
            {
                if (!ScriptHelper.SameTeam(Player, bot.Player))
                {
                    if (DangerArea.Intersects(bot.Player.GetAABB()))
                    {
                        return(false);
                    }
                }
            }

            foreach (var turret in WeaponManager.GetWeapons <Turret>())
            {
                if (turret.Broken)
                {
                    continue;
                }

                var area = new Area(
                    turret.Position + Vector2.UnitX * 32 * turret.Direction + Vector2.UnitY * 7,
                    turret.Position - Vector2.UnitX * 20 * turret.Direction - Vector2.UnitY * 14);
                area.Normalize();
                Game.DrawArea(area);
                //ScriptHelper.LogDebug(area, area.Intersects(player.GetAABB()));
                if (area.Intersects(Player.GetAABB()))
                {
                    return(false);
                }

                if (ScriptHelper.IntersectCircle(Actor.Position, turret.Position, 275, turret.MinAngle, turret.MaxAngle))
                {
                    return(false);
                }
            }

            return(true);
        }