/// <summary> /// インタラクト時の処理 /// </summary> private void InteractHandler() { // インタラクト範囲内におり、ポーズ中でなければインタラクトを許可 if (!_isNear || PushPause.Instance.IsNowPausing) { return; } // 開いたとき if (Input.GetButtonDown("Interact") && // インタラクトボタン押下 _selfCanvasGroup.alpha.Equals(0)) // インベントリが開かれていない { // 冷蔵庫インベントリの描画をリセット _selfInvRenderer.ClearRender(); _selfCanvasGroup.alpha = 1; _selfCanvasGroup.interactable = true; _selfCanvasGroup.blocksRaycasts = true; // SE再生 SoundManager.Instance.PlaySe(SE.RifregeratorOpen); // 冷蔵庫インベントリをフォーカス _selfInvRenderer.SelectSlot(); // プレイヤーインベントリを無効化 _playerCanvasGroup.interactable = false; } // 閉じたとき else if (Input.GetButtonDown("Cancel") && // キャンセルボタン押下 _selfCanvasGroup.alpha.Equals(1)) // インベントリが開かれている { // 冷蔵庫インベントリの描画をリセット _selfInvRenderer.ClearRender(); // 冷蔵庫インベントリを無効化 _selfCanvasGroup.alpha = 0; _selfCanvasGroup.interactable = false; _selfCanvasGroup.blocksRaycasts = false; // 冷蔵庫インベントリのハイライトがあったら解除 _selfInvRenderer.UnhighlightSlotAt(_selfInvRenderer.LastSelectedIndex); // プレイヤーインベントリを有効化し、フォーカス _playerCanvasGroup.interactable = true; _playerInvRenderer.SelectSlot(); } }
public void HideWindow() { // ウィンドウを非表示 canvasGroup.alpha = 0; canvasGroup.interactable = false; canvasGroup.blocksRaycasts = false; // プレイヤーインベントリ有効化 _playerInvRenderer.EnableAllSlot(); _playerInvRenderer.SelectSlot(); // ボタンを有効化 yesButton.enabled = false; noButton.enabled = false; }
/// <summary> /// 冷蔵庫インベントリスロットをクリックした際の動作 /// </summary> public void OnClickForRefrigerator() { _nearRefContainer = RefrigeratorManager.Instance.NearRefrigeratorContainer; var selfIndex = _refInvRenderer.LastSelectedIndex; var selfButton = GetComponent <Button>(); var nearRefSlot = _nearRefContainer.Container[selfIndex]; var selfItem = nearRefSlot.Item; var selfStates = nearRefSlot.States; // スロットにアイテムがなければ弾く if (selfItem == null) { return; } // プレイヤーの空きスロットにアイテム配置 if (!_playerContainer.IsFull) { _playerContainer.AddItem(selfItem, selfStates); return; } // 冷蔵庫スロットは空にする // 無限獲得可能への仕様変更につきCO // _nearRefContainer.RemoveItem(selfIndex); // プレイヤーとアイテム交換 // 交換アイテムをキャッシュ _invManager.ItemToSwapFromRef = selfItem; _invManager.ItemStatesToSwap = selfStates; // 交換モード発動 _invManager.IsSwapMode = true; // 冷蔵庫スロット無効化(交換対象はハイライト) _refCanvasGroup.interactable = false; selfButton.interactable = true; selfButton.enabled = false; _refInvRenderer.HighlightSlotAt(selfIndex); // プレイヤースロット有効化 _playerCanvasGroup.interactable = true; _playerInvRenderer.SelectSlot(); // ここから先はOnClickForPlayer() }
/// <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; }