protected override void TargetedSkillGUI() { if ((patk.mergeTurnToFaceTarget = MergeChoiceGUI("Face Target", patk.mergeTurnToFaceTarget)) != MergeMode.UseOriginal) { atk.turnToFaceTarget = EditorGUILayout.Toggle("Face Target", atk.turnToFaceTarget); } if ((patk.mergeDelay = MergeChoiceGUI("Scheduled Delay", patk.mergeDelay)) != MergeMode.UseOriginal) { atk.delay = EditorGUIExt.FormulaField("Scheduled Delay", atk.delay, atk.GetInstanceID() + "." + atk.name + ".delay", formulaOptions, lastFocusedControl); } if ((patk.mergeDelayedApplicationUsesOriginalPosition = MergeChoiceGUI("Trigger from Original Position", patk.mergeDelayedApplicationUsesOriginalPosition)) != MergeMode.UseOriginal) { atk.delayedApplicationUsesOriginalPosition = EditorGUILayout.Toggle("Trigger from Original Position", atk.delayedApplicationUsesOriginalPosition); } if ((patk.mergeMultiTargetMode = MergeChoiceGUI("Multi-Target Mode", patk.mergeMultiTargetMode)) != MergeMode.UseOriginal) { atk.multiTargetMode = (MultiTargetMode)EditorGUILayout.EnumPopup("Multi-Target Mode", atk.multiTargetMode); } if ((patk.mergeMaxWaypointDistanceF = MergeChoiceGUI("Max Waypoint Distance", patk.mergeMaxWaypointDistanceF)) != MergeMode.UseOriginal) { atk.maxWaypointDistanceF = EditorGUIExt.FormulaField("Max Waypoint Distance", atk.maxWaypointDistanceF, atk.GetInstanceID() + "." + atk.name + ".targeting.maxWaypointDistance", formulaOptions, lastFocusedControl); } if ((patk.mergeWaypointsAreIncremental = MergeChoiceGUI("Instantly Apply Waypoints", patk.mergeWaypointsAreIncremental)) != MergeMode.UseOriginal) { atk.waypointsAreIncremental = EditorGUILayout.Toggle("Instantly Apply Waypoints", atk.waypointsAreIncremental); } if ((patk.mergeCanCancelWaypoints = MergeChoiceGUI("Cancellable Waypoints", patk.mergeCanCancelWaypoints)) != MergeMode.UseOriginal) { atk.canCancelWaypoints = EditorGUILayout.Toggle("Cancellable Waypoints", atk.canCancelWaypoints); } if ((patk.mergeTargetSettings = MergeChoiceGUI("Target Settings", patk.mergeTargetSettings)) != MergeMode.UseOriginal) { if (atk.targetSettings == null) { atk.targetSettings = new TargetSettings[] { new TargetSettings() }; } EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); int arraySize = EditorGUILayout.IntField(atk.targetSettings.Length, GUILayout.Width(32)); GUILayout.Label(" " + "Target" + (atk.targetSettings.Length == 1 ? "" : "s")); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); var oldSettings = atk.targetSettings; if (arraySize != atk.targetSettings.Length) { TargetSettings[] newSettings = atk.targetSettings; Array.Resize(ref newSettings, arraySize); atk.targetSettings = newSettings; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); for (int i = 0; i < atk.targetSettings.Length; i++) { TargetSettings ts = i < oldSettings.Length ? oldSettings[i] : atk.targetSettings[i]; if (ts == null) { atk.targetSettings[i] = new TargetSettings(); ts = atk.targetSettings[i]; } atk.targetSettings[i] = EditorGUIExt.TargetSettingsGUI("Target " + i, atk.targetSettings[i], atk, formulaOptions, lastFocusedControl, i); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } }
protected virtual void TargetedSkillGUI() { if (!(target is MoveSkillDef)) { atk.turnToFaceTarget = EditorGUILayout.Toggle("Face Target", atk.turnToFaceTarget); } atk.delay = EditorGUIExt.FormulaField("Scheduled Delay", atk.delay, atk.GetInstanceID() + "." + atk.name + ".delay", formulaOptions, lastFocusedControl); if (Formula.NotNullFormula(atk.delay) && !(atk.delay.formulaType == FormulaType.Constant && atk.delay.constantValue == 0)) { atk.delayedApplicationUsesOriginalPosition = EditorGUILayout.Toggle("Trigger from Original Position", atk.delayedApplicationUsesOriginalPosition); } if (atk.targetSettings == null) { atk.targetSettings = new TargetSettings[] { new TargetSettings() }; } if ((atk.multiTargetMode = (MultiTargetMode)EditorGUILayout.EnumPopup("Multi-Target Mode", atk.multiTargetMode)) != MultiTargetMode.Single) { if (atk.multiTargetMode == MultiTargetMode.Chain) { atk.maxWaypointDistanceF = EditorGUIExt.FormulaField("Max Waypoint Distance", atk.maxWaypointDistanceF, atk.GetInstanceID() + "." + atk.name + ".targeting.maxWaypointDistance", formulaOptions, lastFocusedControl); } atk.waypointsAreIncremental = EditorGUILayout.Toggle("Instantly Apply Waypoints", atk.waypointsAreIncremental); atk.canCancelWaypoints = EditorGUILayout.Toggle("Cancellable Waypoints", atk.canCancelWaypoints); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); int arraySize = EditorGUILayout.IntField(atk.targetSettings.Length, GUILayout.Width(32)); GUILayout.Label(" " + "Target" + (atk.targetSettings.Length == 1 ? "" : "s")); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); var oldSettings = atk.targetSettings; if (arraySize != atk.targetSettings.Length) { TargetSettings[] newSettings = atk.targetSettings; Array.Resize(ref newSettings, arraySize); atk.targetSettings = newSettings; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); for (int i = 0; i < atk.targetSettings.Length; i++) { TargetSettings ts = i < oldSettings.Length ? oldSettings[i] : atk.targetSettings[i]; if (ts == null) { atk.targetSettings[i] = new TargetSettings(); ts = atk.targetSettings[i]; } atk.targetSettings[i] = EditorGUIExt.TargetSettingsGUI("Target " + i, atk.targetSettings[i], atk, formulaOptions, lastFocusedControl, i); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } else { atk.targetSettings[0] = EditorGUIExt.TargetSettingsGUI("Target", atk.targetSettings[0], atk, formulaOptions, lastFocusedControl, -1); } }