예제 #1
0
    private void OnTriggerExit(Collider other)
    {
        if (!other.CompareTag("Player"))
        {
            return;
        }

        _isNear = false;
        RefrigeratorManager.Instance.currentNearObj = null;

        // 冷蔵庫が開いている時
        if (_selfCanvasGroup.alpha.Equals(1))
        {
            var selfIndex = _selfInvRenderer.LastSelectedIndex;
            // 閉じる
            _selfCanvasGroup.alpha        = 0;
            _selfCanvasGroup.interactable = false;
            _selfInvRenderer.ClearRender();

            // 交換モードだったときの表示をリセット
            _selfInvRenderer.GetSlotAt(selfIndex).GetComponent <Button>().enabled = true;
            _selfInvRenderer.UnhighlightSlotAt(selfIndex);

            // プレイヤーインベントリ有効化
            // _playerInvRenderer.EnableAllSlot();
            _playerCanvasGroup.interactable = true;
            _playerInvRenderer.SelectSlot();
        }

        // アイテム交換モードだったら解除する
        if (!InventoryManager.Instance.IsSwapMode)
        {
            return;
        }

        InventoryManager.Instance.IsSwapMode = 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;
    }