/// <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; }
/// <summary> /// プレイヤーインベントリスロットをクリックした際の動作 /// </summary> public void OnClickForPlayer() { // 交換モードなら if (!_invManager.IsSwapMode) { return; } _nearRefContainer = RefrigeratorManager.Instance.NearRefrigeratorContainer; var selfIndex = _playerInvRenderer.LastSelectedIndex; var refLastIndex = _refInvRenderer.LastSelectedIndex; // 交換先にアイテムを渡す _nearRefContainer.UpdateItem(_refInvRenderer.LastSelectedIndex, _playerContainer.GetItem(selfIndex), _playerContainer.GetStates(selfIndex)); // 選択スロットに交換先のアイテムを配置 _playerContainer.UpdateItem(selfIndex, _invManager.ItemToSwapFromRef, _invManager.ItemStatesToSwap); // フォーカスを冷蔵庫に戻す _playerCanvasGroup.interactable = false; _refCanvasGroup.interactable = true; _refInvRenderer.SelectSlot(); // 冷蔵庫スロットのハイライトを解除 _refInvRenderer.GetSlotAt(refLastIndex).GetComponent <Button>().enabled = true; _refInvRenderer.UnhighlightSlotAt(_refInvRenderer.LastSelectedIndex); // キャッシュアイテムクリア _invManager.ItemToSwapFromRef = null; _invManager.ItemStatesToSwap = null; }