diff options
Diffstat (limited to 'Thronefall_v1.0/Decompile/Nighthorn.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/Nighthorn.cs | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/Nighthorn.cs b/Thronefall_v1.0/Decompile/Nighthorn.cs new file mode 100644 index 0000000..f89fcd5 --- /dev/null +++ b/Thronefall_v1.0/Decompile/Nighthorn.cs @@ -0,0 +1,168 @@ +using MoreMountains.Feedbacks; +using UnityEngine; + +public class Nighthorn : InteractorBase, DayNightCycle.IDaytimeSensitive +{ + public static Nighthorn instance; + + public GameObject nightCue; + + public GameObject harvestCue; + + public string autoCollectGoldTooltip; + + public string startNightTooltip; + + public string startPreFinalNightTooltip; + + public string startFinalNightTooltip; + + public MMF_Player onBlowFeedback; + + private TutorialManager tutorialManager; + + public int CoinCountToBeHarvested + { + get + { + int num = 0; + foreach (BuildingInteractor playerBuildingInteractor in TagManager.instance.playerBuildingInteractors) + { + if ((bool)playerBuildingInteractor.coinSpawner) + { + num += playerBuildingInteractor.coinSpawner.CoinsLeft; + } + if (playerBuildingInteractor.canBeHarvested) + { + num += playerBuildingInteractor.GoldIncome; + } + } + return num; + } + } + + public bool AllCoinsHarvested + { + get + { + bool result = true; + foreach (BuildingInteractor playerBuildingInteractor in TagManager.instance.playerBuildingInteractors) + { + if (playerBuildingInteractor.canBeHarvested) + { + result = false; + break; + } + } + foreach (Coin freeCoin in TagManager.instance.freeCoins) + { + if (freeCoin.IsFree) + { + return false; + } + } + return result; + } + } + + private void Awake() + { + instance = this; + } + + public override string ReturnTooltip() + { + if (!AllCoinsHarvested) + { + return autoCollectGoldTooltip; + } + if (EnemySpawner.instance.PreFinalWaveComingUp) + { + return startPreFinalNightTooltip; + } + if (EnemySpawner.instance.FinalWaveComingUp) + { + return startFinalNightTooltip; + } + return startNightTooltip; + } + + private void Start() + { + DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this); + tutorialManager = TutorialManager.instance; + } + + public override void InteractionBegin(PlayerInteraction player) + { + if ((bool)tutorialManager && !TutorialManager.AllowStartingTheNight) + { + return; + } + if (AllCoinsHarvested) + { + onBlowFeedback.PlayFeedbacks(); + DayNightCycle.Instance.SwitchToNight(); + return; + } + foreach (BuildingInteractor playerBuildingInteractor in TagManager.instance.playerBuildingInteractors) + { + playerBuildingInteractor.Harvest(player); + } + foreach (Coin freeCoin in TagManager.instance.freeCoins) + { + if (freeCoin.IsFree) + { + freeCoin.SetTarget(player); + } + } + ActivateAndRefreshCues(); + } + + public void OnDawn_AfterSunrise() + { + base.gameObject.SetActive(value: true); + } + + public void OnDusk() + { + base.gameObject.SetActive(value: false); + DeactivateCues(); + } + + public override void Focus(PlayerInteraction player) + { + ActivateAndRefreshCues(); + } + + public override void Unfocus(PlayerInteraction player) + { + DeactivateCues(); + EnemySpawner.instance.EnemySpawnersHornUnFocussed(); + } + + public void OnDawn_BeforeSunrise() + { + } + + public void ActivateAndRefreshCues() + { + if (AllCoinsHarvested) + { + nightCue.SetActive(value: true); + harvestCue.SetActive(value: false); + EnemySpawner.instance.EnemySpawnersHornFocussed(); + } + else + { + nightCue.SetActive(value: false); + harvestCue.SetActive(value: true); + } + } + + public void DeactivateCues() + { + nightCue.SetActive(value: false); + harvestCue.SetActive(value: false); + } +} |