// Update is called once per frame
    public void setArrays()
    {
        if (!arraysSet)
        {
            mainTurrets = GameObject.FindGameObjectsWithTag("turret Main");
            //turret = GameObject.FindGameObjectsWithTag("Turret");
            TurretSubwaveStorage = mainTurrets[0].GetComponent <turretSubwaveStorage>();
            // Array.Resize(ref turretStreams, turret.Length);
            // for (int i = 0; i < turret.Length; i++)
            // {
            //     turretStreams[i] = turret[i].GetComponent<Turret>();
            // }

            numOfSubwaves = TurretSubwaveStorage.SubwaveCount;
            numOfWaves    = TurretSubwaveStorage.totalWaveCount;
        }
    }
Esempio n. 2
0
    IEnumerator loadBossTile()
    {
        spawnedTurret = Instantiate(turret, new Vector3(0, 0, 0), transform.rotation) as GameObject;

        save = new saveTurretSubwave();
        JsonUtility.FromJsonOverwrite(lines[NumOfTurretsLeft], save);

        load = LoadSubwaveStorage(save);

        setAll(load, spawnedTurret.GetComponent <turretSubwaveStorage>(), spawnedTurret);

        spawnedTurret.transform.parent        = boss.transform;
        spawnedTurret.transform.localPosition = spawnedTurret.GetComponent <turretSubwaveStorage>().turretLocation;

        NumOfTurrets = spawnedTurret.GetComponent <turretSubwaveStorage>().TotalNumberOfTurrets;



        //Debug.Log(spawnedTurret.GetComponent<turretSubwaveStorage>().spiralDirection[0, 0]);
        boss.transform.GetChild(0).GetComponent <bossWaveControl>().setArrays();
        boss.transform.GetChild(0).GetComponent <bossWaveControl>().setValues(0);
        NumOfTurretsLeft++;

        if (NumOfTurretsLeft >= NumOfTurrets)
        {
            yield return(new WaitForEndOfFrame());

            yield return(new WaitForEndOfFrame());
        }
        else
        {
            yield return(new WaitForEndOfFrame());

            yield return(new WaitForEndOfFrame());

            StartCoroutine(loadBossTile());
        }
    }
Esempio n. 3
0
    //sets all the values in the saveTurretSubwave script with the values in temp
    public saveTurretSubwave SaveSubwaveStorage(turretSubwaveStorage temp)
    {
        save = new saveTurretSubwave();

        save.totalWaveCount       = temp.totalWaveCount;
        save.SubwaveCount         = temp.SubwaveCount;
        save.TotalNumberOfTurrets = temp.TotalNumberOfTurrets;
        save.turretLocation       = temp.turretLocation;
        save.activeInWave         = temp.activeInWave;

        save.isDestroyable = temp.isDestroyable;

        save.numberActiveStreams = temp.numberActiveStreams;
        save.subwaveDuration     = temp.subwaveDuration;

        save.turretHealth = temp.turretHealth;

        //Loops
        int count = 0;

        //Debug.Log("");
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 16; j++)
            {
                //Debug.Log(count + " ," + i+ " ,"+j);
                save.streamEnabled[count] = temp.streamEnabled[j, i];


                save.turretSavedOnce[count] = temp.turretSavedOnce[j, i];
                save.fireType[count]        = temp.fireType[j, i];
                save.targetingType[count]   = temp.targetingType[j, i];
                save.rotateSpeed[count]     = temp.rotateSpeed[j, i];

                //public Vector4[] temp = new Vector4[16];

                // Target player settings
                save.smoothTarget[count]              = temp.smoothTarget[j, i];
                save.smoothTargetSpeed[count]         = temp.smoothTargetSpeed[j, i];
                save.targetPlayerOffsetAmmount[count] = temp.targetPlayerOffsetAmmount[j, i];


                // arc targetting settings
                save.rotateAngleDirection[count] = temp.rotateAngleDirection[j, i];
                save.rotateAngleWidth[count]     = temp.rotateAngleWidth[j, i];


                // spiral targetting settings
                save.spiralDirection[count] = temp.spiralDirection[j, i];

                //single direction settings
                save.singleDirDirection[count] = temp.singleDirDirection[j, i];


                //Bullet fire variables
                save.bulletFormation[count] = temp.bulletFormation[j, i];
                save.numOfBullets[count]    = temp.numOfBullets[j, i];
                //firerate determines the gap between each burst of shots
                save.firerate[count] = temp.firerate[j, i];
                //bullet delay determins the gap between each individual bullet in a burst (if they are staggered)
                save.bulletDelay[count] = temp.bulletDelay[j, i];
                save.bulletSpeedIncreaseAmmount[count] = temp.bulletSpeedIncreaseAmmount[j, i];
                save.angleBetweenBullets[count]        = temp.angleBetweenBullets[j, i];
                save.bulletRandomRange[count]          = temp.bulletRandomRange[j, i];

                save.shotgunStraight[count]          = temp.shotgunStraight[j, i];
                save.bulletSpeedIncreaseCheck[count] = temp.bulletSpeedIncreaseCheck[j, i];

                //individual bullet settings (what movement type they use  their speed etc)
                save.bulletMovementType[count] = temp.bulletMovementType[j, i];
                save.bulletBaseSpeed[count]    = temp.bulletBaseSpeed[j, i];

                //sin wave storage
                save.bulletAmplitude[count] = temp.bulletAmplitude[j, i];
                save.bulletFrequency[count] = temp.bulletFrequency[j, i];

                //variable speed storage
                save.bulletMaxSpeed[count]             = temp.bulletMaxSpeed[j, i];
                save.bulletMinSpeed[count]             = temp.bulletMinSpeed[j, i];
                save.bulletSpeedChangeFrequency[count] = temp.bulletSpeedChangeFrequency[j, i];


                //travel then target storage
                save.timeUntilChange[count]  = temp.timeUntilChange[j, i];
                save.newTargetingType[count] = temp.newTargetingType[j, i];
                save.speedAfterTarget[count] = temp.speedAfterTarget[j, i];

                save.bulletType[count] = temp.bulletType[j, i];

                count++;
            }
            //count++;
        }


        return(save);
    }
Esempio n. 4
0
    public void setAll(turretSubwaveStorage temp, turretSubwaveStorage turretToSet, GameObject turretBody)
    {
        turretToSet.totalWaveCount       = temp.totalWaveCount;
        turretToSet.SubwaveCount         = temp.SubwaveCount;
        turretToSet.TotalNumberOfTurrets = temp.TotalNumberOfTurrets;
        turretToSet.turretLocation       = temp.turretLocation;
        turretToSet.activeInWave         = temp.activeInWave;
        turretToSet.numberActiveStreams  = temp.numberActiveStreams;
        turretToSet.subwaveDuration      = temp.subwaveDuration;

        turretToSet.isDestroyable = temp.isDestroyable;

        turretToSet.turretHealth = temp.turretHealth;

        //Loops
        int count = 0;

        //Debug.Log("");
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 16; j++)
            {
                //Debug.Log(count + " ," + i+ " ,"+j);
                turretToSet.streamEnabled[j, i] = temp.streamEnabled[j, i];


                turretToSet.turretSavedOnce[j, i] = temp.turretSavedOnce[j, i];
                turretToSet.fireType[j, i]        = temp.fireType[j, i];
                turretToSet.targetingType[j, i]   = temp.targetingType[j, i];
                turretToSet.rotateSpeed[j, i]     = temp.rotateSpeed[j, i];

                //public Vector4[] temp = new Vector4[16];

                // Target player settings
                turretToSet.smoothTarget[j, i]              = temp.smoothTarget[j, i];
                turretToSet.smoothTargetSpeed[j, i]         = temp.smoothTargetSpeed[j, i];
                turretToSet.targetPlayerOffsetAmmount[j, i] = temp.targetPlayerOffsetAmmount[j, i];


                // arc targetting settings
                turretToSet.rotateAngleDirection[j, i] = temp.rotateAngleDirection[j, i];
                turretToSet.rotateAngleWidth[j, i]     = temp.rotateAngleWidth[j, i];


                // spiral targetting settings
                turretToSet.spiralDirection[j, i] = temp.spiralDirection[j, i];

                //single direction settings
                turretToSet.singleDirDirection[j, i] = temp.singleDirDirection[j, i];


                //Bullet fire variables
                turretToSet.bulletFormation[j, i] = temp.bulletFormation[j, i];
                turretToSet.numOfBullets[j, i]    = temp.numOfBullets[j, i];
                //firerate determines the gap between each burst of shots
                turretToSet.firerate[j, i] = temp.firerate[j, i];
                //bullet delay determins the gap between each individual bullet in a burst (if they are staggered)
                turretToSet.bulletDelay[j, i] = temp.bulletDelay[j, i];
                turretToSet.bulletSpeedIncreaseAmmount[j, i] = temp.bulletSpeedIncreaseAmmount[j, i];
                turretToSet.angleBetweenBullets[j, i]        = temp.angleBetweenBullets[j, i];
                turretToSet.bulletRandomRange[j, i]          = temp.bulletRandomRange[j, i];

                turretToSet.shotgunStraight[j, i]          = temp.shotgunStraight[j, i];
                turretToSet.bulletSpeedIncreaseCheck[j, i] = temp.bulletSpeedIncreaseCheck[j, i];

                //individual bullet settings (what movement type they use  their speed etc)
                turretToSet.bulletMovementType[j, i] = temp.bulletMovementType[j, i];
                turretToSet.bulletBaseSpeed[j, i]    = temp.bulletBaseSpeed[j, i];

                //sin wave storage
                turretToSet.bulletAmplitude[j, i] = temp.bulletAmplitude[j, i];
                turretToSet.bulletFrequency[j, i] = temp.bulletFrequency[j, i];

                //variable speed storage
                turretToSet.bulletMaxSpeed[j, i]             = temp.bulletMaxSpeed[j, i];
                turretToSet.bulletMinSpeed[j, i]             = temp.bulletMinSpeed[j, i];
                turretToSet.bulletSpeedChangeFrequency[j, i] = temp.bulletSpeedChangeFrequency[j, i];


                //travel then target storage
                turretToSet.timeUntilChange[j, i]  = temp.timeUntilChange[j, i];
                turretToSet.newTargetingType[j, i] = temp.newTargetingType[j, i];
                turretToSet.speedAfterTarget[j, i] = temp.speedAfterTarget[j, i];

                turretToSet.bulletType[j, i] = temp.bulletType[j, i];

                count++;
            }
            //count++;
        }


        Turret[] turrets = new Turret[4];

        turrets[0] = turretBody.transform.GetChild(0).GetComponent <Turret>();
        turrets[1] = turretBody.transform.GetChild(1).GetComponent <Turret>();
        turrets[2] = turretBody.transform.GetChild(2).GetComponent <Turret>();
        turrets[3] = turretBody.transform.GetChild(3).GetComponent <Turret>();
    }
    public void setValues(int subwaveNum)
    {
        //for each turret, checks if it is active/destroyable in current wave and sets its values to ones stored.
        for (int i = 0; i < mainTurrets.Length; i++)
        {
            mainTurrets[i].SetActive(mainTurrets[i].GetComponent <turretSubwaveStorage>().activeInWave[currentWave]);
            mainTurrets[i].GetComponent <BoxCollider2D>().enabled = mainTurrets[i].GetComponent <turretSubwaveStorage>().isDestroyable[currentWave];
            mainTurrets[i].SetActive(!TurretSubwaveStorage.hasBeenDestroyed[currentWave]);
            // Debug.Log("should hitbox be off?" + mainTurrets[i].GetComponent<turretSubwaveStorage>().isDestroyable[currentWave]);
        }

        //for each turret
        for (int i = 0; i < mainTurrets.Length; i++)
        {
            //safety check
            if (mainTurrets[i].GetComponent <turretSubwaveStorage>() != null)
            {
                TurretSubwaveStorage = mainTurrets[i].GetComponent <turretSubwaveStorage>();
                //if the turret hasnt been destroyed,
                if (TurretSubwaveStorage.hasBeenDestroyed[currentWave] == false)
                {
                    //for each stream
                    for (int j = 0; j < 4; j++)
                    {
                        //enable the stream (if stream was enabled)
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().streamEnabled = TurretSubwaveStorage.streamEnabled[subwaveNum, j];

                        if (TurretSubwaveStorage.streamEnabled[subwaveNum, j])
                        {
                            //if stream is enabled, set it to be ready to fire.
                            mainTurrets[i].transform.GetChild(j).gameObject.SetActive(true);
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_Fire>().enabled   = true;
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_Fire>().fireTimer = 1000f;
                            // mainTurrets[i].transform.GetChild(j).GetComponent<Turret_Fire>().readyToFire = true;
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_Targeting>().enabled   = true;
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_BulletSetup>().enabled = true;
                        }
                        else
                        {
                            mainTurrets[i].transform.GetChild(j).gameObject.SetActive(false);
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_Fire>().enabled        = false;
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_Targeting>().enabled   = false;
                            mainTurrets[i].transform.GetChild(j).GetComponent <Turret_BulletSetup>().enabled = false;
                        }

                        //set all values for the stream
                        //turret firing style settings
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().turretHealth              = TurretSubwaveStorage.turretHealth[currentWave];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().fireType                  = TurretSubwaveStorage.fireType[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().targetingType             = TurretSubwaveStorage.targetingType[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().rotateSpeed               = TurretSubwaveStorage.rotateSpeed[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().smoothTarget              = TurretSubwaveStorage.smoothTarget[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().smoothTargetSpeed         = TurretSubwaveStorage.smoothTargetSpeed[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().targetPlayerOffsetAmmount = TurretSubwaveStorage.targetPlayerOffsetAmmount[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().rotateAngleDirection      = TurretSubwaveStorage.rotateAngleDirection[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().rotateAngleWidth          = TurretSubwaveStorage.rotateAngleWidth[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().spiralDirection           = TurretSubwaveStorage.spiralDirection[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().singleDirDirection        = TurretSubwaveStorage.singleDirDirection[subwaveNum, j];

                        //bullet formation settings
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletFormation = TurretSubwaveStorage.bulletFormation[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().numOfBullets    = TurretSubwaveStorage.numOfBullets[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().firerate        = TurretSubwaveStorage.firerate[subwaveNum, j];
                        // mainTurrets[i].transform.GetChild(j).GetComponent<Turret>().bulletDelay = TurretSubwaveStorage.bulletDelay[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletSpeedIncreaseAmmount = TurretSubwaveStorage.bulletSpeedIncreaseAmmount[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().angleBetweenBullets        = TurretSubwaveStorage.angleBetweenBullets[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletRandomRange          = TurretSubwaveStorage.bulletRandomRange[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().shotgunStraight            = TurretSubwaveStorage.shotgunStraight[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletSpeedIncreaseCheck   = TurretSubwaveStorage.bulletSpeedIncreaseCheck[subwaveNum, j];


                        //individual bullet movement settings
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletMovementType = TurretSubwaveStorage.bulletMovementType[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletBaseSpeed    = TurretSubwaveStorage.bulletBaseSpeed[subwaveNum, j];

                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletAmplitude = TurretSubwaveStorage.bulletAmplitude[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletFrequency = TurretSubwaveStorage.bulletFrequency[subwaveNum, j];

                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletMaxSpeed             = TurretSubwaveStorage.bulletMaxSpeed[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletMinSpeed             = TurretSubwaveStorage.bulletMinSpeed[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletSpeedChangeFrequency = TurretSubwaveStorage.bulletSpeedChangeFrequency[subwaveNum, j];

                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletTimeUntilChange  = TurretSubwaveStorage.timeUntilChange[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletNewTargetingType = TurretSubwaveStorage.newTargetingType[subwaveNum, j];
                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletSpeedAfterTarget = TurretSubwaveStorage.speedAfterTarget[subwaveNum, j];

                        mainTurrets[i].transform.GetChild(j).GetComponent <Turret>().bulletType = TurretSubwaveStorage.bulletType[subwaveNum, j];
                    }
                }
            }
        }
    }