using System; using GameWorld; using LitJson; using UnityEngine; public class EnemyBullet : BaseBehaviour { private bool _hitGround { get { return Physics2D.OverlapBox(base.transform.position, Vector2.one, 0f, LayerManager.WallMask | LayerManager.GroundMask | LayerManager.OneWayGroundMask | LayerManager.CeilingMask | LayerManager.ObstacleMask); } } private void OnEnable() { this.player = null; this.beAtked = false; } private void Update() { if (this._hitGround && !this.enableOnGround) { if (this.explosionEffect > 0) { R.Effect.Generate(this.explosionEffect, null, base.transform.position, default(Vector3), default(Vector3), true); } R.Audio.PlayEffect(UnityEngine.Random.Range(136, 139), new Vector3?(base.transform.position)); EffectController.TerminateEffect(base.gameObject); } } private void OnTriggerEnter2D(Collider2D other) { if (other.name == "PlayerHurtBox") { PlayerHurtAtkEventArgs args = new PlayerHurtAtkEventArgs(other.transform.parent.gameObject, base.gameObject, this.origin, this.damage, Incrementor.GetNextId(), this.atkData, false); EventManager.PostEvent<Transform, PlayerHurtAtkEventArgs>("PlayerHurtAtk", base.transform, args); if (this.hitAudio > 0) { R.Audio.PlayEffect(this.hitAudio, new Vector3?(base.transform.position)); } if (!this.beAtked && this.type == EnemyBullet.BUlletType.Once) { this.player = other.transform.parent; this.HitBullet(); } if (this.type == EnemyBullet.BUlletType.Stay) { UnityEngine.Object.Destroy(base.GetComponent<Collider2D>()); } } } public void HitBullet() { if (this.beAtked) { if (this.explosionEffect > 0) { R.Effect.Generate(this.explosionEffect, null, base.transform.position, default(Vector3), default(Vector3), true); } R.Effect.Generate(49, null, base.transform.position, default(Vector3), default(Vector3), true); R.Audio.PlayEffect(UnityEngine.Random.Range(136, 139), new Vector3?(base.transform.position)); } if (this.player) { if (this.explosionEffect > 0) { R.Effect.Generate(this.explosionEffect, null, new Vector3((base.transform.position.x + this.player.position.x) / 2f, base.transform.position.y, base.transform.position.z), default(Vector3), default(Vector3), true); } R.Audio.PlayEffect(UnityEngine.Random.Range(136, 139), new Vector3?(base.transform.position)); } EffectController.TerminateEffect(base.gameObject); } private void OnDisable() { if (this.missAudio > 0) { R.Audio.PlayEffect(this.missAudio, new Vector3?(base.transform.position)); } } public void SetAtkData(JsonData jsonData) { this.atkData = jsonData; } private Transform player; public bool beAtked; public int damage; public JsonData atkData; [HideInInspector] public GameObject origin; [SerializeField] public int explosionEffect = 90; [SerializeField] private bool enableOnGround; public EnemyBullet.BUlletType type; public EnemyType EnemyTypeOfShooter; public int hitAudio; public int missAudio; public enum BUlletType { Once, Stay, Continue } }