From 7f493f682503f5186308de7b8f74b5b49233cfe4 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 2 Nov 2023 11:51:31 +0800 Subject: +init --- GameCode/BlacksmithUpgrade.cs | 88 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 GameCode/BlacksmithUpgrade.cs (limited to 'GameCode/BlacksmithUpgrade.cs') diff --git a/GameCode/BlacksmithUpgrade.cs b/GameCode/BlacksmithUpgrade.cs new file mode 100644 index 0000000..9022dc2 --- /dev/null +++ b/GameCode/BlacksmithUpgrade.cs @@ -0,0 +1,88 @@ +using UnityEngine; + +public class BlacksmithUpgrade : MonoBehaviour, DayNightCycle.IDaytimeSensitive +{ + [SerializeField] + private BuildingInteractor buildingInteractor; + + [SerializeField] + private ProductionBar productionBar; + + [SerializeField] + private Weapon.EDamageAffectedByBlacksmithUpgrade upgrade; + + [SerializeField] + private float multiplyer = 1.2f; + + [SerializeField] + private int researchTime = 2; + + [SerializeField] + private Equippable researchSpeedPerk; + + private int researchTimeLeft; + + private void Start() + { + DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this); + } + + public void OnDawn_AfterSunrise() + { + } + + public void OnDawn_BeforeSunrise() + { + if (!base.gameObject.activeInHierarchy) + { + return; + } + researchTimeLeft--; + Debug.Log(researchTimeLeft); + UpdateProgressBar(); + if (researchTimeLeft <= 0) + { + productionBar.gameObject.SetActive(value: false); + switch (upgrade) + { + case Weapon.EDamageAffectedByBlacksmithUpgrade.MultiplyBy_MeleeDamage: + BlacksmithUpgrades.instance.meleeDamage *= multiplyer; + break; + case Weapon.EDamageAffectedByBlacksmithUpgrade.MultiplyBy_RangedDamage: + BlacksmithUpgrades.instance.rangedDamage *= multiplyer; + break; + case Weapon.EDamageAffectedByBlacksmithUpgrade.DivideBy_MeleeResistance: + BlacksmithUpgrades.instance.meleeResistance *= multiplyer; + break; + case Weapon.EDamageAffectedByBlacksmithUpgrade.DivideBy_RangedResistance: + BlacksmithUpgrades.instance.rangedResistance *= multiplyer; + break; + } + buildingInteractor.buildingIsCurrentlyBusyAndCantBeUpgraded = false; + buildingInteractor.UpdateInteractionState(); + DayNightCycle.Instance.UnregisterDaytimeSensitiveObject(this); + } + } + + public void OnDusk() + { + } + + private void OnEnable() + { + researchTimeLeft = researchTime; + if (PerkManager.IsEquipped(researchSpeedPerk)) + { + researchTimeLeft--; + } + UpdateProgressBar(); + buildingInteractor.buildingIsCurrentlyBusyAndCantBeUpgraded = true; + buildingInteractor.UpdateInteractionState(); + } + + private void UpdateProgressBar() + { + productionBar.gameObject.SetActive(value: true); + productionBar.UpdateVisual(1f - (float)researchTimeLeft / ((float)researchTime + 0.1f)); + } +} -- cgit v1.1-26-g67d0