예제 #1
0
        public void SetUpArmorCon()
        {
            // Setup of services and Clientfactory
            var services = TestStartUp.ServiceStartUp();
            IHttpClientFactory factory = services.BuildServiceProvider()
                                         .GetRequiredService <IHttpClientFactory>();

            _armorController = new ArmorController(null, factory);
        }
예제 #2
0
    private IEnumerator ActivateInvulnerability()
    {
        ArmorController.SetInvulnerabilityStatus(true);
        playerObject.GetComponent <Animator>().SetBool("isInvulnerable", true);

        yield return(new WaitForSeconds(3f));

        ArmorController.SetInvulnerabilityStatus(false);
        playerObject.GetComponent <Animator>().SetBool("isInvulnerable", false);
    }
예제 #3
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(gameObject);
     }
 }
예제 #4
0
        // TODO: Add Character and Armor Controllers
        public static void ConfigureControllers(DataContext context, Mapper mapper, out PotionController potionController, out WeaponController weaponController, out ArmorController armorController, out CharacterController characterController)
        {
            PotionRepository    potionRepository    = new PotionRepository(context);
            WeaponRepository    weaponRepository    = new WeaponRepository(context);
            ArmorRepository     armorRepository     = new ArmorRepository(context);
            CharacterRepository characterRepository = new CharacterRepository(context);

            potionController    = new PotionController(potionRepository, mapper);
            weaponController    = new WeaponController(weaponRepository, mapper);
            armorController     = new ArmorController(armorRepository, mapper);
            characterController = new CharacterController(characterRepository, mapper);
        }
예제 #5
0
    private void ActivatePlayer()
    {
        StartCoroutine("ActivateInvulnerability");

        playerObject.transform.position = gameObject.transform.position;
        logicController.GetComponent <PlayerController>().enabled  = true;
        logicController.GetComponent <WeaponsController>().enabled = true;
        playerObject.GetComponent <Animator>().enabled             = true;

        ArmorController.SetMaxArmor(1);
        ArmorController.SetArmor(1);

        GetComponent <Animator>().SetBool("isSpawning", false);
    }
예제 #6
0
        public override void _Ready()
        {
            animationPlayer = GetNode <AnimationPlayer>("AnimationPlayer");
            rayCast2D       = GetNode <RayCast2D>("RayCaster");
            tween           = GetNode <Tween>("Tween");

            // Controllers
            statController     = GetNode <StatController>("Controllers/StatController");
            weaponController   = GetNode <WeaponController>("Controllers/WeaponController");
            armorController    = GetNode <ArmorController>("Controllers/ArmorController");
            inputController    = GetNode <InputController>("Controllers/InputController");
            movementController = GetNode <MovementController>("Controllers/MovementController");

            if (movementController == null)
            {
                GD.PrintErr("MovementController null");
            }
            movementController.Init(this, animationPlayer, rayCast2D, tween);
        }
예제 #7
0
 public void CalculateArmor()
 {
     foreach (GameObject item in items)
     {
         ArmorController aC = item.GetComponent <ArmorController>();
         if (aC.type == ArmorController.ArmorType.Head)
         {
             armorHead = aC.armorValue;
         }
         else if (aC.type == ArmorController.ArmorType.Chest)
         {
             armorChest = aC.armorValue;
         }
         else if (aC.type == ArmorController.ArmorType.Legs)
         {
             armorLegs = aC.armorValue;
         }
     }
 }
예제 #8
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Brick"))
        {
            Vector3Int tileHit, adjacentTileHit;
            Vector3    normal = Vector3.zero, point;

            //Get contacts
            ContactPoint2D[] contacts = new ContactPoint2D[collision.contactCount];
            collision.GetContacts(contacts);

            //Check that the normal vector for all contact points is the same
            if (contacts.All(c => Math.Round(c.normal.x) == Math.Round(contacts[0].normal.x)) &&
                contacts.All(c => Math.Round(c.normal.y) == Math.Round(contacts[0].normal.y)))
            {
                normal = new Vector3(contacts[0].normal.x, contacts[0].normal.y);
            }
            //if contacts have different normals, default to opposite direction player is facing, eg.: (-1,0) when player is facing right
            else
            {
                GameObject player    = GameObject.FindGameObjectWithTag("Player");
                float      direction = player.transform.localRotation.eulerAngles.z;
                switch ((int)direction)
                {
                case 0:
                    normal = new Vector3(-1, 0, 0);
                    break;

                case 90:
                case -270:
                    normal = new Vector3(0, 1, 0);
                    break;

                case 180:
                case -180:
                    normal = new Vector3(1, 0, 0);
                    break;

                case -90:
                case 270:
                    normal = new Vector3(0, -1, 0);
                    break;

                default:
                    throw new Exception();
                }
            }

            float correction = .5f;

            point = new Vector3(contacts.Average(c => c.point.x - (correction * normal.x)),
                                (contacts.Average(c => c.point.y - (correction * normal.y))));

            Tilemap tilemap = collision.gameObject.GetComponent <Tilemap>();
            tileHit         = tilemap.WorldToCell(point);
            adjacentTileHit = tilemap.WorldToCell(GetAdjacentTile(normal, tileHit));

            tilemap.SetTile(tileHit, null);
            tilemap.SetTile(adjacentTileHit, null);
            if (firedByPlayer)
            {
                SoundManager.PlaySfx(SFX.ProjectileHitsBrick);
            }
        }

        //Enemy is hit by player's bullet
        else if (collision.gameObject.CompareTag("Enemy") && firedByPlayer && collision.gameObject != shooter)
        {
            int health = collision.gameObject.GetComponent <EnemyProperties>().armor;
            health--;

            if (health == 0)
            {
                if (collision.gameObject.GetComponent <EnemyProperties>().hasPU&& !collision.gameObject.GetComponent <EnemyProperties>().alreadySpawnedPU)
                {
                    PowerUpController.SpawnPowerup();
                    collision.gameObject.GetComponent <EnemyProperties>().alreadySpawnedPU = true;
                }

                explosion.transform.localPosition = collision.gameObject.transform.localPosition;

                Instantiate(explosion);
                if (collision.gameObject.GetComponent <EnemyProperties>().enemyType == EnemyType.Armored)
                {
                    SoundManager.PlaySfx(SFX.ExplosionEnemyArmored);
                }
                else
                {
                    SoundManager.PlaySfx(SFX.ExplosionEnemyRegular);
                }
                Destroy(collision.gameObject);
                LevelEndManager.IncreaseKillCount();
            }
            else
            {
                if (collision.gameObject.GetComponent <EnemyProperties>().enemyType == EnemyType.Armored)
                {
                    SoundManager.PlaySfx(SFX.DamageArmor);
                }
                collision.gameObject.GetComponent <EnemyProperties>().armor = health;
            }
        }
        //Player is hit by a bullet that is not his own
        else if (collision.gameObject.CompareTag("Player") && collision.gameObject != shooter)
        {
            if (!ArmorController.GetInvulnerabilityStatus())
            {
                ArmorController.TakeDamage();

                if (ArmorController.GetArmor() == 0)
                {
                    explosion.transform.localPosition = collision.gameObject.transform.localPosition;
                    PlayerController.ResetPlayerStats();

                    Instantiate(explosion);
                    LivesController.DecreaseLives();
                    SoundManager.PlaySfx(SFX.ExplosionPlayer);
                }
                else
                {
                    SoundManager.PlaySfx(SFX.DamageArmor);
                }
            }
        }
        //Bullet hits eagle
        else if (collision.gameObject.CompareTag("Eagle") && LevelManager.GetEagleStatus())
        {
            Animator     eagleAnim = GameObject.FindGameObjectWithTag("Eagle").GetComponent <Animator>();
            GameObject[] players   = GameObject.FindGameObjectsWithTag("Player");

            eagleAnim.SetBool("isEagleDestroyed", true);

            SoundManager.Stop();
            SoundManager.PlaySfx(SFX.ExplosionEagle);
            LevelEndManager.ShowLevelEndScreen(Outcome.Defeat);

            logicController.GetComponent <PlayerController>().enabled  = false;
            logicController.GetComponent <WeaponsController>().enabled = false;
            GameObject.FindGameObjectWithTag("Player").GetComponent <Rigidbody2D>().velocity  = Vector2.zero;
            GameObject.FindGameObjectWithTag("Player").GetComponent <BoxCollider2D>().enabled = false;
            GameObject.FindGameObjectWithTag("Player").GetComponent <Animator>().enabled      = false;

            LevelManager.SetEagleStatus(false);
        }
        else if ((collision.gameObject.CompareTag("Concrete") || collision.gameObject.CompareTag("Boundary")) && firedByPlayer)
        {
            SoundManager.PlaySfx(SFX.ProjectileHitsWall);
        }

        if (collision.gameObject != shooter)
        {
            gameObject.SetActive(false);
        }
    }
예제 #9
0
    // Use this for initialization
    void Awake()
    {
        Cursor.lockState = CursorLockMode.Confined;
        audio_bullet = GetComponents<AudioSource>()[0];   //0: bullets, 1: engines, 2: shield, 3: impacts, 4: other
        audio_engineHum = GetComponents<AudioSource>()[1];

        audio_engineHum.enabled = true;
        audio_engineHum.Play();
        audio_accellerators = GetComponents<AudioSource>()[2];
        audio_thrusters = GetComponents<AudioSource>()[3];
        audio_hullHit = GetComponents<AudioSource>()[4];
        audio_wallImpact = GetComponents<AudioSource>()[5];
        audio_effects = GetComponents<AudioSource>()[6];
        audio_bomb = GetComponents<AudioSource>()[7];
        audio_accellerators_max_vol = audio_accellerators.volume;
        audio_thrusters_max_vol = audio_thrusters.volume;
        Time.timeScale = 1; // The time scale must be reset upon loading from the main menu

        rb = GetComponent<Rigidbody>();
        originalColor = mesh.GetComponent<Renderer>().material.color;

        curPowerUp = powerUpList[0];

        shield = GetComponentInChildren<ShieldController>();
        bomb = GetComponentInChildren<BombController> ();

        maxHullIntegrity = currHullIntegrity = 5;
        armorGauge = gameObject.GetComponentInChildren<ArmorController>();

        bombTimer = gameObject.GetComponentInChildren<BombCountdownController>();

        deathEndingTimer = 0.0f;
        sceneTransition = GameObject.FindGameObjectWithTag("Screen Transition").GetComponent<CanvasGroup>();
        transitionRate = 3;

        if (tutorialMode)
        {
            //Debug.Log("tutorial mode");
            currHullIntegrity = 0;
        }

        Transform[] temp = bulletSpawns.GetComponentsInChildren<Transform>();
        bulletSpawnLocations = new Transform[temp.Length - 1];
        bulletSpawnLocIndex = 0;
        for(int i = 0; i < temp.Length; ++i)
        {
            if(temp[i].gameObject.GetInstanceID() != bulletSpawns.GetInstanceID())
            {
                bulletSpawnLocations[bulletSpawnLocIndex] = temp[i];
                ++bulletSpawnLocIndex;
            }
        }

        if (GameObject.Find("GameController") == null)
        {
            Instantiate(gameController);
        }
        gameController = GameObject.FindGameObjectWithTag("GameController");
        im = gameController.GetComponent<InputManager>();

        mainThrusterLeft.Play ();
        mainThrusterRight.Play ();
    }
예제 #10
0
 private void InitializeSingleton()
 {
     singletonInstance = this;
 }
예제 #11
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject == player)
        {
            if (puType == PowerUpType.Ammo)
            {
                if (WeaponsController.GetCurrentMaxAmmo() < ammoCap)
                {
                    WeaponsController.IncreaseMaxAmmo();
                    ShellDisplay.UpdateAmmoDisplay();
                    powerUpText.GetComponentInChildren <Text>().text = "+Max Ammo";
                }
            }

            else if (puType == PowerUpType.ShellSpeed)
            {
                if (WeaponsController.GetShellSpeed() < shellSpeedCap)
                {
                    float shellSpeed = WeaponsController.GetShellSpeed();
                    WeaponsController.SetShellSpeed(shellSpeed * 1.25f);
                    powerUpText.GetComponentInChildren <Text>().text = "+Bullet Speed";
                }
            }

            else if (puType == PowerUpType.Money)
            {
                TowerController.AddMoney(200);
                powerUpText.GetComponentInChildren <Text>().text = "$$$";
            }

            else if (puType == PowerUpType.TankSpeed)
            {
                float tankSpeed   = PlayerController.GetPlayerSpeed();
                float bulletSpeed = WeaponsController.GetShellSpeed();

                if (tankSpeed < tankSpeedCap)
                {
                    PlayerController.SetPlayerSpeed(tankSpeed * 1.25f);
                    powerUpText.GetComponentInChildren <Text>().text = "+Speed";
                }

                if (bulletSpeed < tankSpeed)
                {
                    WeaponsController.SetShellSpeed(tankSpeed * 1.1f);

                    if (WeaponsController.GetShellSpeed() > shellSpeedCap)
                    {
                        WeaponsController.SetShellSpeed(shellSpeedCap);
                    }
                }
            }

            else if (puType == PowerUpType.Armor)
            {
                int    currentMaxArmor = ArmorController.GetMaxArmor();
                string param           = PlayerController.GetSizeParameter();

                PlayerController.SetAnimationParameter(param, false);

                if (currentMaxArmor < armorCap)
                {
                    if (currentMaxArmor == 1)
                    {
                        PlayerController.SetSizeParameter("isMoving_S1");
                    }
                    else if (currentMaxArmor == 2)
                    {
                        PlayerController.SetSizeParameter("isMoving_S2");
                    }
                    else if (currentMaxArmor == 3)
                    {
                        PlayerController.SetSizeParameter("isMoving_S3");
                    }

                    //Increase max armor and set it to the new max
                    ArmorController.IncreaseMaxArmor();
                    ArmorController.SetArmor(ArmorController.GetMaxArmor());
                }
                else
                {
                    //if already at max, just refill armor
                    ArmorController.SetArmor(ArmorController.GetMaxArmor());
                }

                powerUpText.GetComponentInChildren <Text>().text = "+Max Armor";
            }

            if (puType == PowerUpType.Money)
            {
                SoundManager.PlaySfx(SFX.MoneyPickUp);
            }
            else
            {
                SoundManager.PlaySfx(SFX.PickUpPowerUp);
            }

            //CanvasToWorldSpacePositioner.TranslateCanvasToWorldPosition(powerUpText.GetComponent<RectTransform>(), gameObject);

            GameObject text;
            text = Instantiate(powerUpText, transform.position, Quaternion.identity);
            text.transform.SetParent(GameObject.Find("Canvas").transform, false);
            text.GetComponent <RectTransform>().position = Camera.main.WorldToScreenPoint(transform.position);

            Destroy(gameObject);
        }
    }
예제 #12
0
 private bool ShouldIgnoreCollision(ArmorController withArmor)
 {
     return(withArmor.bot.Equals(firedBy) && !isRebound);
 }