/** * <summary>Runs the appropriate interaction after the clicking of a MenuInteraction element.</summary> * <param name = "_menu">The Menu that contains the MenuInteraction element</param> * <param name = "iconID">The ID number of the "Use" icon, defined in CursorManager, that was clicked on</param> */ public void ClickInteractionIcon(AC.Menu _menu, int iconID) { if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ContextSensitive) { Debug.LogWarning ("This element is not compatible with the Context-Sensitive interaction method."); } else if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseInteractionThenHotspot) { KickStarter.runtimeInventory.SetNull (); KickStarter.playerCursor.SetCursorFromID (iconID); } else if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseHotspotThenInteraction) { if (KickStarter.settingsManager.SelectInteractionMethod () != SelectInteractions.ClickingMenu) { return; } if (_menu.GetTargetInvItem () != null) { _menu.ForceOff (); KickStarter.runtimeInventory.RunInteraction (iconID, _menu.GetTargetInvItem ()); } else if (_menu.GetTargetHotspot ()) { _menu.ForceOff (); ClickButton (InteractionType.Use, iconID, -1, _menu.GetTargetHotspot ()); } } }
/** * <summary>Processes the clicking of an inventory item within a MenuInventoryBox element</summary> * <param name = "_menu">The Menu that contains the MenuInventoryBox element</param> * <param name = "inventoryBox">The MenuInventoryBox element that was clicked on</param> * <param name = "_slot">The index number of the MenuInventoryBox slot that was clicked on</param> * <param name = "_mouseState">The state of the mouse when the click occured (Normal, SingleClick, RightClick, DoubleClick, HeldDown, LetGo)</param> */ public void ProcessInventoryBoxClick(AC.Menu _menu, MenuInventoryBox inventoryBox, int _slot, MouseState _mouseState) { if (inventoryBox.inventoryBoxType == AC_InventoryBoxType.Default || inventoryBox.inventoryBoxType == AC_InventoryBoxType.DisplayLastSelected) { if (KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Multiple && KickStarter.playerMenus.IsInteractionMenuOn ()) { KickStarter.playerMenus.SetInteractionMenus (false); ClickInvItemToInteract (); } else if (KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Multiple && KickStarter.settingsManager.SelectInteractionMethod () == AC.SelectInteractions.CyclingCursorAndClickingHotspot) { if (KickStarter.settingsManager.autoCycleWhenInteract && _mouseState == MouseState.SingleClick && (selectedItem == null || KickStarter.settingsManager.cycleInventoryCursors)) { int originalIndex = KickStarter.playerInteraction.GetInteractionIndex (); KickStarter.playerInteraction.SetNextInteraction (); KickStarter.playerInteraction.SetInteractionIndex (originalIndex); } if (!KickStarter.settingsManager.cycleInventoryCursors && selectedItem != null) { inventoryBox.HandleDefaultClick (_mouseState, _slot, KickStarter.settingsManager.interactionMethod); } else if (_mouseState != MouseState.RightClick) { KickStarter.playerMenus.SetInteractionMenus (false); ClickInvItemToInteract (); } if (KickStarter.settingsManager.autoCycleWhenInteract && _mouseState == MouseState.SingleClick) { KickStarter.playerInteraction.RestoreInventoryInteraction (); } } else if (KickStarter.settingsManager.interactionMethod != AC_InteractionMethod.ContextSensitive && KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Single) { inventoryBox.HandleDefaultClick (_mouseState, _slot, AC_InteractionMethod.ContextSensitive); } else { inventoryBox.HandleDefaultClick (_mouseState, _slot, KickStarter.settingsManager.interactionMethod); } _menu.Recalculate (); } else if (inventoryBox.inventoryBoxType == AC_InventoryBoxType.Container) { inventoryBox.ClickContainer (_mouseState, _slot, KickStarter.playerInput.activeContainer); _menu.Recalculate (); } else if (inventoryBox.inventoryBoxType == AC_InventoryBoxType.HotspotBased) { if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseHotspotThenInteraction) { if (_menu.GetTargetInvItem () != null) { //Combine (hoverItem, inventoryBox.items [_slot]); Combine (_menu.GetTargetInvItem (), inventoryBox.items [_slot + inventoryBox.GetOffset ()]); } else if (_menu.GetTargetHotspot ()) { InvItem _item = inventoryBox.items [_slot + inventoryBox.GetOffset ()]; if (_item != null) { //SelectItem (_item, SelectItemMode.Use); _menu.TurnOff (false); KickStarter.playerInteraction.ClickButton (InteractionType.Inventory, -2, _item.id, _menu.GetTargetHotspot ()); KickStarter.playerCursor.ResetSelectedCursor (); } } else { ACDebug.LogWarning ("Cannot handle inventory click since there is no active Hotspot."); } } else { ACDebug.LogWarning ("This type of InventoryBox only works with the Choose Hotspot Then Interaction method of interaction."); } } }