Ejemplo n.º 1
0
    public static string GetPluralVirusType(VirusType v)
    {
        if (v == VirusType.Virus)
        {
            return "Viruses";
        }

        return v.ToString() + "s";
    }
Ejemplo n.º 2
0
 public Virus(VirusType type, VirusShape shape, EnterType enterType, ExitType exitType, Vector3 pos, World world)
 {
     this.type      = type;
     this.shape     = shape;
     this.enterType = enterType;
     this.exitType  = exitType;
     this.position  = pos;
     this.model     = (shape == VirusShape.Complex ? Main.main.comVirusModel : Main.main.icoVirusModel);
     world.viruses.Add(this);
 }
Ejemplo n.º 3
0
        public static void Load()
        {
            var reader = new BinaryReader(DBFile);

            while (DBFile.Position < DBFile.Length)
            {
                VirusType type      = (VirusType)reader.ReadByte();
                byte[]    signature = reader.ReadBytes(reader.ReadByte());
                string    name      = reader.ReadString();

                Signatures.Add(new VirusInfo(type, signature, name));
            }
        }
 public void ModifyVirus(VirusType type)
 {
     switch (type)
     {
         case VirusType.Normal:
             this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("VirusNormal")));
             break;
         case VirusType.Warning:
             this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("VirusWarning")));
             break;
         case VirusType.Danger:
             this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("VirusDanger")));
             break;
     }
 }
Ejemplo n.º 5
0
 public VirusInfo(VirusType type, byte[] signatures, string name)
 {
     this.Type      = type;
     this.Signature = signatures;
     this.Name      = name;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Добавить новый вирус в базу сигнатур
 /// </summary>
 public static void Add(VirusType type, string name, byte[] signature)
 {
     Signatures.Add(new VirusInfo(type, signature, name));
 }
Ejemplo n.º 7
0
    /// <summary>
    /// Добавляем эффект
    /// </summary>
    /// <param name="code">Название эффекта</param>
    /// <param name="time">Длительность эффекта</param>
    /// <param name="value">Значение эффекта</param>
    public void AddEffect(string code, float time, float value)
    {
        // Если юнит жив
        if (!IsDead)
        {
            switch (code)
            {
            // Добавляем эффект "оглушения"
            case "Stunned":
                // Если юнит может быть оглушаемым и не оглушён, оглушаем его
                if (stun_particles != null && !fight_manager.IsStunned)
                {
                    CameraShake.instance.SmallShake();                      // Трясём камеру
                    fight_manager.IsStunned = true;                         // Указываем что юнит "оглушён"
                    animator.SetBool("stunned", true);                      // Включаем анимацию "оглушения"
                    stun_particles.SetActive(true);                         // Включаем частицы "оглушения"
                    StartCoroutine(fight_manager.EffectsTimer(code, time)); // Запускаем таймер отключения "оглушения"
                }
                break;

            // Добавляем эффект "уклонения"
            case "Evasion":
                // Если части тела не записаны (при первом запуске)
                if (body_parts.Count == 0)
                {
                    // Проверяем все дочерние объекты
                    for (int i = 0; i < unit_wrapper.transform.childCount; i++)
                    {
                        // Если объект - часть тела, то добавляем скрипт и кэшируем его
                        if (unit_wrapper.transform.GetChild(i).CompareTag("BodyPart"))
                        {
                            unit_wrapper.transform.GetChild(i).gameObject.AddComponent <UnitEvasionEffect>().isNew = true;
                            body_parts.Add(unit_wrapper.transform.GetChild(i).GetComponent <UnitEvasionEffect>());
                        }
                    }
                }

                // Создаём спрайт и включаем эффект исчезновения
                for (int i = 0; i < body_parts.Count; i++)
                {
                    body_parts[i].SpawnSprite();
                }
                break;

            // Добавляем эффект "кровотечения"
            case "Bleeding":
                // Если юнит может "кровоточить" и сейчас "кровотечения" нет, включаем эффект
                if (canBleed && fight_manager.IsBleeding == 0)
                {
                    fight_manager.IsBleeding = 20;     // Кол-во тиков

                    // Отнимаем 20% от максимального здоровья за ~4 секунды, урон идёт каждые 0.2 секунды (20 = 4 сек * 5 тиков/сек)
                    StartCoroutine(fight_manager.EffectsTimer(code, 0.2f, MaxHealth * 0.2f / 20));

                    StartCoroutine(fight_manager.ChangeSpeed("Slow MS", time, value));     // Замедляем скорость передвижения на 5% на 4.5 секунды
                    StartCoroutine(fight_manager.ChangeSpeed("Slow AS", time, value));     // Замедляем скорость атаки на 5% на 4.5 секунды
                }
                break;

            // Добавляем эффект "отравления"
            case "Poisoned":
                // Если юнит может "отравиться" и сейчас "отравления" нет, включаем эффект
                if (canBePoisoned && fight_manager.IsPoisoned == 0)
                {
                    fight_manager.IsPoisoned = 25;     // Кол-во тиков

                    // Отнимаем 25% от максимального здоровья за ~5 секунд, урон идёт каждые 0.2 секунды (25 = 5 сек * 5 тиков/сек)
                    StartCoroutine(fight_manager.EffectsTimer(code, 0.2f, MaxHealth * 0.25f / 25));

                    StartCoroutine(fight_manager.ChangeSpeed("Slow MS", time, value));     // Замедляем скорость передвижения на 10% на 5.5 секунд
                    StartCoroutine(fight_manager.ChangeSpeed("Slow AS", time, value));     // Замедляем скорость атаки на 10% на 5.5 секунд
                }
                break;

            // Замедляем скорость атаки и передвижения
            case "Sticky Web":
            case "Freezing":
                ChangeColor(code);                                                 // Меняем цвет на голубоватый (только для Frozen Bite)
                StartCoroutine(fight_manager.EffectsTimer(code, time));            // Меняем цвет на начальный через время
                StartCoroutine(fight_manager.ChangeSpeed("Slow MS", time, value)); // Замедляем скорость передвижения
                StartCoroutine(fight_manager.ChangeSpeed("Slow AS", time, value)); // Замедляем скорость атаки
                break;

            // После смерти превращаемся в "Зомби" / "Гигантского паука"
            case "Virus":
                if (canBeInfected)
                {
                    ChangeColor(VirusType.ToString());                                 // Меняем цвет на зеленоватый
                    StartCoroutine(fight_manager.EffectsTimer(code, time));            // Отключаем эффект через время
                    StartCoroutine(fight_manager.ChangeSpeed("Slow MS", time, value)); // Замедляем скорость передвижения
                    StartCoroutine(fight_manager.ChangeSpeed("Slow AS", time, value)); // Замедляем скорость атаки
                }
                break;
            }
        }
    }