diff --git a/Assets/Scripts/Boss/ElementalHealth.cs b/Assets/Scripts/Boss/ElementalHealth.cs index a8b995bfcd9b99e4d301f1ccf3f35db26c2addbf..9701e425f19409f99ffb24fb2c3faa2a5fa1137c 100644 --- a/Assets/Scripts/Boss/ElementalHealth.cs +++ b/Assets/Scripts/Boss/ElementalHealth.cs @@ -1,6 +1,6 @@ using UnityEngine; -public class ElementalHealth : MonoBehaviour +public class ElementalHealth : MonoBehaviour, IEnemyHealthHandler { public int startingHealth = 500; public int currentHealth; diff --git a/Assets/Scripts/Enemy/EnemyHealth.cs b/Assets/Scripts/Enemy/EnemyHealth.cs index 6901af8331d58272df2d35e851124edc24d5ef9a..7174196242dec53cb9edb5c6a0ed5b01f080c41d 100644 --- a/Assets/Scripts/Enemy/EnemyHealth.cs +++ b/Assets/Scripts/Enemy/EnemyHealth.cs @@ -1,6 +1,6 @@ using UnityEngine; -public class EnemyHealth : MonoBehaviour +public class EnemyHealth : MonoBehaviour, IEnemyHealthHandler { public int startingHealth = 100; public int currentHealth; @@ -31,8 +31,11 @@ public class EnemyHealth : MonoBehaviour currentHealth = startingHealth; questTemple = FindObjectOfType<Temple>(); pet = GameObject.FindGameObjectWithTag("Pet"); - petHealth = pet.GetComponent<PetHealth>(); - petType = petHealth.GetPetType(); + if (pet != null) + { + petHealth = pet.GetComponent<PetHealth>(); + petType = petHealth.GetPetType(); + } } diff --git a/Assets/Scripts/GameOver/GameOverCanvas.cs b/Assets/Scripts/GameOver/GameOverCanvas.cs index 954256e873de70a01003c1d52c8ffa5607e9d3ff..f5c66899ad28a7d420a8573fbe8d85af2090f50f 100644 --- a/Assets/Scripts/GameOver/GameOverCanvas.cs +++ b/Assets/Scripts/GameOver/GameOverCanvas.cs @@ -30,6 +30,7 @@ public class GameOverCanvas : MonoBehaviour public void OnClickLatestSave() { + GlobalManager.Instance.IsFirstLoad = true; SceneManager.LoadScene("Quest"); IsSet = true; } diff --git a/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs b/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs new file mode 100644 index 0000000000000000000000000000000000000000..8c3471976afe9ae3670c7012a23050c757142770 --- /dev/null +++ b/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; + +public interface IEnemyHealthHandler +{ + public void TakeDamage(int amount, Vector3 hitPoint); + + public Transform transform { get; } +} diff --git a/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs.meta b/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..1270a9ac6c246bcb5d0a18cf29cc233fd808cd64 --- /dev/null +++ b/Assets/Scripts/Interfaces/IEnemyHealthHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e83f67c5f57e60d42bd9a210c6144486 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Managers/EnemyManager.cs b/Assets/Scripts/Managers/EnemyManager.cs index ef789d1054f2a3f330ef570211cd2f21845925e6..e6d54191dd08494156fa01894044aa0b4972c804 100644 --- a/Assets/Scripts/Managers/EnemyManager.cs +++ b/Assets/Scripts/Managers/EnemyManager.cs @@ -20,7 +20,7 @@ public class EnemyManager : MonoBehaviour void Start() { - + isBoss = GlobalStateManager.Instance.IdxQuest == 3; } diff --git a/Assets/Scripts/Player/PlayerShotGunning.cs b/Assets/Scripts/Player/PlayerShotGunning.cs index bbcaa887a41f2ca26e7eafd07b20a1d585ab46b3..ef02c547ccf22e0b873a552546a662e6ce860fdf 100644 --- a/Assets/Scripts/Player/PlayerShotGunning.cs +++ b/Assets/Scripts/Player/PlayerShotGunning.cs @@ -7,7 +7,7 @@ public class PlayerShotGunning : MonoBehaviour, WeaponHandler [SerializeField] private float damagePerShot = 30f; [SerializeField] - private float timeBetweenBullets = 0.15f; + private float timeBetweenBullets = 1f; [SerializeField] private float range = 100f; public GameObject prefabEffect; @@ -22,7 +22,7 @@ public class PlayerShotGunning : MonoBehaviour, WeaponHandler Light gunLight; readonly float effectsDisplayTime = 0.2f; - private readonly float maxDist = 8f; + private readonly float maxDist = 10f; int numBullet = 3; List<GameObject> effects = new List<GameObject>(); @@ -36,6 +36,13 @@ public class PlayerShotGunning : MonoBehaviour, WeaponHandler } set { + var diff = value - level; + for (int i = 0; i < diff; i++) + { + AddBullet(); + numBullet++; + } + level = value; } } @@ -116,14 +123,16 @@ public class PlayerShotGunning : MonoBehaviour, WeaponHandler if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) { - EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth>(); + IEnemyHealthHandler enemyHealth = shootHit.collider.GetComponent<ElementalHealth>(); + enemyHealth ??= shootHit.collider.GetComponent< EnemyHealth>(); + if (enemyHealth != null) { var dist = Vector3.Distance(shootHit.transform.position, transform.position); if (dist <= maxDist) { Debug.Log("Enemy is On Distance"); - int finalDamage = (int)(damagePerShot / Math.Sqrt(range)); + int finalDamage = (int)(damagePerShot / Math.Sqrt(dist)); enemyHealth.TakeDamage(finalDamage, shootHit.point); } else diff --git a/Assets/Scripts/Player/Weapons/PlayerArrow.cs b/Assets/Scripts/Player/Weapons/PlayerArrow.cs index bf6587dc8c990f260d0dd55bbdf47f32a0b1e940..cc98fc3a04b47b6e60304ad51988d5d02ae0fc09 100644 --- a/Assets/Scripts/Player/Weapons/PlayerArrow.cs +++ b/Assets/Scripts/Player/Weapons/PlayerArrow.cs @@ -35,18 +35,17 @@ public class PlayerArrow : MonoBehaviour if (didHit) return; didHit = true; - if (other.gameObject.TryGetComponent<EnemyHealth>(out var enemyHealth)) + + IEnemyHealthHandler enemyHealth = other.gameObject.GetComponent<ElementalHealth>(); + enemyHealth ??= other.gameObject.GetComponent<EnemyHealth>(); + + if (enemyHealth != null) { var energy = 0.5 * rb.mass * rb.velocity.magnitude * rb.velocity.magnitude; var damage = energy * damageMultiplier; Debug.Log("damage: "+ damage); enemyHealth.TakeDamage((int)damage, enemyHealth.transform.position); } - - /* rb.velocity = Vector3.zero; - rb.angularVelocity = Vector3.zero; - rb.isKinematic = true; - transform.parent = other.transform;*/ Destroy(gameObject); } } diff --git a/Assets/Scripts/Player/Weapons/PlayerSword.cs b/Assets/Scripts/Player/Weapons/PlayerSword.cs index 3fafc2974234002728b85e645f04ea5531ca6631..76af46b28313890f3ba72e15c1d06db627c04a28 100644 --- a/Assets/Scripts/Player/Weapons/PlayerSword.cs +++ b/Assets/Scripts/Player/Weapons/PlayerSword.cs @@ -28,7 +28,10 @@ public class PlayerSword : MonoBehaviour, WeaponHandler void OnTriggerEnter(Collider other) { - if (other.gameObject.TryGetComponent<EnemyHealth>(out var enemyHealth)) + IEnemyHealthHandler enemyHealth = other.gameObject.GetComponent<ElementalHealth>(); + enemyHealth ??= other.gameObject.GetComponent<EnemyHealth>(); + + if (enemyHealth != null) { if (this.animator.GetCurrentAnimatorStateInfo(0).IsName("SwordSwing")) { diff --git a/Assets/Scripts/Quest/Temple/Temple.cs b/Assets/Scripts/Quest/Temple/Temple.cs index d0e706058b6fc2671dd10d8baa832046ef0dbf6d..dd058c74d22f85cd8b83c744ed4582c770293fbf 100644 --- a/Assets/Scripts/Quest/Temple/Temple.cs +++ b/Assets/Scripts/Quest/Temple/Temple.cs @@ -111,7 +111,10 @@ public class Temple : MonoBehaviour GlobalManager.Instance.TotalTime += questTime; ToastManager.Instance.ShowToastQueue(System.TimeSpan.FromSeconds(GlobalManager.Instance.TotalTime).ToString("mm':'ss"), 1); - this.saveDialog.Show(); + if (idxCurrentQuest != 4) + { + this.saveDialog.Show(); + } } private void OnTriggerEnter(Collider other) diff --git a/Assets/Scripts/SaveLoad/SaveLoadManager.cs b/Assets/Scripts/SaveLoad/SaveLoadManager.cs index cad9cacdcb0b20601fa3edc762880a4fc60b7cf6..d189dfe21e95c645e7ec98aa78e86eb747bbef71 100644 --- a/Assets/Scripts/SaveLoad/SaveLoadManager.cs +++ b/Assets/Scripts/SaveLoad/SaveLoadManager.cs @@ -76,6 +76,7 @@ public class SaveLoadManager : MonoBehaviour public void LoadState(int Id) { var state = GetSavedStateFromFile(Id); + state.playerStateSave.playerName = GlobalManager.Instance.PlayerName; if (state != null) { Debug.Log("Load State " + Id); diff --git a/Assets/Scripts/SaveLoad/SavePlace.cs b/Assets/Scripts/SaveLoad/SavePlace.cs index 05e35ec24d56825249d36dc7a89e62649a4a1b5e..d73dc564ed1b8ae50c111b8011332ab4ca997123 100644 --- a/Assets/Scripts/SaveLoad/SavePlace.cs +++ b/Assets/Scripts/SaveLoad/SavePlace.cs @@ -24,11 +24,6 @@ public class SavePlace : MonoBehaviour } SaveLoadManager.Instance.ShowUI(); } - - if (onArea && Input.GetKeyDown(KeyCode.N)) - { - SaveLoadManager.Instance.LoadState(2); - } } private void OnTriggerEnter(Collider other)