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)); }
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(); }