Example #1
0
        public Character CreateNewCharacter()
        {
            Console.WriteLine("What kind of character would you like to create?");
            Console.WriteLine("1. FastRunner");
            Console.WriteLine("2. Gunner");
            Console.WriteLine("3. HeavyHitter");
            string    choice    = Console.ReadLine();
            Character character = new Character();

            switch (choice)
            {
            case "1":
                character = new FastRunner();
                break;

            case "2":
                character = new Gunner();
                break;

            case "3":
                character = new HeavyHitter();
                break;
            }

            return(character);
        }
Example #2
0
    protected override void _OnTarget(Gunner target, Vector3 hitPos)
    {
        RaycastHit2D[] hits = Physics2D.CircleCastAll(m_trsf.position, m_splashRadius, Vector2.zero);

        foreach (RaycastHit2D hit in hits)
        {
            if (hit.collider.gameObject == gameObject)
            {
                continue;
            }

            if (hit.collider.tag == "SPACESHIP_NORMAL")
            {
                SpaceShipCtrl ctrl = hit.collider.gameObject.GetComponent <SpaceShipCtrl>();

                ctrl.Hit(m_splashDamage);

                PlayEffect(m_effect_explosion, ctrl.Position);
            }
            else if (hit.collider.tag == "SPACESHIP_DUMMY")
            {
                SpaceShipCtrl ctrl = hit.collider.gameObject.GetComponent <SpaceShipCtrl>();

                ctrl.Hit(m_splashDamage);

                PlayEffect(m_effect_explosion, ctrl.Position);
            }
        }

        base._OnTarget(target, hitPos);
    }
Example #3
0
    float GetRange(Vector2 dir)
    {
        float range = m_MaxRange;
        List <RaycastHit2D> results = new List <RaycastHit2D>();
        int numHit = Physics2D.Raycast(transform.position, dir, m_ContactFilter, results);

        if (numHit > 0)
        {
            foreach (RaycastHit2D hit in results)
            {
                int hitLayer = hit.transform.gameObject.layer;
                int hitPower = (int)Mathf.Pow(2, hitLayer);
                if (hitPower == m_PlatformLayer)
                {
                    range = hit.distance;
                    break;
                }
                else if ((hitPower & (int)m_GunnerLayer) == (int)hitPower)
                {
                    Gunner g = hit.transform.GetComponent <Gunner>();
                    if (g && g.Friendly == m_Friendly)
                    {
                        continue;
                    }

                    g.Damage(m_Damage, dir.normalized * m_Knockback);
                }
            }
        }

        return(range);
    }
    // Update is called once per frame
    void OnCollisionEnter2D(Collision2D hitInfo)
    {
        //Debug.Log(hitInfo.collider.gameObject.layer);
        if (
            hitInfo.collider.gameObject.layer == 12 ||
            hitInfo.collider.gameObject.layer == 9
            )
        {
            return;
        }

        Gunner gunner = hitInfo.collider.GetComponent <Gunner>();

        if (gunner != null)
        {
            gunner.TakeDamage(dmg);
        }
        Runner runner = hitInfo.collider.GetComponent <Runner>();

        if (runner != null)
        {
            runner.TakeDamage(dmg);
        }
        Defender defender = hitInfo.collider.GetComponent <Defender>();

        if (defender != null)
        {
            defender.TakeDamage(dmg);
        }

        Instantiate(afterObject, transform.position, transform.rotation);
        Destroy(gameObject);
    }
Example #5
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        Vector2 dir = collision.transform.position - transform.position;

        Gunner g = collision.GetComponent <Gunner>();

        if (g)
        {
            if (g.Friendly == m_Friendly)
            {
                return;
            }

            g.Push(transform.right * m_Knockback * Strength);
        }

        Bullet b = collision.GetComponent <Bullet>();

        if (b)
        {
            if (b.Friendly == m_Friendly)
            {
                return;
            }

            b.RigidBody.AddForce(dir.normalized * m_Knockback, ForceMode2D.Impulse);
        }
    }
Example #6
0
    private void Start()
    {
        lr         = GetComponentInChildren <LineRenderer>();
        npcManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent <NPCManager>();
        switch (myClasse)
        {
        case classe.GUNNER:
        {
            Alliee a = new Gunner(gameObject, npcManager);
            npcManager.AddAlliee(a);
            me = a;
            break;
        }

        case classe.SNIPER:
        {
            Alliee a = new Sniper(gameObject, npcManager);
            npcManager.AddAlliee(a);
            me = a;
            break;
        }

        case classe.SPECIALIST:
        {
            Alliee a = new Specialist(gameObject, npcManager);
            npcManager.AddAlliee(a);
            me = a;
            break;
        }

        case classe.CANNONFODDER:
        {
            Ennemy e = new CannonFodder(gameObject, npcManager);
            npcManager.AddEnnemy(e);
            me = e;
            break;
        }

        case classe.RUNNER:
        {
            Ennemy e = new Runner(gameObject, npcManager);
            npcManager.AddEnnemy(e);
            me = e;
            break;
        }

        case classe.BOSS:
        {
            Ennemy e = new Boss(gameObject, npcManager);
            npcManager.AddEnnemy(e);
            me = e;
            break;
        }

        default:
            throw new System.ArgumentException("Invalid classe.");
        }
        rb = GetComponent <Rigidbody>();
    }
Example #7
0
    protected override void CreateBullet()
    {
        Gunner target = null;

        target = SpaceShipMgr.Inst.FindMinHPTargetInFan(m_planetAngle, m_fanAngle, m_trsf.position, m_minDistToAttack);

        BulletMgr.Inst.FireBullet(m_bulletPool, BulletPoolIdx, m_trsf.position + m_trsf.up * m_fireDistAlignUp, m_trsf.localEulerAngles, this, target);
    }
Example #8
0
    private Gunner FindMinHPTargetInList(GameObject[] spaceShipList, float refAngle, float fanAngle, Vector3 from, float minDist)
    {
        if (spaceShipList == null)
        {
            return(null);
        }

        float halfAngle = fanAngle * 0.5f;

        float  minHP      = float.MaxValue;
        Gunner targetCtrl = null;


        foreach (GameObject spcShip in spaceShipList)
        {
            SpaceShipCtrl ctrl = spcShip.GetComponent <SpaceShipCtrl>();

            if ((ctrl.Position - from).magnitude < minDist)
            {
                continue;
            }

            SpaceShip_GhostCtrl ghost = ctrl as SpaceShip_GhostCtrl;

            if (ghost != null)
            {
                if (ghost.Visible == false)
                {
                    continue;
                }
            }

            if (refAngle == 0)
            {
                if (0 <= ctrl.AngleFromPlanetUp && (halfAngle > ctrl.AngleFromPlanetUp || 360f - halfAngle < ctrl.AngleFromPlanetUp))
                {
                    if (ctrl.CurHP < minHP)
                    {
                        targetCtrl = ctrl;
                        minHP      = ctrl.CurHP;
                    }
                }
            }
            else
            {
                if (refAngle - halfAngle <= ctrl.AngleFromPlanetUp && refAngle + halfAngle > ctrl.AngleFromPlanetUp)
                {
                    if (ctrl.CurHP < minHP)
                    {
                        targetCtrl = ctrl;
                        minHP      = ctrl.CurHP;
                    }
                }
            }
        }

        return(targetCtrl);
    }
        private void Gunner2_Click(object sender, RoutedEventArgs e)
        {
            //MessageBox.Show("Gunner");
            this.Hide();
            Gunner gunner = new Gunner();

            gunner.ShowDialog();
            this.Show();
        }
 // Use this for initialization
 void Start()
 {
     _animator       = GetComponent <Animator>();
     _rigidbody2D    = GetComponent <Rigidbody2D>();
     _audio          = GetComponent <AudioSource>();
     _gun            = GetComponentInChildren <Gunner>();
     _lastShootTimer = ShootCooldown;
     CanMove         = true;
 }
Example #11
0
    public void SetAmmoInfinite()
    {
        ammoToggle = true;
        Gunner gunner = playerRef as Gunner;

        if (gunner != null)
        {
            gunner.SetInfiniteAmmo(true);
        }
    }
Example #12
0
    public void RemoveInfiniteAmmo()
    {
        ammoToggle = false;
        Gunner gunner = playerRef as Gunner;

        if (gunner != null)
        {
            gunner.SetInfiniteAmmo(false);
        }
    }
Example #13
0
    public void ToggleInfiniteAmmoCommand()
    {
        ammoToggle = !ammoToggle;
        Gunner gunner = playerRef as Gunner;

        if (gunner != null)
        {
            gunner.SetInfiniteAmmo(ammoToggle);
        }
    }
Example #14
0
    protected override void _OnTarget(Gunner target, Vector3 hitPos)
    {
        float rand = Random.Range(0, 1);

        if (rand <= m_probability)
        {
            target.Hit_Dot(m_dotInfo);
        }

        base._OnTarget(target, hitPos);
    }
Example #15
0
        public void InitiallyShootingTacticsIsRandomAsLongAsFirstSquareIsHit()
        {
            int[]  shipLenghts = new int[] { 1, 2, 3 };
            Gunner g           = new Gunner(6, 6, shipLenghts);

            Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics);

            g.NextTarget();
            g.ProcessHitResult(HitResult.Missed);
            Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics);
        }
Example #16
0
 public override void Init()
 {
     base.Init();
     gunner          = transform.parent.GetComponent <Gunner>();
     targetLayer     = 1 << LayerMask.NameToLayer("Enemy");
     myPos           = new Vector2(transform.position.x, transform.position.y);
     rangeCheckSize  = new Vector2(range, range);
     centerPos       = new Vector2(0, 0);
     targetCheckSize = new Vector2(100, 100);
     orginRot        = transform.rotation;
 }
Example #17
0
    public void SwapToCommander(Gunner currentRole)
    {
        Commander targetRole = player.GetComponent <Commander>();

        targetRole.playerID  = currentRole.playerID;
        currentRole.playerID = commander;

        commander = targetRole.playerID;
        gunner    = currentRole.playerID;

        SwapPanels(currentRole.gunnerPanel, targetRole.commanderPanel);
    }
    public void Fire(Vector3 startPos, Vector3 startAngle, Gunner shooter, Gunner target)
    {
        if (m_trsf == null)
        {
            m_trsf = GetComponent <Transform>();
        }

        m_trsf.position         = startPos;
        m_trsf.localEulerAngles = startAngle;
        m_target = target;
        //m_shooter = shooter;
    }
Example #19
0
    public void SwapToDriver(Gunner currentRole)
    {
        Driver targetRole = player.GetComponent <Driver>();

        targetRole.playerID  = currentRole.playerID;
        currentRole.playerID = driver;

        driver = targetRole.playerID;
        gunner = currentRole.playerID;

        SwapPanels(currentRole.gunnerPanel, targetRole.driverPanel);
    }
Example #20
0
    private void OnTriggerEnter(Collider other)
    {
        Gunner player = other.GetComponent <Gunner>();

        if (firstTime && player && !hasBeenEnabled)
        {
            currentPlayer  = player;
            hasBeenEnabled = true;
            player.SetInfiniteAmmo(true);
            print("Player has infinite ammo.");
        }
    }
Example #21
0
    public void SwapToEngineer(Gunner currentRole)
    {
        Engineer targetRole = player.GetComponent <Engineer>();

        targetRole.playerID  = currentRole.playerID;
        currentRole.playerID = engineer;

        engineer = targetRole.playerID;
        gunner   = currentRole.playerID;

        SwapPanels(currentRole.gunnerPanel, targetRole.engineerPanel);
    }
Example #22
0
    private void Awake()
    {
        playerHookup = FindObjectOfType <PlayerBase>();

        healthBarUI = GetComponent <HealthBar>();

        gunnerHookup = FindObjectOfType <Gunner>();

        gunnerPrimaryFireHookup   = gunnerHookup.GetComponent <GunnerPrimaryFire>();
        gunnerDOTGrenadeHookup    = gunnerHookup.GetComponent <GunnerDOTGrenade>();
        gunnerGrenadeHookup       = gunnerHookup.GetComponent <GunnerGrenade>();
        gunnerSecondaryFireHookup = gunnerHookup.GetComponent <GunnerAltFire>();
    }
Example #23
0
 private void Awake()
 {
     // currently a singleton, but can change if there can be more than one gunner
     if (instance == null)
     {
         instance = this;
         input    = new Vector2(0, 0);
     }
     else
     {
         Debug.LogError("Cannot create more than one gunner object because it is a singleton.");
     }
 }
    protected override void CreateBullet()
    {
        Gunner target = null;

        target = SpaceShipMgr.Inst.FindFirstTargetInFan(m_planetAngle, m_fanAngle, m_trsf.position, m_minDistToAttack);

        if (target != null)
        {
            AudioManager.Inst.playBulletSFX(m_trsf.position, m_blasterSound);
        }


        BulletMgr.Inst.FireBullet(m_bulletPool, BulletPoolIdx, m_trsf.position + m_trsf.up * m_fireDistAlignUp, m_trsf.localEulerAngles, this, target);
    }
Example #25
0
        public void ShootingTacticsChangesFromSurroundingToLinegAfterSecondSquareIsHit()
        {
            int[]  shipLengths = new int[] { 1, 2, 3 };
            Gunner g           = new Gunner(6, 6, shipLengths);

            Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics);

            g.NextTarget();
            g.ProcessHitResult(HitResult.Hit);
            Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics);

            g.NextTarget();
            g.ProcessHitResult(HitResult.Hit);
            Assert.AreEqual(ShootingTactics.Inline, g.ShootingTactics);
        }
Example #26
0
        public void ShootingTacticsChangesFromRandomToSurroundiungAfterFirstSquareIsHit()
        {
            int[]  shipLenghts = new int[] { 1, 2, 3 };
            Gunner g           = new Gunner(6, 6, shipLenghts);

            Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics);

            g.NextTarget();
            g.ProcessHitResult(HitResult.Hit);
            Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics);

            g.NextTarget();
            g.ProcessHitResult(HitResult.Missed);
            Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics);
        }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "SHIELD")
        {
            if (m_target is TurretCtrl)
            {
                Gunner shield = TurretMgr.Inst.FindShieldTurret(m_target.BulletPoolIdx); // TurretCtrl 의 BulletPoolIdx 는 터렛 지지대의 인덱스이다.

                if (shield)
                {
                    m_target = shield;
                    _OnShield(m_target, m_trsf.position);
                }
            }
        }
    }
Example #28
0
    protected override void OnTriggerEnter2D(Collider2D collision)
    {
        Vector2 dir = collision.transform.position - transform.position;

        Gunner g = collision.GetComponent <Gunner>();

        if (g)
        {
            if (g.Friendly == m_Friendly)
            {
                return;
            }

            g.Damage(m_Damage, dir.normalized * m_Knockback);
        }
    }
Example #29
0
    private void OnTriggerExit(Collider other)
    {
        Gunner player = other.GetComponent <Gunner>();

        if (player && Time.timeScale >= 1)
        {
            firstTime     = false;
            currentPlayer = player;
            player.SetInfiniteAmmo(false);
            print("Player does not have infinite ammo.");
            oreVein.isInfinite = false;
            oreInteractUI.SetActive(false);
            tutorialPrompt.SetActive(false);
            gameObject.SetActive(false);
        }
    }
Example #30
0
    protected override void _OnTarget(Gunner target, Vector3 hitPos)
    {
        SpaceShipCtrl spaceShip = target as SpaceShipCtrl;

        if (spaceShip != null)
        {
            float rand = Random.Range(0, 1);

            if (rand <= m_probability)
            {
                target.StopFire(m_duration);
            }
        }

        base._OnTarget(target, hitPos);
    }