void UAREquipmentComponent::OnRep_ChestItem()
{
	//if (ChestItem.ItemMesh.IsValid())
	//{
	//SetChestMesh(ChestItem.ItemMesh);
	//}

	ChangeChestItem(ChestItem);
}
void UAREquipmentComponent::ChangeItem(FARDragDropInfo ItemIn, int32 OldItemSlotID)
{
	bool itemRemoved = false;
	if (GetOwnerRole() < ROLE_Authority)
	{
		ServerChangeItem(ItemIn, OldItemSlotID);
	}
	else
	{
		//check if there is something in that particular slot
		for (AARItem* eqItem : EquippedItems)
		{
			if (eqItem->ItemSlotEquipped == ItemIn.ItemSlot)
			{
				FARDragDropInfo tempItem;
				tempItem.ItemKey = eqItem->ItemID;
				tempItem.ItemSlot = eqItem->ItemSlotEquipped;
				//if there is, Unequip it. Before we proceed.
				UnEquipItem(ItemIn);
				itemRemoved = Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex);
				Inventory->AddItemToInventoryOnSlot(tempItem, OldItemSlotID);
			}
		}
		switch (ItemIn.DragDropSlot)
		{
		case EDragDropSlot::Chest:
		{
			if (ChangeChestItem(ItemIn))
			{
				if (!itemRemoved)
				{
					Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex);
					break;
				}
			}
			break;
		}
		case EDragDropSlot::LeftHand:
		{
			AddWeapon(ItemIn, OldItemSlotID, 0);
		}
		case EDragDropSlot::RightHand:
		{
			AddWeapon(ItemIn, OldItemSlotID, 1);
		}
		default:
			break;
		}
	}
}
void UAREquipmentComponent::ChangeItem(FInventorySlot ItemIn, int32 OldItemSlotID)
{
	bool itemRemoved = false;
	if (GetOwnerRole() < ROLE_Authority)
	{
		ServerChangeItem(ItemIn, OldItemSlotID);
	}
	else
	{
		//check if there is something in that particular slot
		for (AARItem* eqItem : EquippedItems)
		{
			if (eqItem->ItemSlotEquipped == ItemIn.ItemSlot)
			{
				FInventorySlot tempItem;
				tempItem.ItemID = eqItem->ItemID;
				tempItem.ItemSlot = eqItem->ItemSlotEquipped;
				//if there is, Unequip it. Before we proceed.
				UnEquipItem(ItemIn);
				itemRemoved = TargetController->RemoveItemFromInventory(ItemIn.ItemID, ItemIn.SlotID);
				TargetController->AddItemToInventoryOnSlot(tempItem, OldItemSlotID);
			}
		}
		switch (ItemIn.EEquipmentSlot)
		{
		case EEquipmentSlot::Item_Chest:
		{
			if (ChangeChestItem(ItemIn))
			{
				if (!itemRemoved)
				{
					TargetController->RemoveItemFromInventory(ItemIn.ItemID, ItemIn.SlotID);
					break;
				}
			}
			break;
		}
		case EEquipmentSlot::Item_LeftHandOne:
		{
			AddLeftHandWeapon(ItemIn.ItemID);
		}
		default:
			break;
		}
	}
}
void UAREquipmentComponent::ServerChangeChestItem_Implementation(FARDragDropInfo ItemIn)
{
	ChangeChestItem(ItemIn);
}
void UAREquipmentComponent::ServerChangeChestItem_Implementation(FInventorySlot ItemIn)
{
	ChangeChestItem(ItemIn);
}