public GameObject SpawnVirus(string virusName, VirusData data, Vector3 pos, bool isAdd)
    {
        //Debug.Log("***************virusName == " + virusName);
        var obj   = Pools.Spawn(virusName);
        var virus = obj.transform.GetComponent <BaseVirus>();

        if (!virusName.Equals("AdsorptionVirus"))
        {
            obj.transform.GetComponent <VirusSpriteSetter>().Set(_minOrderIndex);
            obj.GetComponent <BubbleEffectMrg>().Initi(_minOrderIndex, data.SplitLevel, data.VirusColorLevel);
            _minOrderIndex++;
        }
        else
        {
            obj.transform.GetComponent <VirusSpriteSetter>().Set(_maxOrderIndex);
            obj.GetComponent <BubbleEffectMrg>().Initi(_minOrderIndex, data.SplitLevel, data.VirusColorLevel);
            _maxOrderIndex--;
        }
        virus.Born(data);
        obj.transform.position = pos;
        if (isAdd)
        {
            var n = (VirusName)Enum.Parse(typeof(VirusName), virusName);
            _originCount += VirusTool.GetChildSplit(data.SplitLevel, n);
        }

        _virusObjects.Add(obj);
        return(obj);
    }
    private void SpawnVirus(string virusName, VirusData data)
    {
        //Debug.Log("+++++++++++++++++++++++++virusName == " + virusName);
        var obj = Pools.Spawn(virusName);

        obj.transform.localScale = Vector3.one;
        var virus     = obj.transform.GetComponent <BaseVirus>();
        var virusMove = obj.transform.GetComponent <VirusMove>();

        if (!virusName.Equals("AdsorptionVirus"))
        {
            obj.transform.GetComponent <VirusSpriteSetter>().Set(_minOrderIndex);
            obj.GetComponent <BubbleEffectMrg>().Initi(_minOrderIndex, data.SplitLevel, data.VirusColorLevel);
            _minOrderIndex++;
        }
        else
        {
            obj.transform.GetComponent <VirusSpriteSetter>().Set(_maxOrderIndex);
            obj.GetComponent <BubbleEffectMrg>().Initi(_minOrderIndex, data.SplitLevel, data.VirusColorLevel);
            _maxOrderIndex--;
        }

        virus.Born(data);

        float minX = VirusTool.LeftX + virusMove.Radius / 2;
        float maxX = VirusTool.RightX - virusMove.Radius / 2;
        float x    = Random.Range(minX, maxX);
        float y    = VirusTool.TopY + virusMove.Radius / 2;

        obj.transform.position = new Vector3(x, y, 0);

        _virusObjects.Add(obj);
    }
Example #3
0
 public override void Born(VirusData virusData)
 {
     base.Born(virusData);
     _isRotate       = false;
     _totalTime      = 0;
     _rotateDuration = 3;
     _totalAngle     = 60;
 }
Example #4
0
 public override void Born(VirusData virusData)
 {
     base.Born(virusData);
     _duration    = Random.Range(6f, 10f);
     _rotateSpeed = 300f;
     _isSpeed     = false;
     _speedMul    = 1;
 }
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);
            _totalTime = 0;

            _runAwayDuration = 3;
            _scale           = 1;
        }
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);
            _top.Initi(new Vector3(0, -0.4f, 0), Vector3.zero, 0.5f);
            _bottom.Initi(new Vector3(0, 0.32f, 0), Vector3.zero, 0.5f);
            _duration = 0.1f;

            _invincible = false;
        }
Example #7
0
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);
            _totalTime = 0;

            _runAwayDuration = 3f;
            _vampireDuration = 5f;
            _targetVirus     = null;
        }
 public override void Born(VirusData virusData)
 {
     base.Born(virusData);
     _isTracking     = false;
     _totalTime      = 0;
     _wanderDuration = Random.Range(3f, 4f);
     foreach (VirusFadeAction t in _fadeTransform)
     {
         t.Initi();
     }
 }
Example #9
0
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);
            _rotateSpeed = 100;
            _totalTime   = 0;
            _isRunAway   = false;

            _duration                   = Random.Range(4f, 10f);
            _runAwayDuration            = Random.Range(1f, 3f);
            _rotateTransform.localScale = Vector3.one;
        }
Example #10
0
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);

            _invincible           = true;
            _isFaded              = false;
            _invincibleDuration   = Random.Range(2f, 4f);
            _noinvincibleDuration = Random.Range(5f, 10f);
            _totalTime            = 0;
            _virusHealthBar.gameObject.SetActive(false);
            foreach (VirusFadeAction t in _fadeViruss)
            {
                t.Initi();
            }
        }
Example #11
0
 public void GetTested(VirusData virus)
 {
     if (!Alive)
     {
         return;
     }
     foreach (var genome in virus.Genomes)
     {
         if (!Immunity.Contains(genome.Genome))
         {
             Alive = false;
             Console.WriteLine($"Pig {ID} is dead");
             return;
         }
     }
 }
Example #12
0
        public override void Born(VirusData virusData)
        {
            base.Born(virusData);
            _totalTime = 0;
            _duration  = 0.1f;

            _cornerCache = new Dictionary <int, bool>();
            _cornerCache.Add(0, false);
            _cornerCache.Add(1, false);
            _cornerCache.Add(2, false);
            _cornerCache.Add(3, false);
            _cornerCache.Add(4, false);

            _virusList      = new List <VirusMove>();
            _transformCache = new Dictionary <VirusMove, int>();
        }
Example #13
0
        protected override void RunAway()
        {
            var move = transform.GetComponent <VirusMove>();

            for (int i = 0; i < 3; i++)
            {
                int        level      = (int)(SplitLevel - 1);
                SplitLevel splitLevel = level < 0 ? SplitLevel.Level1 : (SplitLevel)level;
                float      angle      = Random.Range(i * 120, (i + 1) * 120);
                VirusData  data       = new VirusData();
                data.VirusColorLevel = VirusTool.GetColorLevel(CurColorLevel);
                data.SplitLevel      = splitLevel;
                data.MoveSpeed       = move.OriginSpeed;
                data.MoveDirection   = Quaternion.Euler(0, 0, angle) * Vector3.right;
                int t = VirusGameDataAdapter.GetLevel();
                data.HealthValue = VirusTool.GetVirusHealthByColorLevel("DartVirus", t, data.VirusColorLevel);
                VirusMrg.Instance.SpawnVirus("DartVirus", data, transform.position, true);
            }
        }
        private void Produce()
        {
            VirusData data = new VirusData();

            data.SplitLevel      = SplitLevel;
            data.VirusColorLevel = CurColorLevel;
            data.HealthValue     = VirusTool.GetVirusHealthByColorLevel("SwallowVirus", VirusGameDataAdapter.GetLevel(), CurColorLevel);
            data.MoveSpeed       = 4;
            data.MoveDirection   = Quaternion.Euler(0, 0, Random.Range(0f, 360f)) * Vector3.up;

            float scale    = VirusTool.GetScaleByLevel(data.SplitLevel);
            var   newVirus = VirusMrg.Instance.SpawnVirus("SwallowVirus", data, transform.position, true);

            newVirus.transform.localScale = Vector3.zero;
            newVirus.transform.DOScale(new Vector3(scale, scale, 1), 0.5f).OnComplete(() =>
            {
                _isRunAway = false;
            });
        }
Example #15
0
 protected void Divide(string virusName, ColorLevel colorLevel, int count)
 {
     if (SplitLevel > SplitLevel.Level1)
     {
         Vector3 pos   = transform.position;
         var     level = SplitLevel - 1;
         var     move  = transform.GetComponent <VirusMove>();
         for (int i = 0; i < count; i++)
         {
             VirusData data1 = new VirusData();
             data1.VirusColorLevel = VirusTool.GetColorLevel(colorLevel);
             data1.SplitLevel      = level;
             data1.MoveSpeed       = move.OriginSpeed;
             data1.MoveDirection   = Quaternion.Euler(0, 0, Random.Range(-45f, 45f)) * Vector3.up;
             data1.HealthValue     = VirusTool.GetVirusHealthByColorLevel(virusName, VirusGameDataAdapter.GetLevel(), data1.VirusColorLevel);
             VirusMrg.Instance.SpawnVirus(virusName, data1, pos, false);
         }
     }
 }
Example #16
0
    public virtual void Born(VirusData virusData)
    {
        VirusSprite = transform.GetComponent <BaseVirusSprite>();
        VirusSprite.Initi(virusData.VirusColorLevel);
        VirusHealth       = new RectiveProperty <float>();
        VirusHealth.Value = virusData.HealthValue;
        HealthBar.Initi(VirusTool.GetStrByIntger(virusData.HealthValue));
        VirusHealth.Subscibe(HealthBar.SetValue);

        SplitLevel       = virusData.SplitLevel;
        CurColorLevel    = virusData.VirusColorLevel;
        OriginColorLevel = virusData.VirusColorLevel;
        TotalHealth      = virusData.HealthValue;

        ScaleX = VirusTool.GetScaleByLevel(virusData.SplitLevel);
        transform.localScale = new Vector3(ScaleX, ScaleX, 1);
        VirusMove.Initi(virusData.MoveSpeed, virusData.MoveDirection);

        transform.GetComponent <VirusBuffMrg>().Initi();
        IsDeath = false;
    }
    private IEnumerator Spawn()
    {
        List <WaveVirusItem> items = WaveVirusDataAdapter.GetWaveVirus();

        int count = items.Count;
        int cc    = 0;

        _isSpawned = false;
        while (true)
        {
            yield return(new WaitForSeconds(Random.Range(0.3f, 0.8f)));

            VirusData  data       = new VirusData();
            Vector3    dir        = Quaternion.Euler(0, 0, Random.Range(-20f, 20f)) * Vector3.down;
            SplitLevel splitLevel = items[cc].SplitLevel;
            string     virusName  = items[cc].VirusName.ToString();

            int level = VirusGameDataAdapter.GetLevel();
            data.VirusColorLevel = items[cc].ColorLevel;
            data.HealthValue     = VirusTool.GetVirusHealthByColorLevel(virusName, level, data.VirusColorLevel);
            data.MoveSpeed       = 3;
            data.MoveDirection   = dir;
            data.SplitLevel      = splitLevel;
            SpawnVirus(virusName, data);

            cc++;
            if (cc >= count)
            {
                _isSpawned = true;
                WaveVirusDataAdapter.WaveIndex++;
                if (WaveVirusDataAdapter.WaveIndex >= WaveVirusDataAdapter.MaxWave)
                {
                    WaveVirusDataAdapter.IsNextWave = false;
                }
                yield break;
            }
        }
    }
Example #18
0
 public override void Born(VirusData virusData)
 {
     base.Born(virusData);
     _totalTime      = 0;
     _lanuchDuration = 5;
 }