private void DrawMenu(AC.Menu menu, int languageNumber) { Color tempColor = GUI.color; bool isACMenu = !menu.IsUnityUI (); if (menu.IsEnabled ()) { if (!menu.HasTransition () && menu.IsFading ()) { // Stop until no longer "fading" so that it appears in right place return; } if (isACMenu) { if (menu.transitionType == MenuTransition.Fade || menu.transitionType == MenuTransition.FadeAndPan) { tempColor.a = 1f - menu.GetFadeProgress ();//menu.Get//menu.transitionProgress; GUI.color = tempColor; } else { tempColor.a = 1f; GUI.color = tempColor; } menu.StartDisplay (); } foreach (MenuElement element in menu.elements) { if (element.isVisible) { if (isACMenu) { SetStyles (element); } for (int i=0; i<element.GetNumSlots (); i++) { if (menu.IsEnabled () && KickStarter.stateHandler.gameState != GameState.Cutscene && KickStarter.settingsManager.SelectInteractionMethod () == SelectInteractions.CyclingMenuAndClickingHotspot && menu.appearType == AppearType.OnInteraction) { if (element is MenuInteraction) { MenuInteraction menuInteraction = (MenuInteraction) element; if (menuInteraction.iconID == KickStarter.playerInteraction.GetActiveUseButtonIconID ()) { if (KickStarter.cursorManager.addHotspotPrefix) { if (KickStarter.runtimeInventory.hoverItem != null) { hotspotLabel = KickStarter.cursorManager.GetLabelFromID (menuInteraction.iconID, languageNumber) + KickStarter.runtimeInventory.hoverItem.GetLabel (languageNumber); } else { hotspotLabel = KickStarter.cursorManager.GetLabelFromID (menuInteraction.iconID, languageNumber) + KickStarter.playerInteraction.GetLabel (languageNumber); } } if (isACMenu) { element.Display (highlightedStyle, i, menu.GetZoom (), true); } } else { if (isACMenu) { element.Display (normalStyle, i, menu.GetZoom (), false); } } } else if (element is MenuInventoryBox) { MenuInventoryBox menuInventoryBox = (MenuInventoryBox) element; if (menuInventoryBox.inventoryBoxType == AC_InventoryBoxType.HotspotBased && menuInventoryBox.items[i].id == KickStarter.playerInteraction.GetActiveInvButtonID ()) { if (KickStarter.cursorManager.addHotspotPrefix) { hotspotLabel = KickStarter.runtimeInventory.GetHotspotPrefixLabel (menuInventoryBox.GetItem (i), menuInventoryBox.GetLabel (i, languageNumber), languageNumber); if (KickStarter.runtimeInventory.selectedItem != null) { hotspotLabel += KickStarter.runtimeInventory.selectedItem.GetLabel (languageNumber); } else { hotspotLabel += KickStarter.playerInteraction.GetLabel (languageNumber); } } if (isACMenu) { element.Display (highlightedStyle, i, menu.GetZoom (), true); } } else if (isACMenu) { element.Display (normalStyle, i, menu.GetZoom (), false); } } else if (isACMenu) { element.Display (normalStyle, i, menu.GetZoom (), false); } } else if (isACMenu && menu.IsVisible () && !menu.ignoreMouseClicks && element.isClickable && KickStarter.playerInput.IsCursorReadable () && KickStarter.stateHandler.gameState != GameState.Cutscene && ((KickStarter.settingsManager.inputMethod == InputMethod.MouseAndKeyboard && menu.IsPointerOverSlot (element, i, KickStarter.playerInput.GetInvertedMouse ())) || (KickStarter.settingsManager.inputMethod == InputMethod.TouchScreen && menu.IsPointerOverSlot (element, i, KickStarter.playerInput.GetInvertedMouse ())) || (KickStarter.settingsManager.inputMethod == InputMethod.KeyboardOrController && KickStarter.stateHandler.gameState == GameState.Normal && menu.IsPointerOverSlot (element, i, KickStarter.playerInput.GetInvertedMouse ())) || ((KickStarter.settingsManager.inputMethod == InputMethod.KeyboardOrController && KickStarter.stateHandler.gameState != GameState.Normal && menu.selected_element == element && menu.selected_slot == i)))) { float zoom = 1; if (menu.transitionType == MenuTransition.Zoom) { zoom = menu.GetZoom (); } if ((!interactionMenuIsOn || menu.appearType == AppearType.OnInteraction) && (KickStarter.playerInput.GetDragState () == DragState.None || (KickStarter.playerInput.GetDragState () == DragState.Inventory && CanElementBeDroppedOnto (element)))) { element.Display (highlightedStyle, i, zoom, true); if (element.changeCursor) { elementOverCursorID = element.cursorID; } } else { element.Display (normalStyle, i, zoom, false); } } else if (isACMenu) { element.Display (normalStyle, i, menu.GetZoom (), false); } } if (element is MenuInput) { if (selectedInputBox == null) { if (!menu.IsUnityUI ()) { MenuInput input = (MenuInput) element; SelectInputBox (input); } selectedInputBoxMenuName = menu.title; } } } } if (isACMenu) { menu.EndDisplay (); } } if (isACMenu) { tempColor.a = 1f; GUI.color = tempColor; } }
private void UpdateElements(AC.Menu menu, int languageNumber) { if (!menu.HasTransition () && menu.IsFading ()) { // Stop until no longer "fading" so that it appears in right place return; } if (KickStarter.settingsManager.inputMethod == InputMethod.MouseAndKeyboard && menu.IsPointInside (KickStarter.playerInput.GetInvertedMouse ())) { elementIdentifier = menu.id.ToString (); } foreach (MenuElement element in menu.elements) { if ((element.GetNumSlots () == 0 || !element.isVisible) && menu.menuSource != MenuSource.AdventureCreator) { element.HideAllUISlots (); } for (int i=0; i<element.GetNumSlots (); i++) { element.PreDisplay (i, languageNumber, menu.IsPointerOverSlot (element, i, KickStarter.playerInput.GetInvertedMouse ())); if (element.isVisible && SlotIsInteractive (menu, element, i)) { if ((!interactionMenuIsOn || menu.appearType == AppearType.OnInteraction) && (KickStarter.playerInput.GetDragState () == DragState.None || (KickStarter.playerInput.GetDragState () == DragState.Inventory && CanElementBeDroppedOnto (element)))) { if (KickStarter.sceneSettings && element.hoverSound && lastElementIdentifier != (menu.id.ToString () + element.ID.ToString () + i.ToString ())) { KickStarter.sceneSettings.PlayDefaultSound (element.hoverSound, false); } elementIdentifier = menu.id.ToString () + element.ID.ToString () + i.ToString (); } if (KickStarter.stateHandler.gameState != GameState.Cutscene) { if (element is MenuInventoryBox) { //if (KickStarter.stateHandler.gameState == GameState.Normal) if (KickStarter.stateHandler.gameState == GameState.Normal || KickStarter.stateHandler.gameState == GameState.Paused) { if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseInteractionThenHotspot && KickStarter.settingsManager.inventoryInteractions == InventoryInteractions.Single && KickStarter.runtimeInventory.selectedItem == null) { KickStarter.playerCursor.ResetSelectedCursor (); } MenuInventoryBox inventoryBox = (MenuInventoryBox) element; if (inventoryBox.inventoryBoxType == AC_InventoryBoxType.HotspotBased) { if (KickStarter.cursorManager.addHotspotPrefix) { if (KickStarter.runtimeInventory.hoverItem != null) { hotspotLabel = KickStarter.runtimeInventory.hoverItem.GetLabel (languageNumber); } else { hotspotLabel = KickStarter.playerInteraction.GetLabel (languageNumber); } if ((KickStarter.runtimeInventory.selectedItem == null && !interactionMenuIsOn) || interactionMenuIsOn) { hotspotLabel = KickStarter.runtimeInventory.GetHotspotPrefixLabel (inventoryBox.GetItem (i), inventoryBox.GetLabel (i, languageNumber), languageNumber) + hotspotLabel; } } } else { foundMouseOverInventory = true; if (!mouseOverInteractionMenu) { InvItem newHoverItem = inventoryBox.GetItem (i); //KickStarter.runtimeInventory.hoverItem = newHoverItem; KickStarter.runtimeInventory.SetHoverItem (newHoverItem, inventoryBox.displayType); if (oldHoverItem != newHoverItem) { KickStarter.runtimeInventory.MatchInteractions (); KickStarter.playerInteraction.RestoreInventoryInteraction (); activeInventoryBoxCentre = menu.GetSlotCentre (inventoryBox, i); if (interactionMenuIsOn) { SetInteractionMenus (false); } } } if (KickStarter.settingsManager.SelectInteractionMethod () == SelectInteractions.CyclingCursorAndClickingHotspot) {} else { if (!interactionMenuIsOn) { if (inventoryBox.displayType == ConversationDisplayType.IconOnly) { if (KickStarter.settingsManager.interactionMethod == AC_InteractionMethod.ChooseInteractionThenHotspot) { if (KickStarter.playerCursor.GetSelectedCursor () >= 0) { hotspotLabel = KickStarter.cursorManager.GetCursorIconFromID (KickStarter.playerCursor.GetSelectedCursorID ()).label + " " + inventoryBox.GetLabel (i, languageNumber); } else if (KickStarter.runtimeInventory.selectedItem == null) { hotspotLabel = inventoryBox.GetLabel (i, languageNumber); } } else { if (KickStarter.runtimeInventory.hoverItem != null && KickStarter.runtimeInventory.hoverItem == KickStarter.runtimeInventory.selectedItem) { hotspotLabel = inventoryBox.GetLabel (i, languageNumber); } } } } else if (KickStarter.runtimeInventory.selectedItem != null) { hotspotLabel = KickStarter.runtimeInventory.selectedItem.GetLabel (languageNumber); } } } } } else if (element is MenuCrafting) { if (KickStarter.stateHandler.gameState == GameState.Normal) { MenuCrafting crafting = (MenuCrafting) element; //KickStarter.runtimeInventory.hoverItem = crafting.GetItem (i); KickStarter.runtimeInventory.SetHoverItem (crafting.GetItem (i), crafting.displayType); if (KickStarter.runtimeInventory.hoverItem != null) { if (!interactionMenuIsOn) { hotspotLabel = crafting.GetLabel (i, languageNumber); } else if (KickStarter.runtimeInventory.selectedItem != null) { hotspotLabel = KickStarter.runtimeInventory.selectedItem.GetLabel (languageNumber); } } } } else if (element is MenuInteraction) { if (KickStarter.runtimeInventory.hoverItem != null) { hotspotLabel = KickStarter.runtimeInventory.hoverItem.GetLabel (languageNumber); } else { hotspotLabel = KickStarter.playerInteraction.GetLabel (languageNumber); } if (KickStarter.cursorManager.addHotspotPrefix && interactionMenuIsOn && KickStarter.settingsManager.SelectInteractionMethod () == SelectInteractions.ClickingMenu) { MenuInteraction interaction = (MenuInteraction) element; hotspotLabel = KickStarter.cursorManager.GetLabelFromID (interaction.iconID, languageNumber) + hotspotLabel; } } else if (element is MenuDialogList) { if (KickStarter.stateHandler.gameState == GameState.DialogOptions) { MenuDialogList dialogList = (MenuDialogList) element; if (dialogList.displayType == ConversationDisplayType.IconOnly) { hotspotLabel = dialogList.GetLabel (i, languageNumber); } } } else if (element is MenuButton) { MenuButton button = (MenuButton) element; if (button.hotspotLabel != "") { hotspotLabel = button.GetHotspotLabel (languageNumber); } } } } } } }
private void CheckClicks(AC.Menu menu) { if (!menu.HasTransition () && menu.IsFading ()) { // Stop until no longer "fading" so that it appears in right place return; } if (KickStarter.settingsManager.inputMethod == InputMethod.MouseAndKeyboard && menu.IsPointInside (KickStarter.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 (!menu.IsUnityUI () && KickStarter.playerInput.GetMouseState () != MouseState.Normal && (KickStarter.playerInput.GetDragState () == DragState.None || KickStarter.playerInput.GetDragState () == DragState.Menu)) { if (KickStarter.playerInput.GetMouseState () == MouseState.SingleClick || KickStarter.playerInput.GetMouseState () == MouseState.LetGo || KickStarter.playerInput.GetMouseState () == MouseState.RightClick) { if (element is MenuInput) {} else DeselectInputBox (); CheckClick (menu, element, i, KickStarter.playerInput.GetMouseState ()); } else if (KickStarter.playerInput.GetMouseState () == MouseState.HeldDown) { CheckContinuousClick (menu, element, i, KickStarter.playerInput.GetMouseState ()); } } else if (menu.IsUnityUI () && KickStarter.runtimeInventory.selectedItem == null && KickStarter.settingsManager.inventoryDragDrop && KickStarter.playerInput.GetMouseState () == MouseState.HeldDown && KickStarter.playerInput.GetDragState () == DragState.None) { if (element is MenuInventoryBox || element is MenuCrafting) { // Begin UI drag drop CheckClick (menu, element, i, MouseState.SingleClick); } } else if (KickStarter.playerInteraction.IsDroppingInventory () && CanElementBeDroppedOnto (element)) { if (menu.IsUnityUI () && KickStarter.settingsManager.inventoryDragDrop && (element is MenuInventoryBox || element is MenuCrafting)) { // End UI drag drop element.ProcessClick (menu, i, MouseState.SingleClick); } else { DeselectInputBox (); CheckClick (menu, element, i, MouseState.SingleClick); } } } } } } }