public static string GetPluralVirusType(VirusType v) { if (v == VirusType.Virus) { return "Viruses"; } return v.ToString() + "s"; }
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); }
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; } }
public VirusInfo(VirusType type, byte[] signatures, string name) { this.Type = type; this.Signature = signatures; this.Name = name; }
/// <summary> /// Добавить новый вирус в базу сигнатур /// </summary> public static void Add(VirusType type, string name, byte[] signature) { Signatures.Add(new VirusInfo(type, signature, name)); }
/// <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; } } }