1617 lines
84 KiB
C#
1617 lines
84 KiB
C#
|
//********************************************************//
|
|||
|
// //
|
|||
|
// Copyright © All rights reserved. MyNameIsVoo. 2020. //
|
|||
|
// //
|
|||
|
// COPYING FORBIDEN //
|
|||
|
// //
|
|||
|
//********************************************************//
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.EventSystems;
|
|||
|
using UnityEngine.UI;
|
|||
|
|
|||
|
using ItemsClassList;
|
|||
|
using ICWM.Loot;
|
|||
|
using ICWM.Enemy;
|
|||
|
using ICWM.IconSystem;
|
|||
|
using ICWM.HelperSystem;
|
|||
|
using ICWM.StoreSystem;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Class is needed to manipulate the icons in the inventory
|
|||
|
/// </summary>
|
|||
|
|
|||
|
namespace ICWM
|
|||
|
{
|
|||
|
namespace DragAndDrop
|
|||
|
{
|
|||
|
public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
|||
|
{
|
|||
|
#region Attributes
|
|||
|
|
|||
|
public enum BackpackItemDragged
|
|||
|
{
|
|||
|
NONE,
|
|||
|
STASH,
|
|||
|
STORE,
|
|||
|
BACKPACK,
|
|||
|
TACTICALRIG_OR_POCKETS,
|
|||
|
BACKPACK_WINDOW,
|
|||
|
TACTICALRIG_OR_POCKETS_WINDOW
|
|||
|
}
|
|||
|
|
|||
|
public GameObject icon; // Link to the icon inside the root (we will copy and drag)
|
|||
|
|
|||
|
public bool isActiveDrag;
|
|||
|
public bool isPlayerSlot;
|
|||
|
public bool isStashSlot;
|
|||
|
public bool isStoreSlot;
|
|||
|
public bool isTacticRigSlot; // Сменить название
|
|||
|
public bool isBackpackSlot;
|
|||
|
public bool deleteVSP = false; // Do we delete the icon?
|
|||
|
public bool isAttached = false; // If true that mean that we attachet an attach on the weapon and we need to open the slots under the item(attachment)
|
|||
|
|
|||
|
public static BackpackItemDragged itemDragged = default;
|
|||
|
|
|||
|
public static GameObject itemIcon; // Link to the root of the icon (PlayerIcon)
|
|||
|
public static GameObject stash; // To work in the inventory (a dummy, since its coordinate system must be linked to the parent's coordinate system of this object)
|
|||
|
public static GameObject mBackpack; // To work with the backpack (a dummy, since its coordinate system must be tied to the parent's coordinate system of this object)
|
|||
|
public static GameObject mBackpackEnemy;
|
|||
|
|
|||
|
public static bool isPlayer = false;
|
|||
|
public static bool isPlayerBackpack = false;
|
|||
|
public static bool isEnemy = false;
|
|||
|
public static bool isEnemyBackpack = false;
|
|||
|
|
|||
|
public static bool isExchangeInventory; // If we change places in the inventory
|
|||
|
public static bool isExchangePlayerSlot; // If we change places from inventory to a slot
|
|||
|
public static bool isDeleteIcon; // Removing the icon from the inventory
|
|||
|
public static bool canNotBeMoved = false; // Indicates that you can not drag
|
|||
|
|
|||
|
private Quaternion startRotation; // To remember the original angle of the icon (for tracking, if we turned and returned it to the basic state, we do not need to do anything)
|
|||
|
private Transform startParent; // Original root (to check where we release our icon)
|
|||
|
private GameObject vspInstance;
|
|||
|
private GameObject m_vspBackpackWindow; // Временно хранит ссылку на окно рюкзака, от куда была взята иконка
|
|||
|
private Vector2 startIndexPos60x60; // Remembers the original size of the icon
|
|||
|
private Vector2 screenCoef = Vector2.zero;
|
|||
|
|
|||
|
private bool isBackpackItem;
|
|||
|
private bool isTagSize2x1; // To keep track of, but are we trying to throw this tag into the backpack where you can not just throw
|
|||
|
private bool isActive;
|
|||
|
private bool isRotatedIcon = false;
|
|||
|
private bool isChangeEnemyItemRoot = false;
|
|||
|
|
|||
|
public ItemList CL = new ItemList();
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
private void Update()
|
|||
|
{
|
|||
|
if (isActiveDrag) // If we drag, then update the position of the dummy
|
|||
|
{
|
|||
|
UpdateDummiesPosition();
|
|||
|
isActiveDrag = false;
|
|||
|
}
|
|||
|
|
|||
|
// Rotate icons
|
|||
|
if (isActive && !CL.isLockRotate && Input.GetKeyDown(KeyCode.R) && !StoreBase.instance.isActive)
|
|||
|
UpdateDummiesRotation();
|
|||
|
}
|
|||
|
|
|||
|
#region PUBLIC
|
|||
|
|
|||
|
#region Drag & Drop
|
|||
|
|
|||
|
public void OnBeginDrag(PointerEventData eventData) // When pressed and held
|
|||
|
{
|
|||
|
if (Input.GetMouseButton(1) || Input.GetMouseButton(2))
|
|||
|
return;
|
|||
|
|
|||
|
CL = gameObject.GetComponentInChildren<ButtonOptions>().CL;
|
|||
|
screenCoef = Helper.CalculateScreenCoefficient();
|
|||
|
|
|||
|
//
|
|||
|
// Audio
|
|||
|
//
|
|||
|
|
|||
|
if (InventoryBase.instance.a_AudioSelected)
|
|||
|
{
|
|||
|
InventoryBase.instance.audioSource.clip = InventoryBase.instance.a_AudioSelected;
|
|||
|
InventoryBase.instance.audioSource.PlayOneShot(InventoryBase.instance.audioSource.clip);
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// Create the icon
|
|||
|
//
|
|||
|
|
|||
|
vspInstance = (GameObject)Instantiate(icon, InventoryBase.instance.RootIconSpawnPlayer.transform);
|
|||
|
vspInstance.name = "vspInstance";
|
|||
|
vspInstance.transform.localScale = Vector3.one;
|
|||
|
vspInstance.transform.localRotation = icon.transform.localRotation;
|
|||
|
vspInstance.transform.localPosition = Vector3.zero;
|
|||
|
vspInstance.GetComponent<Image>().raycastTarget = false;
|
|||
|
|
|||
|
if (GetComponent<CanvasGroup>()) // To avoid self-targeting
|
|||
|
GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
else
|
|||
|
GetComponentInParent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
|
|||
|
CreateDummies();
|
|||
|
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
|
|||
|
itemIcon = gameObject;
|
|||
|
if (itemIcon.GetComponentInParent<PlayerInventorySlot>() && itemIcon.GetComponentInParent<PlayerInventorySlot>().IsPlayerSlot)
|
|||
|
{
|
|||
|
isPlayerSlot = true;
|
|||
|
isPlayer = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
isPlayerSlot = false;
|
|||
|
}
|
|||
|
|
|||
|
if (itemIcon.GetComponentInParent<StoreInventorySlot>() && itemIcon.GetComponentInParent<StoreInventorySlot>().IsStoreInventory)
|
|||
|
isStoreSlot = true;
|
|||
|
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
|
|||
|
if (MouseInterStashInventory.instance && MouseInterStashInventory.instance.isActive) // If we drag from the inventory, we release the place under it
|
|||
|
{
|
|||
|
itemDragged = BackpackItemDragged.STASH;
|
|||
|
StashSystem.instance.OpenIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
StashSystem.instance.GetUpdateAssistent().UpdateIconTextBackpack();
|
|||
|
|
|||
|
if (CL.tagSize == ItemList.SizeIconInventory.Size2x1)
|
|||
|
isTagSize2x1 = true;
|
|||
|
}
|
|||
|
else if (MouseEnterStoreInventory.instance && MouseEnterStoreInventory.instance.isActive)
|
|||
|
{
|
|||
|
itemDragged = BackpackItemDragged.STORE;
|
|||
|
}
|
|||
|
else if (MouseEnterBackpack.instance && MouseEnterBackpack.instance.IsActive) // We take from the backpack
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>()) // If there is a parent, then block it (if it's a weapon slot or a backpack slot)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
}
|
|||
|
|
|||
|
isPlayerBackpack = true;
|
|||
|
isBackpackItem = true;
|
|||
|
|
|||
|
if (CL.isPutOn && CL.IsBackpackItemSlot())
|
|||
|
BackpackSystem.instance.SaveItemSlots(CL, null, false);
|
|||
|
|
|||
|
if (isBackpackSlot)
|
|||
|
{
|
|||
|
BackpackSystem.instance.OpenIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYBACKPACK) // To prevent that the backpack itself put in itself - this does not happen
|
|||
|
BackpackSystem.instance.rootBackpackCells.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
BackpackSystem.instance.OpenIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
|
|||
|
itemDragged = isBackpackSlot ? BackpackItemDragged.BACKPACK : BackpackItemDragged.TACTICALRIG_OR_POCKETS;
|
|||
|
}
|
|||
|
//
|
|||
|
// Backpack Window
|
|||
|
//
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive) // We take from the window (backpack)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>()) // If there is a parent, then block it (if it's a weapon slot or a backpack slot)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
}
|
|||
|
|
|||
|
itemDragged = BackpackItemDragged.BACKPACK_WINDOW;
|
|||
|
BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().OpenIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
m_vspBackpackWindow = BackpackSystem.instance.m_vspBackpackWindow;
|
|||
|
}
|
|||
|
//
|
|||
|
// Tactical Rig \ Pockets window
|
|||
|
//
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>().isActive) // We take from the window (tactical rig, pockets)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>()) // If there is a parent, then block it (if it's a weapon slot or a backpack slot)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
}
|
|||
|
|
|||
|
itemDragged = BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW;
|
|||
|
BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().OpenIndicesTacticalRigPockets(CL);
|
|||
|
m_vspBackpackWindow = BackpackSystem.instance.m_vspBackpackWindow;
|
|||
|
}
|
|||
|
//
|
|||
|
// Enemy backpack slots
|
|||
|
//
|
|||
|
else if (MouseEnterEnemyBackpack.instance && MouseEnterEnemyBackpack.instance.isActive) // We take from the backpack
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>()) // If there is a parent, then block it (if it's a weapon slot or a backpack slot)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
}
|
|||
|
|
|||
|
isEnemyBackpack = true;
|
|||
|
isBackpackItem = true;
|
|||
|
|
|||
|
if (CL.isPutOn && CL.IsBackpackItemSlot())
|
|||
|
BackpackEnemyBase.instance.SaveSlotItems(CL, null, false);
|
|||
|
|
|||
|
if (isBackpackSlot)
|
|||
|
{
|
|||
|
BackpackEnemyBase.instance.OpenIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYBACKPACK) // To prevent that the backpack itself put in itself - this does not happen
|
|||
|
BackpackEnemyBase.instance.rootBackpack.GetComponent<CanvasGroup>().blocksRaycasts = false;
|
|||
|
BackpackEnemyBase.instance.OpenIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
|
|||
|
itemDragged = isBackpackSlot ? BackpackItemDragged.BACKPACK : BackpackItemDragged.TACTICALRIG_OR_POCKETS;
|
|||
|
}
|
|||
|
else if (MouseEnterEnemyPlayerSlots.instance && MouseEnterEnemyPlayerSlots.instance.isActive)
|
|||
|
{
|
|||
|
isEnemy = true;
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
|
|||
|
// Remember...
|
|||
|
startRotation = icon.transform.localRotation;
|
|||
|
startIndexPos60x60 = CL.indexPos60x60;
|
|||
|
startParent = transform.parent;
|
|||
|
|
|||
|
GetComponent<PlayerIconPlaneInventory>().startPos = transform.localPosition; // At each start, remember the starting position (for certainty)
|
|||
|
|
|||
|
InventoryBase.instance.CL = CL; // Remember, then send to PointEnterIcon1x1
|
|||
|
InventoryBase.instance.isDragHandlerIcon = true; // We are dragging something
|
|||
|
|
|||
|
Helper.SetImageAlpha(icon.GetComponent<Image>(), 0.5f); // Darken the original icon (when we drag)
|
|||
|
|
|||
|
isActive = true;
|
|||
|
}
|
|||
|
|
|||
|
public void OnDrag(PointerEventData eventData) // When we drag
|
|||
|
{
|
|||
|
if (!isActive)
|
|||
|
return;
|
|||
|
|
|||
|
isActiveDrag = true;
|
|||
|
|
|||
|
Vector2 newPos;
|
|||
|
newPos.x = Input.mousePosition.x + Input.mousePosition.x * screenCoef.x; // Add percentage
|
|||
|
newPos.y = Input.mousePosition.y + Input.mousePosition.y * screenCoef.y;
|
|||
|
|
|||
|
// Update the position of the icon when we move the mouse
|
|||
|
vspInstance.transform.localPosition = newPos;
|
|||
|
}
|
|||
|
|
|||
|
public void OnEndDrag(PointerEventData eventData) // When we drop
|
|||
|
{
|
|||
|
if (!isActive)
|
|||
|
return;
|
|||
|
|
|||
|
if (!isDeleteIcon)
|
|||
|
{
|
|||
|
GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
if (transform.parent != startParent)
|
|||
|
DropItemOnLocations();
|
|||
|
else
|
|||
|
DropItemToSartLocation();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Destroy(gameObject);
|
|||
|
}
|
|||
|
|
|||
|
CloseDragHandler();
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Helpers
|
|||
|
|
|||
|
public void SetReserveParameters(ItemList cl, bool mode)
|
|||
|
{
|
|||
|
if (mode)
|
|||
|
{
|
|||
|
cl.isPlayerSlot = cl.isStashSlot = cl.isTacticRigSlot = cl.isBackpackSlot = false; // Reset
|
|||
|
|
|||
|
if (isPlayerSlot)
|
|||
|
cl.isPlayerSlot = isPlayerSlot;
|
|||
|
else if (isStashSlot)
|
|||
|
cl.isStashSlot = isStashSlot;
|
|||
|
else if (isTacticRigSlot)
|
|||
|
cl.isTacticRigSlot = isTacticRigSlot;
|
|||
|
else if (isBackpackSlot)
|
|||
|
cl.isBackpackSlot = isBackpackSlot;
|
|||
|
isPlayerSlot = isStashSlot = isTacticRigSlot = isBackpackSlot = false; // Reset
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
isPlayerSlot = isStashSlot = isTacticRigSlot = isBackpackSlot = false;
|
|||
|
|
|||
|
if (cl.isPlayerSlot)
|
|||
|
isPlayerSlot = cl.isPlayerSlot;
|
|||
|
else if (cl.isStashSlot)
|
|||
|
isStashSlot = cl.isStashSlot;
|
|||
|
else if (cl.isTacticRigSlot)
|
|||
|
isTacticRigSlot = cl.isTacticRigSlot;
|
|||
|
else if (cl.isBackpackSlot)
|
|||
|
isBackpackSlot = cl.isBackpackSlot;
|
|||
|
cl.isPlayerSlot = cl.isStashSlot = cl.isTacticRigSlot = cl.isBackpackSlot = false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region PRIVATE
|
|||
|
|
|||
|
#region Update
|
|||
|
|
|||
|
private void UpdateDummiesPosition()
|
|||
|
{
|
|||
|
if (stash)
|
|||
|
{
|
|||
|
stash.transform.position = vspInstance.transform.position;
|
|||
|
stash.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
}
|
|||
|
|
|||
|
if (mBackpack)
|
|||
|
{
|
|||
|
mBackpack.transform.position = vspInstance.transform.position;
|
|||
|
mBackpack.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
}
|
|||
|
|
|||
|
if (mBackpackEnemy)
|
|||
|
{
|
|||
|
mBackpackEnemy.transform.position = vspInstance.transform.position;
|
|||
|
mBackpackEnemy.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
}
|
|||
|
|
|||
|
BackpackSystem.instance.UpdateBackpackDummyPosition(vspInstance);
|
|||
|
}
|
|||
|
|
|||
|
private void UpdateDummiesRotation()
|
|||
|
{
|
|||
|
// Here the icon turns
|
|||
|
// Can only call when we drag and drop the icons
|
|||
|
// There is no sense in turning icons 1x1 and mn
|
|||
|
|
|||
|
if (itemDragged == BackpackItemDragged.STASH && LootBase.instance.isLootWindowMode)
|
|||
|
return;
|
|||
|
|
|||
|
isRotatedIcon = true;
|
|||
|
|
|||
|
if (vspInstance.transform.localRotation == Quaternion.Euler(Vector3.zero))
|
|||
|
{
|
|||
|
vspInstance.transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, -90f)); // Turn clockwise
|
|||
|
int x = (int)CL.indexPos60x60.x;
|
|||
|
CL.indexPos60x60.x = CL.indexPos60x60.y;
|
|||
|
CL.indexPos60x60.y = x;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
vspInstance.transform.localRotation = Quaternion.Euler(Vector3.zero); // Return to the original state
|
|||
|
int y = (int)CL.indexPos60x60.y;
|
|||
|
CL.indexPos60x60.y = CL.indexPos60x60.x;
|
|||
|
CL.indexPos60x60.x = y;
|
|||
|
}
|
|||
|
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag(); // Changes the tag size
|
|||
|
|
|||
|
// In advance, if in one session (i.e., for one drag and drop) after a series of angle changes, we still returned to the basic condition, then do nothing
|
|||
|
if (vspInstance.transform.localRotation == startRotation)
|
|||
|
isRotatedIcon = false;
|
|||
|
|
|||
|
if (stash)
|
|||
|
stash.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
if (mBackpack)
|
|||
|
mBackpack.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
if (mBackpackEnemy)
|
|||
|
mBackpackEnemy.transform.localRotation = vspInstance.transform.localRotation;
|
|||
|
|
|||
|
BackpackSystem.instance.UpdateBackpackDummyPosition(vspInstance);
|
|||
|
|
|||
|
// We update the parameter, because it is passed to the PointEnterIcon1x1 method and draws the field
|
|||
|
InventoryBase.instance.CL = CL;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Another Location
|
|||
|
|
|||
|
private void DropItemOnLocations()
|
|||
|
{
|
|||
|
if (transform.GetComponentInChildren<ButtonOptions>().CL.tagItem == CL.tagItem) // If the tags are equal, change places
|
|||
|
{
|
|||
|
if (!isExchangePlayerSlot) // If we do not change the places inventory to slot
|
|||
|
{
|
|||
|
if (!BackpackSystem.instance.RE4O_IsActive() && MouseEnterPlayerInventory.instance && MouseEnterPlayerInventory.instance.isActive) // If we are in slots for the player (ie from the inventory we drag into slots)
|
|||
|
DropInPlayersSlots();
|
|||
|
else if (!BackpackSystem.instance.RE4O_IsActive() && MouseEnterEnemyPlayerSlots.instance && MouseEnterEnemyPlayerSlots.instance.isActive) // If we are in slots for the player (ie from the inventory we drag into slots)
|
|||
|
DropInEnemySlots();
|
|||
|
if (MouseEnterBackpack.instance && MouseEnterBackpack.instance.IsActive) // In the backpack
|
|||
|
DropInPlayerBackpack();
|
|||
|
else if (MouseEnterEnemyBackpack.instance && MouseEnterEnemyBackpack.instance.isActive) // In the backpack
|
|||
|
DropInEnemyBackpack();
|
|||
|
}
|
|||
|
else if (!isPlayerSlot && isStashSlot) // If we take from the inventory and drop it the slot for the player
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
|
|||
|
if (vspInstance)
|
|||
|
Destroy(vspInstance);
|
|||
|
if (stash)
|
|||
|
Destroy(stash);
|
|||
|
}
|
|||
|
|
|||
|
private void DropInPlayersSlots()
|
|||
|
{
|
|||
|
bool canChangeSize = false;
|
|||
|
bool isCreatedIcon = false;
|
|||
|
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic size
|
|||
|
{
|
|||
|
if (!canNotBeMoved)
|
|||
|
canChangeSize = PlayerSystem.instance.CreateNewIcon(itemIcon, CL, transform.parent, false, isRotatedIcon); // transform.parent - you can not transfer
|
|||
|
deleteVSP = true;
|
|||
|
isCreatedIcon = true;
|
|||
|
}
|
|||
|
|
|||
|
if (CL.itWasRotated && !canChangeSize && !isCreatedIcon) // Если мы перетаскиваем уже поверную иконку
|
|||
|
{
|
|||
|
canChangeSize = PlayerSystem.instance.CreateNewIcon(itemIcon, CL, transform.parent, true);
|
|||
|
deleteVSP = true;
|
|||
|
}
|
|||
|
|
|||
|
if (!canChangeSize)
|
|||
|
ExchangeIconsSize();
|
|||
|
|
|||
|
//
|
|||
|
// In Player Slots
|
|||
|
//
|
|||
|
|
|||
|
if (isBackpackSlot) // If from a backpack
|
|||
|
{
|
|||
|
if (transform.parent == startParent) // If the parent does not changed - close
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.STASH) // From inventory
|
|||
|
{
|
|||
|
if (!deleteVSP)
|
|||
|
StashSystem.instance.OpenIndicesBackpackByIconPosition(GetComponent<PlayerIconPlaneInventory>().startPos, CL.indexPos60x60);
|
|||
|
|
|||
|
if (LootBase.instance.isLootWindowMode || LootBase.instance.isLootWindow)
|
|||
|
{
|
|||
|
if (CL.IsRenderItem())
|
|||
|
CL.SetItemModdingParameters(false, InventoryBase.instance.RootSpawnWeaponModding.transform);
|
|||
|
else
|
|||
|
CL.SetItemModdingParameters(false, InventoryBase.instance.RootSpawnItemsAttach.transform);
|
|||
|
|
|||
|
if (CL.destroyItemDrop)
|
|||
|
Destroy(CL.destroyItemDrop);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void DropInEnemySlots()
|
|||
|
{
|
|||
|
if (!isPlayerSlot) // From backpack
|
|||
|
{
|
|||
|
bool canChangeSize = false;
|
|||
|
bool isCreatedIcon = false;
|
|||
|
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic size
|
|||
|
{
|
|||
|
if (!canNotBeMoved)
|
|||
|
canChangeSize = PlayerEnemySystem.instance.CreateNewIcon(itemIcon, CL, transform.parent, false, isRotatedIcon); // transform.parent - you can not transfer
|
|||
|
deleteVSP = true;
|
|||
|
isCreatedIcon = true;
|
|||
|
}
|
|||
|
|
|||
|
if (CL.itWasRotated && !canChangeSize && !isCreatedIcon)
|
|||
|
{
|
|||
|
canChangeSize = PlayerEnemySystem.instance.CreateNewIcon(itemIcon, CL, transform.parent, true);
|
|||
|
deleteVSP = true;
|
|||
|
}
|
|||
|
|
|||
|
if (!canChangeSize)
|
|||
|
ExchangeIconsSize();
|
|||
|
|
|||
|
//
|
|||
|
// In Player Slots
|
|||
|
//
|
|||
|
|
|||
|
if (isBackpackSlot) // If from a backpack
|
|||
|
{
|
|||
|
if (transform.parent == startParent) // If the parent does not change - close
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.STASH && !deleteVSP) // From inventory
|
|||
|
{
|
|||
|
StashSystem.instance.OpenIndicesBackpackByIconPosition(GetComponent<PlayerIconPlaneInventory>().startPos, CL.indexPos60x60);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
SetEnemyItemPutOn();
|
|||
|
}
|
|||
|
|
|||
|
private void DropInPlayerBackpack()
|
|||
|
{
|
|||
|
if (!isExchangeInventory) // If we do not interchange the two items with each other
|
|||
|
{
|
|||
|
if (isEnemyBackpack && CL.IsBackpackItemSlot() && CL.isPutOn)
|
|||
|
BackpackEnemyBase.instance.OpenCells(CL);
|
|||
|
|
|||
|
if (!canNotBeMoved)
|
|||
|
BackpackSystem.instance.UpdateIconPositionAfterDropOnTacticalRigOrPocketsSlot(itemIcon, CL, isRotatedIcon, startParent, isPlayerSlot, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void DropInEnemyBackpack()
|
|||
|
{
|
|||
|
if (!isExchangeInventory) // If we do not interchange the two items with each other
|
|||
|
{
|
|||
|
if (isPlayerBackpack && CL.IsBackpackItemSlot() && CL.isPutOn)
|
|||
|
BackpackSystem.instance.OpenCells(CL);
|
|||
|
|
|||
|
if (!canNotBeMoved)
|
|||
|
{
|
|||
|
BackpackEnemyBase.instance.UpdateIconPositionAfterDropOnTacticalRigOrPocketsSlot(itemIcon, CL, isRotatedIcon, startParent, isPlayerSlot, true, itemDragged);
|
|||
|
|
|||
|
CheckRootItem();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void SetEnemyItemPutOn()
|
|||
|
{
|
|||
|
CL.isPutOn = true;
|
|||
|
CL.isEnemyItem = true;
|
|||
|
|
|||
|
// CL.DestroyItemDrop - т.к. в скрипте Slot мы создали в корне Енеми префам ItemDrop
|
|||
|
InventoryBase.instance.inventoryEnemy.GetComponent<EnemyInventory>().PutOnSlots(CL, CL.destroyItemDrop);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Start Location
|
|||
|
|
|||
|
private void DropItemToSartLocation()
|
|||
|
{
|
|||
|
if (!isExchangeInventory) // If we do not change the places 2 items in the inventory
|
|||
|
{
|
|||
|
// If we are in the inventory
|
|||
|
if (MouseInterStashInventory.instance && MouseInterStashInventory.instance.isActive && itemDragged != DragHandler.BackpackItemDragged.STORE)
|
|||
|
{
|
|||
|
DropInStashSlotsByStartLoc();
|
|||
|
}
|
|||
|
else if ((MouseEnterBackpack.instance && MouseEnterBackpack.instance.IsActive) || (MouseEnterEnemyBackpack.instance && MouseEnterEnemyBackpack.instance.isActive)) // In the backpack
|
|||
|
{
|
|||
|
DropInBackpackTacticalRigPocketsByStartLoc();
|
|||
|
}
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow && ((BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive) || (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>().isActive))) // In the backpack/tactical rig /pockets window
|
|||
|
{
|
|||
|
DropInBackpackTacticalRigPocketsWindowByStartLoc();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
DropInPlayersSlotsByStartLoc();
|
|||
|
}
|
|||
|
}
|
|||
|
else // If we swap 2 items in the inventory
|
|||
|
{
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic state
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void DropInBackpackTacticalRigPocketsByStartLoc()
|
|||
|
{
|
|||
|
//
|
|||
|
// Player BACKPACK
|
|||
|
//
|
|||
|
if (MouseEnterBackpackSlot.instance && MouseEnterBackpackSlot.instance.IsActive && BackpackSystem.instance.GetBackpackInfo().isActiveBackpack) // If we drop in a backpack
|
|||
|
{
|
|||
|
if (!canNotBeMoved)
|
|||
|
{
|
|||
|
if (MouseEnterEnemyBackpackSlots.instance && MouseEnterEnemyBackpackSlots.instance.isActive && BackpackEnemyBase.instance.GetBackpackInfo().isActiveBackpack) // Куда переносим
|
|||
|
{
|
|||
|
deleteVSP = BackpackSystem.instance.UpdateIconPositionAfterDropInBackpack(mBackpackEnemy.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
if (BackpackSystem.instance.m_vspBackpackWindow && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive)
|
|||
|
{
|
|||
|
deleteVSP = BackpackSystem.instance.UpdateIconPositionAfterDropInBackpack(BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().mBackpackWindow.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
else //
|
|||
|
{
|
|||
|
CloseAllOpendBackpackWindows();
|
|||
|
deleteVSP = BackpackSystem.instance.UpdateIconPositionAfterDropInBackpack(mBackpack.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GetComponent<PlayerIconPlaneInventory>().startPos = itemIcon.transform.localPosition; // Change the original position of the icon in the inventory
|
|||
|
|
|||
|
// If we do not reassign the parent (ie, drop into the empty place or there is no place or simply drop in the inventory)
|
|||
|
if (transform.parent == startParent)
|
|||
|
CloseBackpackSlots();
|
|||
|
else
|
|||
|
OpenBackpackSlots();
|
|||
|
}
|
|||
|
//
|
|||
|
// Enemy backpack
|
|||
|
//
|
|||
|
else if (MouseEnterEnemyBackpackSlots.instance && MouseEnterEnemyBackpackSlots.instance.isActive && BackpackEnemyBase.instance.GetBackpackInfo().isActiveBackpack) // If we drop in a backpack (that is, in this little ***)
|
|||
|
{
|
|||
|
if (!canNotBeMoved)
|
|||
|
{
|
|||
|
if (MouseEnterBackpackSlot.instance && MouseEnterBackpackSlot.instance.IsActive && BackpackSystem.instance.GetBackpackInfo().isActiveBackpack)
|
|||
|
{
|
|||
|
deleteVSP = BackpackEnemyBase.instance.UpdateIconPositionAfterDropInBackpack(mBackpack.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, itemDragged);
|
|||
|
}
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow && ((BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive) || (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>().isActive)) && !BackpackSystem.instance.RE4O_IsActive() && !BackpackSystem.instance.RE4_IsActive())
|
|||
|
{
|
|||
|
deleteVSP = BackpackEnemyBase.instance.UpdateIconPositionAfterDropInBackpack(BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().mBackpackWindow.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, itemDragged);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
CloseAllOpendBackpackWindows();
|
|||
|
deleteVSP = BackpackEnemyBase.instance.UpdateIconPositionAfterDropInBackpack(mBackpackEnemy.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, itemDragged);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GetComponent<PlayerIconPlaneInventory>().startPos = itemIcon.transform.localPosition; // Change the original position of the icon in the inventory
|
|||
|
|
|||
|
// If we do not reassign the parent (ie, drop into the empty place or there is no place or simply drop in the inventory)
|
|||
|
if (transform.parent == startParent)
|
|||
|
CloseBackpackSlots();
|
|||
|
else
|
|||
|
OpenBackpackSlots();
|
|||
|
}
|
|||
|
//
|
|||
|
// TACTICAL RIG, POCKETS
|
|||
|
//
|
|||
|
else
|
|||
|
{
|
|||
|
bool flag = false;
|
|||
|
if (!canNotBeMoved)
|
|||
|
{
|
|||
|
if (MouseEnterBackpack.instance && MouseEnterBackpack.instance.IsActive) // в слоты игрока
|
|||
|
{
|
|||
|
flag = BackpackSystem.instance.UpdateIconPositionAfterDropOnTacticalRigOrPocketsSlot(itemIcon, CL, isRotatedIcon, startParent, isPlayerSlot, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
else if (MouseEnterEnemyBackpack.instance && MouseEnterEnemyBackpack.instance.isActive) // Если переносим в слоты другого инвентаря
|
|||
|
{
|
|||
|
flag = BackpackEnemyBase.instance.UpdateIconPositionAfterDropOnTacticalRigOrPocketsSlot(itemIcon, CL, isRotatedIcon, startParent, isPlayerSlot, isPlayerBackpack, itemDragged);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Many stupid situations happen during the rearrangement of icons, for example:
|
|||
|
// from the inventory raised - turned a couple of hundred times - it did not rise in its original position (ie if we once clicked on the turn)
|
|||
|
// and after they drop it in a backpack where such icons are forbidden, here, now it is necessary to return everything in a condition
|
|||
|
|
|||
|
if (transform.parent == startParent && !deleteVSP) // If we do not reassign the parent (ie, drop into the empty place or not)
|
|||
|
{
|
|||
|
if (itemDragged != BackpackItemDragged.STASH) // If in a backpack (or tactical rig)
|
|||
|
{
|
|||
|
if (isBackpackSlot)
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == DragHandler.BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == DragHandler.BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else if (itemDragged == DragHandler.BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == DragHandler.BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!isPlayerSlot)
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (MouseEnterEnemyPlayerSlots.instance && MouseEnterEnemyPlayerSlots.instance.isActive)
|
|||
|
PlayerEnemySystem.instance.UpdatePlayerSlotOnDrop(CL);
|
|||
|
else
|
|||
|
StartCoroutine(PlayerSystem.instance.UpdatePlayerSlotOnDropEndOfFrame(CL)); // Next frame we will update the slots
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else if (isBackpackSlot) // From a backpack to pockets or tactical rig
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (flag && itemDragged == BackpackItemDragged.STASH) // If we drag from the inventory into the backpack and at the same time there is no place
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (!flag)
|
|||
|
{
|
|||
|
if (!isRotatedIcon && itemDragged == BackpackItemDragged.STASH && isTagSize2x1)
|
|||
|
{
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (isRotatedIcon)
|
|||
|
{
|
|||
|
if (itemDragged == BackpackItemDragged.STASH && CL.tagSize == ItemList.SizeIconInventory.Size2x1)
|
|||
|
{
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged != BackpackItemDragged.STASH) // If in the backpack everything happens
|
|||
|
{
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (transform.parent != startParent)
|
|||
|
CheckRootItem();
|
|||
|
}
|
|||
|
|
|||
|
private void DropInBackpackTacticalRigPocketsWindowByStartLoc()
|
|||
|
{
|
|||
|
if (!canNotBeMoved && BackpackSystem.instance.m_vspBackpackWindow)
|
|||
|
{
|
|||
|
if (MouseEnterEnemyBackpackSlots.instance && MouseEnterEnemyBackpackSlots.instance.isActive && BackpackEnemyBase.instance.GetBackpackInfo().isActiveBackpack) // Куда переносим
|
|||
|
{
|
|||
|
deleteVSP = BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().UpdateIconPositionAfterDropInBackpack(mBackpackEnemy.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive) // Куда переносим
|
|||
|
{
|
|||
|
if (!CanDestrorItemIcon())
|
|||
|
deleteVSP = BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().UpdateIconPositionAfterDropInBackpack(BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().mBackpackWindow.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>().isActive) // Куда переносим
|
|||
|
{
|
|||
|
if (!CanDestrorItemIcon())
|
|||
|
BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().UpdateIconPositionAfterDropOnTacticalRigOrPocketsSlot(itemIcon, CL, isRotatedIcon, startParent, isPlayerSlot, itemDragged);
|
|||
|
}
|
|||
|
else //
|
|||
|
{
|
|||
|
deleteVSP = BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().UpdateIconPositionAfterDropInBackpack(mBackpack.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackItem, isEnemyBackpack, itemDragged);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
GetComponent<PlayerIconPlaneInventory>().startPos = itemIcon.transform.localPosition; // Change the original position of the icon in the inventory
|
|||
|
|
|||
|
// If we do not reassign the parent (ie, drop into the empty place or there is no place or simply drop in the inventory)
|
|||
|
if (transform.parent == startParent && !deleteVSP)
|
|||
|
CloseBackpackSlots();
|
|||
|
else
|
|||
|
OpenBackpackSlots();
|
|||
|
|
|||
|
if (transform.parent != startParent)
|
|||
|
CheckRootItem();
|
|||
|
}
|
|||
|
|
|||
|
private void DropInPlayersSlotsByStartLoc()
|
|||
|
{
|
|||
|
//
|
|||
|
// PLAYER SLOTS
|
|||
|
//
|
|||
|
|
|||
|
if (!BackpackSystem.instance.RE4O_IsActive() && MouseEnterPlayerInventory.instance && !MouseEnterPlayerInventory.instance.isActive)
|
|||
|
{
|
|||
|
if (!isPlayerSlot) // If we do not drag from the player's slot (not to close our area)
|
|||
|
CloseBackpackSlotsFromPlayer();
|
|||
|
}
|
|||
|
else if (!BackpackSystem.instance.RE4O_IsActive() && MouseEnterEnemyPlayerSlots.instance && !MouseEnterEnemyPlayerSlots.instance.isActive)
|
|||
|
{
|
|||
|
if (!isPlayerSlot) // If we do not drag from the player's slot (not to close our area)
|
|||
|
CloseBackpackSlotsFromPlayer();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!isPlayerSlot) // If we do not drag from the player's slot (not to close our area)
|
|||
|
{
|
|||
|
if (itemDragged == BackpackItemDragged.STASH)
|
|||
|
{
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic state
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
if (!isAttached)
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (isBackpackSlot) // If we drag from the backpack into a slot
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
{
|
|||
|
if (!isAttached)
|
|||
|
{
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (isEnemyBackpack)
|
|||
|
{
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS)
|
|||
|
{
|
|||
|
if (isPlayerBackpack && !isAttached) // We can't close the index if we attached an item on the weapon
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic state
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void DropInStashSlotsByStartLoc()
|
|||
|
{
|
|||
|
//
|
|||
|
// STASH
|
|||
|
//
|
|||
|
|
|||
|
//
|
|||
|
// We perform the appropriate calculations
|
|||
|
//
|
|||
|
if (!canNotBeMoved && StoreBase.instance && !StoreBase.instance.isActive) // Для всего магазина
|
|||
|
{
|
|||
|
CloseAllOpendBackpackWindows();
|
|||
|
deleteVSP = StashSystem.instance.UpdateIconPositionAfterDropInStash(stash.transform, CL, itemIcon, GetComponent<PlayerIconPlaneInventory>().startPos, isPlayerSlot, isRotatedIcon, isBackpackSlot, itemDragged);
|
|||
|
}
|
|||
|
|
|||
|
GetComponent<PlayerIconPlaneInventory>().startPos = itemIcon.transform.localPosition; // Change the original position of the icon in the inventory
|
|||
|
//
|
|||
|
//// We check, and we drop the backpack in the Stash or something like that
|
|||
|
//
|
|||
|
if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS) // With tactical rig or pockets
|
|||
|
{
|
|||
|
if (transform.parent != startParent) // We look, but we actually dropped
|
|||
|
OpenBackpackSlots();
|
|||
|
}
|
|||
|
else if (isBackpackSlot && !deleteVSP) // From the backpack
|
|||
|
{
|
|||
|
if (transform.parent == startParent) // Look, if the parent has not changed, you need to close the place under the icon
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
else
|
|||
|
{
|
|||
|
if (isRotatedIcon && !deleteVSP) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basuc state
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (!isPlayerSlot)
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void CloseBackpackSlots()
|
|||
|
{
|
|||
|
if (isBackpackSlot)
|
|||
|
{
|
|||
|
if (isRotatedIcon && !deleteVSP) // We need to somehow track the situation, when in the backpack we move + the turn + there is no place or beyond the limits left
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
|
|||
|
if (CL.itWasRotated == false)
|
|||
|
CL.tagSize = CL.baseTagSize;
|
|||
|
else
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.STASH) // If we drop from inventory + turn + no place
|
|||
|
{
|
|||
|
if (isRotatedIcon)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (isPlayerSlot) // If from the player's slot in the backpack + turn + there is no place
|
|||
|
{
|
|||
|
if (isRotatedIcon && !deleteVSP)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS)
|
|||
|
{
|
|||
|
//Если мы переносим из слотов енеми (тактик рик, покетс) и так получилось, что не перенесли (попали в красную обл и тд) нужно закрыть
|
|||
|
if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
else if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
|
|||
|
if (isRotatedIcon && !deleteVSP)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void CloseBackpackSlotsFromPlayer()
|
|||
|
{
|
|||
|
if (isRotatedIcon) // If turned and if we drop it in some other place (not on the icon or in inventory) we return to the basic state
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (itemDragged == BackpackItemDragged.STASH)
|
|||
|
{
|
|||
|
StashSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS) // With tactical rig or pockets
|
|||
|
{
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.BACKPACK_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
else if (itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW && m_vspBackpackWindow)
|
|||
|
{
|
|||
|
m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().CloseIndicesTacticalRigPockets(CL);
|
|||
|
}
|
|||
|
else if (isBackpackSlot) // From the backpack
|
|||
|
{
|
|||
|
if (isRotatedIcon && !deleteVSP)
|
|||
|
{
|
|||
|
CL.indexPos60x60 = startIndexPos60x60;
|
|||
|
CL.tagSize = CL.GetReverseCurrentSizeTag();
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.CloseIndicesBackpackByIconPosition(CL.indexPos60x60, GetComponent<PlayerIconPlaneInventory>().startPos);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OpenBackpackSlots()
|
|||
|
{
|
|||
|
if (itemDragged != BackpackItemDragged.TACTICALRIG_OR_POCKETS || !CL.isPutOn)
|
|||
|
return;
|
|||
|
|
|||
|
if (CL.IsBackpackItemSlot())
|
|||
|
{
|
|||
|
if (isPlayerBackpack)
|
|||
|
BackpackSystem.instance.OpenCells(CL);
|
|||
|
else if (isEnemyBackpack)
|
|||
|
BackpackEnemyBase.instance.OpenCells(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private bool CanDestrorItemIcon()
|
|||
|
{
|
|||
|
if (!CL.isPutOn)
|
|||
|
return false;
|
|||
|
|
|||
|
if (isPlayerBackpack) // Если взяли у игрока
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYBACKPACK) // Если это рюкзак и он надет
|
|||
|
{
|
|||
|
if (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().vspButtonOption.isOpenedFromPlayerInv) // Если переносим в открытый неактивный рюкзак, который был открыт из слотов игрока (из его инвентаря)
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (isEnemyBackpack)
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYBACKPACK) // Если это рюкзак и он надет
|
|||
|
{
|
|||
|
if (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().vspButtonOption.isOpenedFromEnemyInv) // Если переносим в открытый неактивный рюкзак, который был открыт из слотов игрока (из его инвентаря)
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Helpers
|
|||
|
|
|||
|
// Меняем директорию
|
|||
|
private void CheckRootItem()
|
|||
|
{
|
|||
|
if (canNotBeMoved)
|
|||
|
return;
|
|||
|
|
|||
|
if ((MouseEnterPlayerInventory.instance && MouseEnterPlayerInventory.instance.isActive) || (MouseEnterBackpack.instance && MouseEnterBackpack.instance.IsActive)) // Куда
|
|||
|
{
|
|||
|
if (isEnemyBackpack || isEnemy) // От куда
|
|||
|
{
|
|||
|
ChangeRootItem();
|
|||
|
}
|
|||
|
}
|
|||
|
else if (BackpackSystem.instance.m_vspBackpackWindow && ((BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterBackpackWindow>().isActive) || (BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>() && BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<MouseEnterTacticalRigPocketsWindow>().isActive))) // Куда
|
|||
|
{
|
|||
|
if (isEnemyBackpack || isEnemy) // От куда
|
|||
|
{
|
|||
|
ChangeRootItem(3);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (MouseEnterEnemyPlayerSlots.instance && MouseEnterEnemyPlayerSlots.instance.isActive) // Куда
|
|||
|
{
|
|||
|
if (isPlayerBackpack || isPlayer || isEnemyBackpack || itemDragged == BackpackItemDragged.BACKPACK_WINDOW || itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW) // От куда
|
|||
|
{
|
|||
|
if (!CL.isPutOn)
|
|||
|
ChangeRootItem(2);
|
|||
|
else
|
|||
|
ChangeRootItem(1);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (MouseEnterEnemyBackpack.instance && MouseEnterEnemyBackpack.instance.isActive) // Куда
|
|||
|
{
|
|||
|
if (isPlayerBackpack || isPlayer || isEnemyBackpack || itemDragged == BackpackItemDragged.BACKPACK_WINDOW || itemDragged == BackpackItemDragged.TACTICALRIG_OR_POCKETS_WINDOW) // От куда
|
|||
|
{
|
|||
|
if (!CL.isPutOn || isPlayer)
|
|||
|
ChangeRootItem(1);
|
|||
|
else
|
|||
|
ChangeRootItem(2);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Проверяем у кого мы взяли
|
|||
|
// mode = 0 - Player int
|
|||
|
// mode = 1 - Enemy Backpack
|
|||
|
// mode = 2 - Enemy Player slots
|
|||
|
// mode = 3 - Backpack Window
|
|||
|
private void ChangeRootItem(int mode = 0)
|
|||
|
{
|
|||
|
if (mode == 0 || mode == 3) // Player
|
|||
|
{
|
|||
|
// Удалим объект (он больше не нужен)
|
|||
|
if (CL.destroyItemDrop)
|
|||
|
{
|
|||
|
if (isEnemyBackpack)
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYTACTICALRIG)
|
|||
|
{
|
|||
|
if (CL.insertCL.Length > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < CL.insertCL.Length; i++)
|
|||
|
{
|
|||
|
if (CL.insertCL[i] == null)
|
|||
|
break;
|
|||
|
|
|||
|
if (CL.insertCL[i].idSlotBackpack > 10)
|
|||
|
continue;
|
|||
|
|
|||
|
if (mode == 1)
|
|||
|
{
|
|||
|
if (CL.insertCL[i].IsRenderItem())
|
|||
|
CL.insertCL[i].itemModding.transform.SetParent(InventoryBase.instance.RootSpawnWeaponModding.transform);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (BackpackSystem.instance.m_vspBackpackWindow)
|
|||
|
CL.insertCL[i].itemModding.transform.SetParent(BackpackSystem.instance.m_vspBackpackWindow.GetComponentInChildren<BackpackWindow>().rootSpawnWeaponModding.transform);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (mode == 0)
|
|||
|
{
|
|||
|
if (CL.IsRenderItem())
|
|||
|
CL.SetItemModdingParameters(false, InventoryBase.instance.RootSpawnWeaponModding.transform);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (BackpackSystem.instance.m_vspBackpackWindow)
|
|||
|
CL.SetItemModdingParameters(false, BackpackSystem.instance.m_vspBackpackWindow.GetComponent<BackpackWindow>().rootSpawnWeaponModding.transform);
|
|||
|
}
|
|||
|
|
|||
|
Destroy(CL.destroyItemDrop);
|
|||
|
CL.destroyItemDrop = null;
|
|||
|
}
|
|||
|
}
|
|||
|
else // Enemy
|
|||
|
{
|
|||
|
if (CL.destroyItemDrop)
|
|||
|
{
|
|||
|
if (CL.destroyItemDrop.transform.parent)
|
|||
|
Destroy(CL.destroyItemDrop);
|
|||
|
CL.destroyItemDrop = null;
|
|||
|
}
|
|||
|
|
|||
|
if (CL.destroyItemDrop == null)
|
|||
|
CL.destroyItemDrop = (GameObject)Instantiate(InventoryBase.instance.ItemsDropPrefab);
|
|||
|
|
|||
|
CL.destroyItemDrop.name = CL.id.ToString();
|
|||
|
Helper.SetParameters(CL.destroyItemDrop, CL); // New Set
|
|||
|
if (mode == 1)
|
|||
|
isChangeEnemyItemRoot = true; // Выносим эту функцию в конец операции (т.к. не все параметры еще присвоены)
|
|||
|
else if (mode == 2)
|
|||
|
CL.destroyItemDrop.transform.SetParent(InventoryBase.instance.inventoryEnemy.m_SpawnEnemyDropItems); // Player items
|
|||
|
|
|||
|
CL.destroyItemDrop.transform.localPosition = Vector3.zero;
|
|||
|
CL.SetItemModdingParameters(false, CL.destroyItemDrop.transform);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Зайдем сюда только если повернули в процессе переноса
|
|||
|
// IMP THIS
|
|||
|
private void ExchangeIconsSize()
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.WEAPON)
|
|||
|
{
|
|||
|
itemIcon.GetComponent<RectTransform>().sizeDelta = CL.GetIconSizeForSlots();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// Change the size under the icon 120х120
|
|||
|
// Shift to half the icon
|
|||
|
|
|||
|
itemIcon.transform.localPosition = Vector3.zero;
|
|||
|
itemIcon.GetComponent<RectTransform>().sizeDelta = new Vector2(120, 120);
|
|||
|
itemIcon.GetComponentInChildren<ButtonOptions>().transform.localPosition = Vector3.zero;
|
|||
|
|
|||
|
itemIcon.GetComponentInChildren<ButtonOptions>().Icon.GetComponent<RectTransform>().sizeDelta = CL.GetIconSizeForSlots();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void CreateDummies()
|
|||
|
{
|
|||
|
//
|
|||
|
// In the Stash coordinate system (if it is on)
|
|||
|
//
|
|||
|
if (InventoryBase.instance.hideStash || LootBase.instance.isActiveLoot || StoreBase.instance.isActive)
|
|||
|
{
|
|||
|
stash = new GameObject("mStash");
|
|||
|
stash.GetComponent<Transform>().SetParent(StashSystem.instance.GetRootIconsSpawn().transform);
|
|||
|
stash.GetComponent<Transform>().localScale = Vector3.one;
|
|||
|
stash.GetComponent<Transform>().localRotation = icon.transform.localRotation;
|
|||
|
stash.GetComponent<Transform>().localPosition = Vector3.zero;
|
|||
|
}
|
|||
|
//
|
|||
|
// In the backpack's coordinate system (if it is on)
|
|||
|
//
|
|||
|
if (BackpackSystem.instance.GetBackpackInfo().isActiveBackpack)
|
|||
|
{
|
|||
|
mBackpack = new GameObject("mBackpackDummy");
|
|||
|
mBackpack.GetComponent<Transform>().SetParent(BackpackSystem.instance.rootIconItemsBackpackSpawn.transform);
|
|||
|
mBackpack.GetComponent<Transform>().localScale = Vector3.one;
|
|||
|
mBackpack.GetComponent<Transform>().localRotation = icon.transform.localRotation;
|
|||
|
mBackpack.GetComponent<Transform>().localPosition = Vector3.zero;
|
|||
|
}
|
|||
|
|
|||
|
if (BackpackEnemyBase.instance && BackpackEnemyBase.instance.GetBackpackInfo().isActiveBackpack)
|
|||
|
{
|
|||
|
mBackpackEnemy = new GameObject("mBackpackEnemyDummy");
|
|||
|
mBackpackEnemy.GetComponent<Transform>().SetParent(BackpackEnemyBase.instance.rootBackpackIconsSpawn.transform);
|
|||
|
mBackpackEnemy.GetComponent<Transform>().localScale = Vector3.one;
|
|||
|
mBackpackEnemy.GetComponent<Transform>().localRotation = icon.transform.localRotation;
|
|||
|
mBackpackEnemy.GetComponent<Transform>().localPosition = Vector3.zero;
|
|||
|
}
|
|||
|
|
|||
|
BackpackSystem.instance.CreateBackpacksDummy(icon);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Close, Reset, etc
|
|||
|
|
|||
|
private void CloseDragHandler()
|
|||
|
{
|
|||
|
//
|
|||
|
// Audio
|
|||
|
//
|
|||
|
|
|||
|
if (InventoryBase.instance.audioSource.clip)
|
|||
|
InventoryBase.instance.audioSource.PlayOneShot(InventoryBase.instance.audioSource.clip);
|
|||
|
|
|||
|
//
|
|||
|
// Reset
|
|||
|
//
|
|||
|
|
|||
|
ResetParameters();
|
|||
|
ResetDragAndDrop();
|
|||
|
|
|||
|
if (vspInstance)
|
|||
|
Destroy(vspInstance);
|
|||
|
if (stash)
|
|||
|
Destroy(stash);
|
|||
|
if (mBackpack)
|
|||
|
Destroy(mBackpack);
|
|||
|
if (mBackpackEnemy)
|
|||
|
Destroy(mBackpackEnemy);
|
|||
|
|
|||
|
BackpackSystem.instance.DestroyBackpackDummies();
|
|||
|
}
|
|||
|
|
|||
|
private void ResetParameters()
|
|||
|
{
|
|||
|
if (GetComponent<CanvasGroup>())
|
|||
|
GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
else
|
|||
|
GetComponentInParent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
|
|||
|
BackpackSystem.instance.rootBackpackCells.GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
if (BackpackEnemyBase.instance && BackpackEnemyBase.instance.isActive)
|
|||
|
BackpackEnemyBase.instance.rootBackpack.GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
|
|||
|
if (CL.IsBackpackItemSlot()) // If there is a parent, then block it (if it's a weapon slot or the backpack slot)
|
|||
|
{
|
|||
|
if (transform.parent == startParent)
|
|||
|
{
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>())
|
|||
|
if (GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (startParent != null && startParent.GetComponentInParent<PointEnterPlayerSlots>())
|
|||
|
if (startParent.GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>())
|
|||
|
startParent.GetComponentInParent<PointEnterPlayerSlots>().transform.GetComponent<CanvasGroup>().blocksRaycasts = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (InventoryBase.instance.hideStash || LootBase.instance.isActiveLoot)
|
|||
|
StashSystem.instance.GetUpdateAssistent().UpdateIconTextBackpack();
|
|||
|
|
|||
|
InventoryBase.instance.isDragHandlerIcon = false;
|
|||
|
InventoryBase.instance.CL = null;
|
|||
|
|
|||
|
//
|
|||
|
// Определяем, нужно ли нам удалять префаб ItemDrop для предмета
|
|||
|
//
|
|||
|
bool flagLoot = false;
|
|||
|
if (isStashSlot && itemDragged != BackpackItemDragged.STORE)
|
|||
|
{
|
|||
|
if (transform.parent == startParent) // Предмет остался в луте
|
|||
|
flagLoot = false;
|
|||
|
else
|
|||
|
flagLoot = true;
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
|
|||
|
if (!BackpackSystem.instance.RE4O_IsActive())
|
|||
|
PlayerSystem.instance.UpdateSlots(CL, flagLoot); // If it was a player's slot then you need to update all the slots
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// Для сброса цвета активного оружия
|
|||
|
//
|
|||
|
private void ResetBackgroundColor()
|
|||
|
{
|
|||
|
if (!BackpackSystem.instance.RE4O_IsActive())
|
|||
|
{
|
|||
|
if (CL != null && gameObject != null)
|
|||
|
{
|
|||
|
gameObject.GetComponentInChildren<ButtonOptions>().ResetBaseColor();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ResetDragAndDrop()
|
|||
|
{
|
|||
|
if (itemIcon.GetComponentInParent<PlayerInventorySlot>())
|
|||
|
{
|
|||
|
if (itemIcon.GetComponentInParent<PlayerInventorySlot>().IsPlayerSlot)
|
|||
|
{
|
|||
|
if (InventoryBase.instance.m_Hotbar.isActiveHotbar)
|
|||
|
InventoryBase.instance.m_Hotbar.UpdateHotbarOnDragAndDrop(CL); // Update hotbar
|
|||
|
|
|||
|
PlayerSystem.instance.UpdatePosition();
|
|||
|
|
|||
|
isPlayerSlot = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
isPlayerSlot = false;
|
|||
|
ResetBackgroundColor();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (isPlayerSlot)
|
|||
|
{
|
|||
|
if (MouseEnterEnemyPlayerSlots.instance && MouseEnterEnemyPlayerSlots.instance.isActive)
|
|||
|
CL.isEnemyItem = true;
|
|||
|
else
|
|||
|
CL.isEnemyItem = false;
|
|||
|
|
|||
|
ResetBackgroundColor();
|
|||
|
}
|
|||
|
|
|||
|
if (isEnemy)
|
|||
|
{
|
|||
|
PlayerEnemySystem.instance.isActiveUpdateSlots = true;
|
|||
|
BackpackEnemyBase.instance.isActiveUpdateSlots = true;
|
|||
|
isEnemy = false;
|
|||
|
ResetBackgroundColor();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (BackpackEnemyBase.instance && BackpackEnemyBase.instance.isActive) // *
|
|||
|
{
|
|||
|
PlayerEnemySystem.instance.isActiveUpdateSlots = true;
|
|||
|
BackpackEnemyBase.instance.isActiveUpdateSlots = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (itemIcon.GetComponentInParent<MouseEnterBackpack>() || itemIcon.GetComponentInParent<MouseEnterTacticalRigPocketsWindow>())
|
|||
|
{
|
|||
|
CL.isEnemyItem = false;
|
|||
|
isTacticRigSlot = true;
|
|||
|
}
|
|||
|
else
|
|||
|
isTacticRigSlot = false;
|
|||
|
|
|||
|
if (itemIcon.GetComponentInParent<MouseEnterEnemyBackpack>())
|
|||
|
{
|
|||
|
CL.isEnemyItem = true;
|
|||
|
isTacticRigSlot = true;
|
|||
|
}
|
|||
|
|
|||
|
if (itemIcon.GetComponentInParent<StoreInventorySlot>())
|
|||
|
isStoreSlot = true;
|
|||
|
else
|
|||
|
isStoreSlot = false;
|
|||
|
|
|||
|
if (itemIcon.GetComponentInParent<MouseEnterBackpackSlot>() || itemIcon.GetComponentInParent<MouseEnterEnemyBackpackSlots>() || itemIcon.GetComponentInParent<MouseEnterBackpackWindow>())
|
|||
|
{
|
|||
|
isBackpackSlot = true;
|
|||
|
isTacticRigSlot = false;
|
|||
|
isPlayerSlot = false;
|
|||
|
ResetBackgroundColor();
|
|||
|
}
|
|||
|
else
|
|||
|
isBackpackSlot = false;
|
|||
|
|
|||
|
if (MouseInterStashInventory.instance && itemIcon.GetComponentInParent<MouseInterStashInventory>())
|
|||
|
isStashSlot = true;
|
|||
|
else
|
|||
|
isStashSlot = false;
|
|||
|
|
|||
|
if (isChangeEnemyItemRoot)
|
|||
|
{
|
|||
|
//
|
|||
|
// Проверка куда мы кинули (туда и спавним предмет)
|
|||
|
//
|
|||
|
if (isTacticRigSlot)
|
|||
|
CL.destroyItemDrop.transform.SetParent(InventoryBase.instance.inventoryEnemy.m_SpawnEnemyTacticalRigItems); // Tactical Rig \ Pockets items
|
|||
|
else
|
|||
|
CL.destroyItemDrop.transform.SetParent(InventoryBase.instance.inventoryEnemy.m_SpawnEnemyBackpackItems); // Backpack items
|
|||
|
|
|||
|
isChangeEnemyItemRoot = false;
|
|||
|
}
|
|||
|
|
|||
|
isExchangeInventory = false;
|
|||
|
isExchangePlayerSlot = false;
|
|||
|
isPlayer = false;
|
|||
|
canNotBeMoved = false;
|
|||
|
isTagSize2x1 = false;
|
|||
|
isActiveDrag = false;
|
|||
|
isActive = false;
|
|||
|
isRotatedIcon = false;
|
|||
|
isPlayerBackpack = false;
|
|||
|
isEnemyBackpack = false;
|
|||
|
isBackpackItem = false;
|
|||
|
isAttached = false;
|
|||
|
m_vspBackpackWindow = null;
|
|||
|
itemDragged = default;
|
|||
|
|
|||
|
if (itemIcon && itemIcon.transform.parent.GetComponent<PointEnterPlayerSlots>())
|
|||
|
CL.isPutOn = true;
|
|||
|
else
|
|||
|
CL.isPutOn = false;
|
|||
|
|
|||
|
if (deleteVSP || isDeleteIcon)
|
|||
|
{
|
|||
|
Destroy(itemIcon);
|
|||
|
CL.isPutOn = false;
|
|||
|
}
|
|||
|
itemIcon = null;
|
|||
|
|
|||
|
deleteVSP = false;
|
|||
|
isDeleteIcon = false;
|
|||
|
|
|||
|
Helper.SetImageAlpha(icon.GetComponent<Image>(), 1.0f);
|
|||
|
|
|||
|
if (CL.storeID == -1)
|
|||
|
gameObject.GetComponentInChildren<ButtonOptions>().SetTextParameters(CL);
|
|||
|
else
|
|||
|
gameObject.GetComponentInChildren<ButtonOptions>().SetTextParameters("", CL.statisticList.itemPrice.ToString(), 11, 10, CL.statisticList.GetTypeOfMoney());
|
|||
|
|
|||
|
if (InventoryBase.instance.m_Hotbar.isActiveHotbar)
|
|||
|
{
|
|||
|
// Update hotbar slot
|
|||
|
InventoryBase.instance.m_Hotbar.UpdateHotbarPutOnSlots(CL);
|
|||
|
InventoryBase.instance.m_Hotbar.isPutOn = false;
|
|||
|
}
|
|||
|
|
|||
|
InventoryBase.instance.ResetSortingButton();
|
|||
|
|
|||
|
if (BackpackSystem.instance.RE4_spaceButtons != null)
|
|||
|
{
|
|||
|
for (int i = 0; i < BackpackSystem.instance.RE4_spaceButtons.Length; i++)
|
|||
|
if (BackpackSystem.instance.RE4_spaceButtons[i] != null)
|
|||
|
BackpackSystem.instance.RE4_spaceButtons[i].SetActive(false);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void CloseAllOpendBackpackWindows()
|
|||
|
{
|
|||
|
if (CL.tagItem == ItemList.TagItems.BODYBACKPACK && CL.isPutOn) // Если это рюкзак и он надет
|
|||
|
{
|
|||
|
if (BackpackSystem.instance.CheckOpenedBackpackWindow(CL))
|
|||
|
BackpackSystem.instance.CloseBackpackWindowSlotForOpenedBackpack(CL);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|
|||
|
}
|