Esempio n. 1
0
    public void LoadAttacks(Fighter fighter)
    {
        ResetSelections();
        for (int i = 0; i < fighter.FighterData.AttackList.Count; i++)
        {
            // Add buttons if more are needed
            if (ActionButtonPool.Count == i)
            {
                ActionButtonPool.Add(Instantiate(ActionButtonPrefab, ButtonContainter));
                ActionButtonPool[i].transform.SetAsLastSibling();
                // Set button nav
                if (i == 0)
                {
                    ActionButtonPool[0].Button.navigation = new Navigation()
                    {
                        mode = Navigation.Mode.None
                    };
                }
                else
                {
                    ActionButtonPool[i].Button.navigation = new Navigation()
                    {
                        mode         = Navigation.Mode.Explicit,
                        selectOnUp   = ActionButtonPool[i - 1].Button,
                        selectOnDown = ActionButtonPool[0].Button
                    };
                }
                // adjust previous button nav
                if (i > 0)
                {
                    ActionButtonPool[i - 1].Button.navigation = new Navigation()
                    {
                        mode         = Navigation.Mode.Explicit,
                        selectOnUp   = i == 1 ? ActionButtonPool[i].Button : ActionButtonPool[i - 2].Button,
                        selectOnDown = ActionButtonPool[i].Button
                    };
                }
            }
            ActionButtonPool[i].Populate(this, fighter.FighterData.AttackList[i]);

            ActionButtonPool[i].SetSelectable(
                BattleManager.Instance.PlayerTeam.AvailableActionPoints >= fighter.FighterData.AttackList[i].Cost &&
                BattleTargetting.ValidTargetsFoundForAction(fighter, fighter.FighterData.AttackList[i].TargetData));
        }
    }
Esempio n. 2
0
    public void BeginTargettingForAction(int actionIndex)
    {
        SetSelectionLevel(MenuSelectionLevel.Target, true);

        switch (currentCategorySelection)
        {
        case CategorySelection.Attack:
            currentTargetingAction = currentFighter.FighterData.AttackList[actionIndex];
            break;

        case CategorySelection.Item:
            break;

        case CategorySelection.Special:
            break;

        case CategorySelection.Tactics:
            break;
        }

        targetableFighters = BattleTargetting.GetTargettableFighters(currentFighter, currentTargetingAction.TargetData);
        if (currentTargetingAction.TargetData.TargetCount == BattleTargetting.TargetCount.Single) // single target
        {
            targetableFighters[0].SetAsTargeted(true);
            UpdateTargetedFighter(targetableFighters[0]);
            currentTargetSelectionIndex = 0;
        }
        else // Target all at once
        {
            for (int i = 0; i < targetableFighters.Count; i++)
            {
                targetableFighters[i].SetAsTargeted(true);
            }
            UpdateTargetedFighter(targetableFighters);
        }
    }