/// <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;
    }
Beispiel #2
0
    /// <summary>
    /// インベントリ表示の初期化
    /// </summary>
    private void InitRender()
    {
        // 例外および冷蔵庫かの判定
        if (inventory == null)
        {
            if (!isForRefrigerator)
            {
                Debug.LogError("表示対象のインベントリコンテナが未指定です");

                return;
            }

            // 冷蔵庫用の処理
            for (var i = 0; i < RefrigeratorManager.Instance.SlotSize; i++)
            {
                var slotObj = Instantiate(slotPrefab, transform.position, Quaternion.identity, slotWrapper.transform);

                _itemsDisplayed.Add(slotObj, new InventorySlotBase());
            }

            return;
        }

        for (var i = 0; i < inventory.SlotSize; i++)
        {
            // インベントリコンテナのスロット数がスロットサイズに満たなければスロット確保
            if (inventory.Container.Count < inventory.SlotSize)
            {
                inventory.AddSlot(null);
            }

            var slotObj = Instantiate(slotPrefab, transform.position, Quaternion.identity, slotWrapper.transform);

            _itemsDisplayed.Add(slotObj, inventory.Container[i]);
        }

        SelectSlot(0);
    }