using Jovian.Calendar; using Nox.Core; namespace Nox.Game.UI { public class AdventureView : IMenuView { private readonly GameDataState gameDataState; private readonly GuiReferences guiReferences; private readonly InputSystem_Actions inputActions; private readonly AdventureData adventureData; private readonly AdventureSettings adventureSettings; private readonly WorldClock worldClock; private int currentDay; private int previousTime; public AdventureView(GameDataState gameDataState, GuiReferences guiReferences, InputSystem_Actions inputActions, AdventureData adventureData, AdventureSettings adventureSettings, WorldClock worldClock) { this.gameDataState = gameDataState; this.guiReferences = guiReferences; this.inputActions = inputActions; this.adventureData = adventureData; this.adventureSettings = adventureSettings; this.worldClock = worldClock; } private void InvokePauseMenu() { gameDataState.ChangePlayMode(PlayMode.PauseMenu); } public void Initialize() { guiReferences.pauseMenuButton.onClick.AddListener(InvokePauseMenu); guiReferences.dayText.text = $"{worldClock.FullStringNamed()}"; previousTime = -1; guiReferences.suppliesBar.fillAmount = (float)adventureData.suppliesAvailable / adventureSettings.maxSupplies; guiReferences.suppliesText.text = $"{adventureData.suppliesAvailable}/{adventureSettings.maxSupplies}"; } public void Show() { throw new System.NotImplementedException(); } public void Hide() { throw new System.NotImplementedException(); } public void Tick() { var time = worldClock.Now.minute; if (time != previousTime) { previousTime = time; } guiReferences.dayText.text = $"{worldClock.FullStringNamed()}"; if(currentDay != adventureData.currentDay) { currentDay = adventureData.currentDay; guiReferences.suppliesBar.fillAmount = (float)adventureData.suppliesAvailable / adventureSettings.maxSupplies; guiReferences.suppliesText.text = $"{adventureData.suppliesAvailable}/{adventureSettings.maxSupplies}"; } } } }