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)];
        }
    }
示例#2
0
    public override void Next()
    {
        updateTargets();
        targetIndex = NeverdawnUtility.RepeatIndex(targetIndex - 1, targets.Length);

        updateSelector();
    }
示例#3
0
    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;
        }
    }
示例#7
0
    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();
        }
    }
示例#9
0
    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);
        }
    }
示例#11
0
    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));
    }
示例#12
0
    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);
        }
    }
示例#13
0
    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);
    }
示例#14
0
    /// <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();
    }
示例#16
0
    // 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();
 }