Esempio n. 1
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));
    }
Esempio n. 2
0
    internal void ExitCombat()
    {
        foreach (Character character in currentCombatGroup)
        {
            if (character.isAlive)
            {
                character.LeaveCombatStance();
            }
        }

        NeverdawnCamera.Clear();

        foreach (AvatarController controller in _controllers)
        {
            controller.character = Frame.FindComponentById <Character>(controller.preferredCharacterId);
            NeverdawnCamera.AddTargetLerped(controller.character.transform);
        }

        GameController.instance.party.StoreUnused();
    }