using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class CashierDesk : BaseInteractableObject { [SerializeField] private ContainerSO _containerSO; [SerializeField] private List _jobsInfoList; private JobInfoSO _playerJob; protected override void InteractAction() { if (_player.IsHoldContainerItem()) { BuyItems(); } else { _playerJob = _jobsInfoList.Where(x => x.JobPosition == _player.JobPosition).FirstOrDefault(); print($"playerJob is {_playerJob}"); if (_playerJob != null) { UIManager.Instance.ShowTimeSliderDialog($"Work", $"Work as {_playerJob.Description}", OnCancel, OnConfirm); } else { print("You don't work here"); } } } private void BuyItems() { var playerContainer = _player.GetContainerItem(); if (playerContainer.IsSalebleItems()) { var playerItemsList = playerContainer.GetItems(); _player.ClearContainerItem(); float finalPrice = 0; foreach (SellableItemSO item in playerItemsList) { finalPrice += item.Price; } var transform = Instantiate(_containerSO.prefab, _interactionPoint); var containerItem = transform.GetComponent(); if (containerItem == null) { Debug.LogError("Container Item is null"); return; } _player.Pay(finalPrice); foreach (var item in playerContainer.GetItems()) { var foodItemSO = ScriptableObject.CreateInstance(); foodItemSO.ItemName = item.ItemName; foodItemSO.Energy = 0; containerItem.AddItem(foodItemSO); } _player.SetContainerItem(containerItem); } } private void OnCancel() { OnFastForwardEnd(); } float _totalSalary; private void OnConfirm(TimeSpan time) { _totalSalary = (float)(time.TotalHours * _playerJob.Salary); _player.SetPlayerActing(PlayerStates.Working); TimeManager.Instance.FastForward(time); TimeManager.Instance.OnFastForwardEnd += OnFastForwardEnd; } private void OnFastForwardEnd() { _player.AddMoney(_totalSalary); _player.SetPlayerActing(PlayerStates.Awake); TimeManager.Instance.OnFastForwardEnd -= OnFastForwardEnd; } }