void Start() { buttons = new List <UIIconButton>(); foreach (AbilityBase ability in combatItem.abilities) { UIAbilityIconButton button = Instantiate(UIFactory.uiAbilityButton); button.ability = ability; button.menu = menu; button.label = label; buttons.Add(button); } UIIconButton buttonCancel = Instantiate(UIFactory.uiIconButton); buttonCancel.SetIconSprite(iconCancel); buttonCancel.onSelect.AddListener(() => label.text = labelCancel); buttonCancel.onClick.AddListener(() => menu.GoBack()); buttons.Add(buttonCancel); for (int i = 0; i < buttons.Count; i++) { buttons[i].transform.SetParent(buttonParent); buttons[i].neighborLeft = buttons[NeverdawnUtility.RepeatIndex(i - 1, buttons.Count)]; buttons[i].neighborRight = buttons[NeverdawnUtility.RepeatIndex(i + 1, buttons.Count)]; } }
public override void Next() { updateTargets(); targetIndex = NeverdawnUtility.RepeatIndex(targetIndex - 1, targets.Length); updateSelector(); }
private void updatePage() { List <UIIconButton> buttons = new List <UIIconButton>(); buttons.Add(centerButton); buttonMap = new Dictionary <UISelectable, Character>(); foreach (Character character in PlacementController.charactersToPlace) { Character c = character; UIIconButton iconButton = Instantiate(iconButtonPrefab); iconButton.SetIconSprite(character.identity.icon); iconButton.transform.SetParent(iconButtonParent); iconButton.onClick.AddListener(() => click(c)); buttons.Add(iconButton); } for (int i = 0; i < buttons.Count; i++) { buttons[i].neighborLeft = buttons[NeverdawnUtility.RepeatIndex(i - 1, buttons.Count)]; buttons[i].neighborRight = buttons[NeverdawnUtility.RepeatIndex(i + 1, buttons.Count)]; } buttons[0].Select(); }
private void selectTop() { index = NeverdawnUtility.RepeatIndex(index - 1, selectables.Length); updateSelection(); }
private void updateView(IQuickMenuInteractionCollection collection) { interactions = collection.interactions; clearIcons(); if (buttons == null) { buttons = new List <UITextButton>(); } foreach (QuickMenuInteraction interaction in interactions) { UITextButton quickMenuIcon = createQuickMenuItem(interaction); quickMenuIcon.transform.SetParent(iconParent, false); buttons.Add(quickMenuIcon); } for (int i = 0; i < buttons.Count; i++) { buttons[i].neighborTop = buttons[NeverdawnUtility.RepeatIndex(i - 1, buttons.Count)]; buttons[i].neighborBottom = buttons[NeverdawnUtility.RepeatIndex(i + 1, buttons.Count)]; } icon.sprite = collection.icon; textLabel.text = collection.label; textDescription.text = collection.description; }
private void updateView() { foreach (Transform child in slotViewParent) { Destroy(child.gameObject); } Mannequin mannequin = avatarController.character.GetComponent <Mannequin>(); slotViews = new UISlotView[mannequin.combatItemSlots.Length]; for (int i = 0; i < mannequin.combatItemSlots.Length; i++) { CombatItemSlot slot = mannequin.combatItemSlots[i]; int k = i; slotViews[i] = Instantiate(slotViewPrefab); slotViews[i].component = slot.Get(); slotViews[i].slotName = slot.slotName; slotViews[i].defaultLabel = "None"; slotViews[i].GetComponent <UIButton>().onClick.AddListener(() => pickItemForSlot(slot, k)); slotViews[i].transform.SetParent(slotViewParent, false); } for (int i = 0; i < slotViews.Length; i++) { int prev = NeverdawnUtility.RepeatIndex(i - 1, slotViews.Length); int next = NeverdawnUtility.RepeatIndex(i + 1, slotViews.Length); slotViews[i].selectable.neighborBottom = slotViews[next].selectable; slotViews[i].selectable.neighborTop = slotViews[prev].selectable; } }
void Start() { buttons = new List <UIIconButton>(); if (character.mannequin) { foreach (CombatItem item in character.mannequin.GetEquippedCombatItems()) { UICombatItemIconButton combatItemButton = Instantiate(UIFactory.uiCombatItemButton); combatItemButton.combatItem = item; combatItemButton.menu = menu; combatItemButton.label = label; buttons.Add(combatItemButton); } } if (character.unarmed) { UICombatItemIconButton combatItemButton = Instantiate(UIFactory.uiCombatItemButton); combatItemButton.combatItem = character.unarmed; combatItemButton.menu = menu; combatItemButton.label = label; combatItemButton.customLabel = "Self"; buttons.Add(combatItemButton); } if (includeWalk) { AbilityBase walkAbility = Instantiate(CombatController.walkAbility); walkAbility.Initialize(character.gameObject); UIAbilityIconButton walkButton = Instantiate(UIFactory.uiAbilityButton); walkButton.ability = walkAbility; walkButton.menu = menu; walkButton.label = label; buttons.Add(walkButton); } if (includeDoNothing) { UIIconButton buttonDoNothing = Instantiate(UIFactory.uiIconButton); buttonDoNothing.SetIconSprite(iconDoNothing); buttonDoNothing.onSelect.AddListener(() => label.text = labelDoNothing); buttonDoNothing.onClick.AddListener(() => doNothing()); buttons.Add(buttonDoNothing); } for (int i = 0; i < buttons.Count; i++) { buttons[i].transform.SetParent(buttonParent); buttons[i].neighborLeft = buttons[NeverdawnUtility.RepeatIndex(i - 1, buttons.Count)]; buttons[i].neighborRight = buttons[NeverdawnUtility.RepeatIndex(i + 1, buttons.Count)]; } }
protected override void OnQuickMenuPageEnabled() { Character character = avatarController.character; selectedIndex = NeverdawnUtility.RepeatIndex(selectedIndex, buttons.Count); if (buttons.Count > 0) { buttons[selectedIndex].Select(); } }
private static Vector3 shift(Vector3[] lineStrip, int p, float thickness) { int prev = NeverdawnUtility.RepeatIndex(p - 1, lineStrip.Length); int next = NeverdawnUtility.RepeatIndex(p + 1, lineStrip.Length); Vector3 shiftDirection = lineStrip[next] - lineStrip[prev]; shiftDirection.y = 0.0f; shiftDirection.Normalize(); shiftDirection = Quaternion.Euler(0.0f, 90.0f, 0.0f) * shiftDirection; return(lineStrip[p] + thickness * shiftDirection); }
/// <summary> /// Updates the cursor with joystick info /// </summary> /// <param name="direction"></param> /// <param name="intensity"></param> public override void UpdateValues(Vector3 direction, float intensity) { if (targets.Length == 0) { return; } // Check if current target is still valid if (Vector3.Distance(character.transform.position, targets[targetIndex].position) > maxRange) { targetIndex = NeverdawnUtility.RepeatIndex(targetIndex, targets.Length); } }
private void updateCurrentControllers() { currentTurnControllers.Clear(); Character character = currentCombatGroup[turnIndex]; // find the next living character while (!character.isAlive) { turnIndex = NeverdawnUtility.RepeatIndex(turnIndex + 1, currentCombatGroup.Count); character = currentCombatGroup[turnIndex]; } // fetch all characters in the party in the following sequence if (character.IsInPlayerParty) { while (character.IsInPlayerParty) { // find the current controller or an auxiliary controller NeverdawnCharacterController controller = character.controller; if (!controller) { controller = findControllerForCharacter(character); } // collect the controllers and try to add more characters if (!currentTurnControllers.Contains(controller)) { controller.character = character; currentTurnControllers.Add(controller); turnIndex = NeverdawnUtility.RepeatIndex(turnIndex + 1, currentCombatGroup.Count); character = currentCombatGroup[turnIndex]; } else { break; } } } else { currentTurnControllers.Add(character.controller); turnIndex = NeverdawnUtility.RepeatIndex(turnIndex + 1, currentCombatGroup.Count); } NeverdawnCamera.Clear(); currentTurnControllers.ForEach(c => NeverdawnCamera.AddTargetLerped(c.character.cachedTransform)); }
private NeverdawnCharacterController findControllerForCharacter(Character character) { AvatarController preferredController = _controllers.FirstOrDefault(c => c.preferredCharacterId == character.id); if (preferredController) { return(preferredController); } else { NeverdawnCharacterController auxiliaryController = _controllers[auxiliaryControllerIndex]; auxiliaryControllerIndex = NeverdawnUtility.RepeatIndex(auxiliaryControllerIndex + 1, _controllers.Count); return(auxiliaryController); } }
internal Character GetNextCharacter(AvatarController controller = null) { if (Count == 0) { return(null); } else { int index = 0; Vector3 position = GameController.playerSpawnPosition; Quaternion rotation = Quaternion.identity; Vector3 forward = Vector3.right; if (controller != null && controller.character != null) { index = characters.IndexOf(controller.character) + 1; position = controller.character.transform.position; rotation = controller.character.transform.rotation; forward = controller.character.transform.forward; PutCharacter(controller.character); } for (int i = 0; i < characters.Count; i++) { int currentIndex = NeverdawnUtility.RepeatIndex(index + i, characters.Count); Character character = characters[currentIndex]; if (!character.controller) { character.solid.Show(); character.transform.position = position; character.transform.forward = forward; character.GetComponentInChildren <NavMeshAnimator>().Reset(); _activeCharacters.Add(character); _hiddenCharacters.Remove(character); return(character); } } } return(null); }
/// <summary> /// Updates the cursor /// </summary> /// <param name="direction"></param> /// <param name="intensity"></param> public override void UpdateValues(Vector3 direction, float intensity) { // TODO: HIDE SELECTOR AND DO THIS PROPERLY if (targets.Count == 0) { return; } // Check if current target is still valid if (Vector3.Distance(character.transform.position, targets[targetIndex].position) > maxRange) { fetchTargets(); targetIndex = NeverdawnUtility.RepeatIndex(targetIndex, targets.Count); } updateSelector(); }
protected override void OnQuickMenuPageEnabled() { Character character = avatarController.character; selectedIndex = NeverdawnUtility.RepeatIndex(selectedIndex, buttons.Count); foreach (KeyValuePair <SkillType, UISkillView> entry in skillViewMap) { entry.Value.value = character.GetSkillLevel(entry.Key, true).ToString(); } foreach (KeyValuePair <AttributeType, UISkillView> entry in attributeViewMap) { entry.Value.value = character.GetAttributeLevel(entry.Key, true).ToString(); } buttons[selectedIndex].Select(); }
// Update is called once per frame void Update() { if (inputModule != null) { float horizontal = inputModule.GetAxis(NeverdawnInputAxis.HorizontalLeft); float vertical = inputModule.GetAxis(NeverdawnInputAxis.VerticalLeft); Vector3 input = inputModule.normalizedDirection; if (input.sqrMagnitude < 0.1f) { if (center != null) { center.Select(); } else if (selected != null) { selected.Deselect(); } selected = null; } if (input.sqrMagnitude > 0.1f) { float inputAngle = Vector3.SignedAngle(Vector3.forward, input, Vector3.up); if (inputAngle < 0.0f) { inputAngle = 360.0f + inputAngle; } inputAngle += angle / 2.0f; int index = NeverdawnUtility.RepeatIndex((int)(inputAngle / angle), peripherals.Length); selected = peripherals[index]; peripherals[index].Select(); } previousInput = input; } }
internal void Select(int selectionIndex) { index = NeverdawnUtility.RepeatIndex(selectionIndex, selectables.Length); updateSelection(); }