diff --git a/Assets/Scripts/BloodSucker.cs b/Assets/Scripts/BloodSucker.cs index 5d63d25..7743ff2 100644 --- a/Assets/Scripts/BloodSucker.cs +++ b/Assets/Scripts/BloodSucker.cs @@ -18,12 +18,14 @@ public class BloodSucker : MonoBehaviour { VampireEntity vampireEntity; bool isSucking; float currentSuckTimer; + [HideInInspector] public ScreenShaker screenShaker; [HideInInspector] public SoundManager soundManager; void Awake() { vampireEntity = GetComponent(); bloodParticles.Stop(true, ParticleSystemStopBehavior.StopEmitting); soundManager = FindObjectOfType(); + screenShaker = FindObjectOfType(); } void FixedUpdate() { @@ -101,6 +103,7 @@ public class BloodSucker : MonoBehaviour { currentTarget.bloodTokens -= 1; vampireEntity.HealDamage(healthGainFromSuck); // print("One token sucked"); + screenShaker.Shake(); soundManager.PlaySound(suckSource, suckSounds, randomPitch:true, createTempSourceIfBusy:true); if (currentTarget.bloodTokens == 0) { SetIsSucking(false); diff --git a/Assets/Scripts/PlayerMovement.cs b/Assets/Scripts/PlayerMovement.cs index a31bf84..75ebd08 100644 --- a/Assets/Scripts/PlayerMovement.cs +++ b/Assets/Scripts/PlayerMovement.cs @@ -21,6 +21,7 @@ public class PlayerMovement : MonoBehaviour { VampireEntity vampireEntity = null!; Animator animator = null!; public bool facingRight { get; private set; } = true; + [HideInInspector] public ScreenShaker screenShaker; [SerializeField] AudioSource jumpSource; [SerializeField] AudioClip[] jumpSounds; @@ -40,6 +41,7 @@ public class PlayerMovement : MonoBehaviour { animator = GetComponentInChildren(); currentState = new ImmobileMovementState(this); soundManager = FindObjectOfType(); + screenShaker = FindObjectOfType(); } void Start() { @@ -193,11 +195,13 @@ public class PlayerMovement : MonoBehaviour { // playerMovement.animator.SetBool("Jumping", true); playerMovement.animator.Play("Player_Jump"); playerMovement.soundManager.PlaySound(playerMovement.jumpSource, playerMovement.jumpSounds, randomPitch: true, createTempSourceIfBusy: true); + playerMovement.screenShaker.Shake(); } public override void LeaveState() { // playerMovement.animator.SetBool("Jumping", false); playerMovement.animator.Play("Player_Idle"); playerMovement.soundManager.PlaySound(playerMovement.landSource, playerMovement.landSounds, randomPitch: true, createTempSourceIfBusy: true); + playerMovement.screenShaker.Shake(); } public override BaseState? FixedUpdateState() { diff --git a/Assets/Scripts/VampireEntity.cs b/Assets/Scripts/VampireEntity.cs index e03fb60..81355e6 100644 --- a/Assets/Scripts/VampireEntity.cs +++ b/Assets/Scripts/VampireEntity.cs @@ -2,40 +2,46 @@ using UnityEngine; public class VampireEntity : Entity { - [SerializeField] [field: Required] - PlayerStats playerStats = null!; + [SerializeField] + [field: Required] + PlayerStats playerStats = null!; // [SerializeField] [Required] // HealthBar healthBar; [HideInInspector] public PlayerMovement playerMovement; + [HideInInspector] public ScreenShaker screenShaker; protected override void Awake() { - base.Awake(); - transform.SetParent(arena.minionParent); + base.Awake(); + transform.SetParent(arena.minionParent); + screenShaker = FindObjectOfType(); } - - protected override void Start() { - base.Start(); - base.entityType = EntityFlag.Vampire; - playerMovement = GetComponent(); - } - protected override void Update() { - base.Update(); + protected override void Start() { + base.Start(); + base.entityType = EntityFlag.Vampire; + playerMovement = GetComponent(); + } - if (gameFlowManager.CanDoAction) - TakeDamage(playerStats.bloodLossRate * Time.deltaTime, this, sound:false); - } + protected override void Update() { + base.Update(); - // public override void TakeDamage(float amount) { - // base.TakeDamage(amount); - // healthBar.SetHealthFraction(Health / initialHealth); - // } + if (gameFlowManager.CanDoAction) + TakeDamage(playerStats.bloodLossRate * Time.deltaTime, this, sound: false); + } - public bool IsInSafeZone() => playerMovement.IsInSafeZone; + public override bool TakeDamage(float amount, Entity other, bool sound = true) { + if (sound) { + screenShaker.Shake(); + } - protected override void OnDied() { - OnEmpty(); - gameFlowManager.GameOver(); - } + return base.TakeDamage(amount, other, sound); + } + + public bool IsInSafeZone() => playerMovement.IsInSafeZone; + + protected override void OnDied() { + OnEmpty(); + gameFlowManager.GameOver(); + } } \ No newline at end of file