/// <summary> /// ボタン入力を処理する /// </summary> /// <returns></returns> private IEnumerator InputHandler() { var selectedFoodName = _playerContainer.GetItem(_playerInvRenderer.LastSelectedIndex).ItemName; _windowCor = _choicePopup.ShowWindow($"{selectedFoodName}を捨てますか?", SE.ThrowOutFood); _isShowingWindow = true; // ボタン入力を待機 yield return(_windowCor); // はい選択だったら食材を捨てる if (_windowCor.Current != null && (bool)_windowCor.Current) { // プレイヤーインベントリから選択食材を削除 _playerContainer.RemoveItem(_playerInvRenderer.LastSelectedIndex); // 捨てた回数をカウント GameManager.Instance.StatisticsManager.throwInCount++; } _choicePopup.HideWindow(); _isShowingWindow = false; _windowCor = null; }
/// <summary> /// フライパン内の食材の調理が完了しているかを確認し、完了していたらプレイヤーインベントリに戻す /// </summary> private void CookingCompleteListener() { int puttedSlotIndex = InventoryManager.Instance.PuttedSlotIndex; InventorySlotBase puttedSlot = _playerContainer.Container[puttedSlotIndex]; if (_bakeSlider.value >= 100 && !_isCompleteCooking) { _isCompleteCooking = true; } if (GameManager.Instance.BakePoint == 100) { BakeController.doOnceBakeSound = true; Destroy(_foodParent.transform.GetChild(0).gameObject); _bakeSlider.value = 0; GameManager.Instance.BakePoint = 0; SoundManager.Instance.FadeOutBgm(0.1f); FireControl.clickBool = true; _playerContainer.RemoveItem(puttedSlotIndex); blackSmoke.Stop(); } if (GameManager.Instance.BakePoint >= 70 && doOnce) { doOnce = false; blackSmoke.Play(); } else if (GameManager.Instance.BakePoint < 70 && !doOnce) { doOnce = true; blackSmoke.Stop(); } // 調理が完了していないか、投入元のスロットにアイテムがある場合は動作しない if (!_isCompleteCooking || puttedSlot.Item != null) { return; } // 出ていた食材を削除 Destroy(_foodParent.transform.GetChild(0).gameObject); // 食材の状態を更新し、プレイヤーインベントリに戻す FoodSlotBeingBaked.RemoveState(FoodState.Raw); FoodSlotBeingBaked.AddState(FoodState.Cooked); _playerContainer.AddItem(FoodSlotBeingBaked.Item, FoodSlotBeingBaked.States); _isCompleteCooking = false; FireControl.clickBool = true; FoodSlotBeingBaked = null; }
/// <summary> /// ボタン入力を処理する /// </summary> /// <returns></returns> private IEnumerator InputHandler() { var selectedFood = _playerInvContainer.GetItem(_playerInvRenderer.LastSelectedIndex); var selectedFoodState = _playerInvContainer.GetStates(_playerInvRenderer.LastSelectedIndex); // 調味料か調理済みの食材のみ受け付ける if (selectedFood == null || // 食材を持っていない selectedFood.KindOfItem1 != Item.KindOfItem.Seasoning && // 食材が調味料ではなく、 (selectedFoodState.Contains(FoodState.None) || // 状態がNoneまたはRawである selectedFoodState.Contains(FoodState.Raw))) { yield break; } _windowCor = _choicePopup.ShowWindow($"{selectedFood.ItemName}を入れますか?", SE.PutFood); _isShowingWindow = true; // ボタン入力を待機 yield return(_windowCor); // ボタン入力結果がはいだったら大皿に食材を入れる if (_windowCor.Current != null && (bool)_windowCor.Current) { var targetFoodIndex = _playerInvRenderer.LastSelectedIndex; // 大皿に現在選択しているアイテムをぶち込む selfContainer.AddSlot(_playerInvContainer.GetItem(targetFoodIndex), selectedFoodState); // 表示中の寝言の達成をチェック NegotoManager.Instance.CheckNegotoAchieved(_playerInvContainer.GetItem(targetFoodIndex)); // プレイヤーのアイテムを削除 _playerInvContainer.RemoveItem(targetFoodIndex); } _choicePopup.HideWindow(); _isShowingWindow = false; }