private void CheckClicks (Menu menu)
		{
			if (menu.transitionType == MenuTransition.None && menu.IsFading ())
			{
				// Stop until no longer "fading" so that it appears in right place
				return;
			}
			
			activeInventoryBoxCentre = Vector2.zero;
			
			if (settingsManager.inputMethod == InputMethod.MouseAndKeyboard && menu.GetRect ().Contains (playerInput.GetInvertedMouse ()))
			{
				elementIdentifier = menu.id.ToString ();
			}
			
			foreach (MenuElement element in menu.elements)
			{
				if (element.isVisible)
				{
					for (int i=0; i<element.GetNumSlots (); i++)
					{
						if (SlotIsInteractive (menu, element, i))
						{
							if (playerInput.mouseState != MouseState.Normal && (playerInput.dragState == DragState.None || playerInput.dragState == DragState.Menu))
							{
								if (playerInput.mouseState == MouseState.SingleClick || playerInput.mouseState == MouseState.LetGo || playerInput.mouseState == MouseState.RightClick)// && (!playerInput.interactionMenuIsOn || menu.appearType == AppearType.OnInteraction))
								{
									if (element is MenuInput) {}
									else DeselectInputBox ();
									
									CheckClick (menu, element, i, playerInput.mouseState);
								}
								else if (playerInput.mouseState == MouseState.HeldDown)
								{
									CheckContinuousClick (menu, element, i, playerInput.mouseState);
								}
							}
							else if (playerInteraction.IsDroppingInventory () && CanElementBeDroppedOnto (element))
							{
								DeselectInputBox ();
								CheckClick (menu, element, i, MouseState.SingleClick);
							}
						}
					}
				}
			}
		}
        private IEnumerator SwapInteractionMenu(Menu _menu)
        {
            _menu.TurnOff (true);

            while (_menu.IsFading ())
            {
                yield return new WaitForFixedUpdate ();
            }

            KickStarter.playerInteraction.ResetInteractionIndex ();
            if (KickStarter.runtimeInventory.hoverItem != null)
            {
                _menu.MatchInteractions (KickStarter.runtimeInventory.hoverItem, KickStarter.settingsManager.cycleInventoryCursors);
            }
            else if (KickStarter.playerInteraction.GetActiveHotspot ())
            {
                _menu.MatchInteractions (KickStarter.playerInteraction.GetActiveHotspot ().useButtons, KickStarter.settingsManager.cycleInventoryCursors);
            }

            _menu.TurnOn (true);
        }
		private void UpdateElements (Menu menu)
		{
			if (menu.transitionType == MenuTransition.None && menu.IsFading ())
			{
				// Stop until no longer "fading" so that it appears in right place
				return;
			}
			
			activeInventoryBoxCentre = Vector2.zero;
			
			if (settingsManager.inputMethod == InputMethod.MouseAndKeyboard && menu.GetRect ().Contains (playerInput.GetInvertedMouse ()))
			{
				elementIdentifier = menu.id.ToString ();
			}
			
			foreach (MenuElement element in menu.elements)
			{
				if (element.isVisible)
				{
					for (int i=0; i<element.GetNumSlots (); i++)
					{
						if (SlotIsInteractive (menu, element, i))
						{
							if ((!playerInput.interactionMenuIsOn || menu.appearType == AppearType.OnInteraction)
							    && (playerInput.dragState == DragState.None || (playerInput.dragState == DragState.Inventory && CanElementBeDroppedOnto (element))))
							{
								if (sceneSettings && element.hoverSound && lastElementIdentifier != (menu.id.ToString () + element.ID.ToString () + i.ToString ()))
								{
									sceneSettings.PlayDefaultSound (element.hoverSound, false);
								}
								
								elementIdentifier = menu.id.ToString () + element.ID.ToString () + i.ToString ();
							}
							
							if (stateHandler.gameState != GameState.Cutscene)
							{
								if (element is MenuInventoryBox)
								{
									if (stateHandler.gameState == GameState.Normal)
									{
										if (settingsManager.interactionMethod == AC_InteractionMethod.ChooseInteractionThenHotspot && settingsManager.inventoryInteractions == InventoryInteractions.Single && runtimeInventory.selectedItem == null)
										{
											playerCursor.ResetSelectedCursor ();
										}
										
										MenuInventoryBox inventoryBox = (MenuInventoryBox) element;
										if (inventoryBox.inventoryBoxType == AC_InventoryBoxType.HostpotBased)
										{
											if (cursorManager.addHotspotPrefix)
											{
												if (runtimeInventory.selectedItem != null)
												{
													hotspotLabel = runtimeInventory.selectedItem.GetLabel ();
												}
												else
												{
													hotspotLabel = playerInteraction.GetLabel ();
												}
												
												if ((runtimeInventory.selectedItem == null && !playerInput.interactionMenuIsOn) || playerInput.interactionMenuIsOn)
												{
													hotspotLabel = cursorManager.hotspotPrefix1.label + " " + inventoryBox.GetLabel (i) + " " + cursorManager.hotspotPrefix2.label + " " + hotspotLabel;
												}
											}
										}
										else
										{
											activeInventoryBoxCentre = menu.GetSlotCentre (inventoryBox, i);
											
											InvItem newHoverItem = inventoryBox.GetItem (i);
											if (oldHoverItem != newHoverItem)
											{
												runtimeInventory.MatchInteractions ();
												playerInteraction.ResetInteractionIndex ();
											}
											runtimeInventory.hoverItem = newHoverItem;
											
											if (!playerInput.interactionMenuIsOn)
											{
												if (inventoryBox.displayType == ConversationDisplayType.IconOnly)
												{
													hotspotLabel = inventoryBox.GetLabel (i);
												}
											}
											else if (runtimeInventory.selectedItem != null)
											{
												hotspotLabel = runtimeInventory.selectedItem.GetLabel ();
											}
										}
									}
								}
								else if (element is MenuCrafting)
								{
									if (stateHandler.gameState == GameState.Normal)
									{
										MenuCrafting crafting = (MenuCrafting) element;
										runtimeInventory.hoverItem = crafting.GetItem (i);
										
										if (runtimeInventory.hoverItem != null)
										{
											if (!playerInput.interactionMenuIsOn)
											{
												hotspotLabel = crafting.GetLabel (i);
											}
											else if (runtimeInventory.selectedItem != null)
											{
												hotspotLabel = runtimeInventory.selectedItem.GetLabel ();
											}
										}
									}
								}
								else if (element is MenuInteraction)
								{
									if (runtimeInventory.selectedItem != null)
									{
										hotspotLabel = runtimeInventory.selectedItem.GetLabel ();
									}
									else
									{
										hotspotLabel = playerInteraction.GetLabel ();
									}
									
									if (cursorManager.addHotspotPrefix && playerInput.interactionMenuIsOn && settingsManager.SelectInteractionMethod () == SelectInteractions.ClickingMenu)
									{
										MenuInteraction interaction = (MenuInteraction) element;
										hotspotLabel = cursorManager.GetLabelFromID (interaction.iconID) + hotspotLabel;
									}
								}
								else if (element is MenuDialogList)
								{
									if (stateHandler.gameState == GameState.DialogOptions)
									{
										MenuDialogList dialogList = (MenuDialogList) element;
										if (dialogList.displayType == ConversationDisplayType.IconOnly)
										{
											hotspotLabel = dialogList.GetLabel (i);
										}
									}
								}
								else if (element is MenuButton)
								{
									MenuButton button = (MenuButton) element;
									if (button.hotspotLabel != "")
									{
										hotspotLabel = button.GetHotspotLabel ();
									}
								}
							}
						}
					}
				}
			}
		}