public override string GetSummary() { string displaySummary = ""; if (display != StageDisplayType.None) { displaySummary = StringFormatter.SplitCamelCase(display.ToString()); } else { return("Error: No display selected"); } string stageSummary = ""; if (stage != null) { stageSummary = " \"" + stage.name + "\""; } return(displaySummary + stageSummary); }
public override string GetSummary() { if (display == DisplayType.None && character == null) { return("Error: No character or display selected"); } else if (display == DisplayType.None) { return("Error: No display selected"); } else if (character == null) { return("Error: No character selected"); } string displaySummary = ""; string characterSummary = ""; string fromPositionSummary = ""; string toPositionSummary = ""; string stageSummary = ""; string portraitSummary = ""; string facingSummary = ""; displaySummary = StringFormatter.SplitCamelCase(display.ToString()); if (display == DisplayType.Replace) { if (replacedCharacter != null) { displaySummary += " \"" + replacedCharacter.name + "\" with"; } } characterSummary = character.name; if (stage != null) { stageSummary = " on \"" + stage.name + "\""; } if (portrait != null) { portraitSummary = " " + portrait.name; } if (shiftIntoPlace) { if (offset != 0) { fromPositionSummary = offset.ToString(); fromPositionSummary = " from " + "\"" + fromPositionSummary + "\""; } } else if (fromPosition != null) { fromPositionSummary = " from " + "\"" + fromPosition.name + "\""; } if (toPosition != null) { string toPositionPrefixSummary = ""; if (move) { toPositionPrefixSummary = " to "; } else { toPositionPrefixSummary = " at "; } toPositionSummary = toPositionPrefixSummary + "\"" + toPosition.name + "\""; } if (facing != FacingDirection.None) { if (facing == FacingDirection.Left) { facingSummary = "<--"; } if (facing == FacingDirection.Right) { facingSummary = "-->"; } facingSummary = " facing \"" + facingSummary + "\""; } return(displaySummary + " \"" + characterSummary + portraitSummary + "\"" + stageSummary + facingSummary + fromPositionSummary + toPositionSummary); }
public override void DrawCommandGUI() { serializedObject.Update(); Portrait t = target as Portrait; if (Stage.activeStages.Count > 1) { CommandEditor.ObjectField <Stage>(stageProp, new GUIContent("Portrait Stage", "Stage to display the character portraits on"), new GUIContent("<Default>"), Stage.activeStages); } else { t.stage = null; } // Format Enum names string[] displayLabels = StringFormatter.FormatEnumNames(t.display, "<None>"); displayProp.enumValueIndex = EditorGUILayout.Popup("Display", (int)displayProp.enumValueIndex, displayLabels); string characterLabel = "Character"; if (t.display == DisplayType.Replace) { CommandEditor.ObjectField <Character>(replacedCharacterProp, new GUIContent("Replace", "Character to replace"), new GUIContent("<None>"), Character.activeCharacters); characterLabel = "With"; } CommandEditor.ObjectField <Character>(characterProp, new GUIContent(characterLabel, "Character to display"), new GUIContent("<None>"), Character.activeCharacters); bool showOptionalFields = true; Stage s = t.stage; // Only show optional portrait fields once required fields have been filled... if (t.character != null) // Character is selected { if (t.character.portraits == null || // Character has a portraits field t.character.portraits.Count <= 0) // Character has at least one portrait { EditorGUILayout.HelpBox("This character has no portraits. Please add portraits to the character's prefab before using this command.", MessageType.Error); showOptionalFields = false; } if (t.stage == null) // If default portrait stage selected { if (t.stage == null) // If no default specified, try to get any portrait stage in the scene { s = GameObject.FindObjectOfType <Stage>(); } } if (s == null) { EditorGUILayout.HelpBox("No portrait stage has been set.", MessageType.Error); showOptionalFields = false; } } if (t.display != DisplayType.None && t.character != null && showOptionalFields) { if (t.display != DisplayType.Hide && t.display != DisplayType.MoveToFront) { // PORTRAIT CommandEditor.ObjectField <Sprite>(portraitProp, new GUIContent("Portrait", "Portrait representing character"), new GUIContent("<Previous>"), t.character.portraits); if (t.character.portraitsFace != FacingDirection.None) { // FACING // Display the values of the facing enum as <-- and --> arrows to avoid confusion with position field string[] facingArrows = new string[] { "<Previous>", "<--", "-->", }; facingProp.enumValueIndex = EditorGUILayout.Popup("Facing", (int)facingProp.enumValueIndex, facingArrows); } else { t.facing = FacingDirection.None; } } else { t.portrait = null; t.facing = FacingDirection.None; } string toPositionPrefix = ""; if (t.move) { // MOVE EditorGUILayout.PropertyField(moveProp); } if (t.move) { if (t.display != DisplayType.Hide) { // START FROM OFFSET EditorGUILayout.PropertyField(shiftIntoPlaceProp); } } if (t.move) { if (t.display != DisplayType.Hide) { if (t.shiftIntoPlace) { t.fromPosition = null; // OFFSET // Format Enum names string[] offsetLabels = StringFormatter.FormatEnumNames(t.offset, "<Previous>"); offsetProp.enumValueIndex = EditorGUILayout.Popup("From Offset", (int)offsetProp.enumValueIndex, offsetLabels); } else { t.offset = PositionOffset.None; // FROM POSITION CommandEditor.ObjectField <RectTransform>(fromPositionProp, new GUIContent("From Position", "Move the portrait to this position"), new GUIContent("<Previous>"), s.positions); } } toPositionPrefix = "To "; } else { t.shiftIntoPlace = false; t.fromPosition = null; toPositionPrefix = "At "; } if (t.display == DisplayType.Show || (t.display == DisplayType.Hide && t.move)) { // TO POSITION CommandEditor.ObjectField <RectTransform>(toPositionProp, new GUIContent(toPositionPrefix + "Position", "Move the portrait to this position"), new GUIContent("<Previous>"), s.positions); } else { t.toPosition = null; } if (!t.move && t.display != DisplayType.MoveToFront) { // MOVE EditorGUILayout.PropertyField(moveProp); } if (t.display != DisplayType.MoveToFront) { EditorGUILayout.Separator(); // USE DEFAULT SETTINGS EditorGUILayout.PropertyField(useDefaultSettingsProp); if (!t.useDefaultSettings) { // FADE DURATION EditorGUILayout.PropertyField(fadeDurationProp); if (t.move) { // MOVE SPEED EditorGUILayout.PropertyField(moveDurationProp); } if (t.shiftIntoPlace) { // SHIFT OFFSET EditorGUILayout.PropertyField(shiftOffsetProp); } } } else { t.move = false; t.useDefaultSettings = true; EditorGUILayout.Separator(); } EditorGUILayout.PropertyField(waitUntilFinishedProp); if (t.portrait != null && t.display != DisplayType.Hide) { Texture2D characterTexture = t.portrait.texture; float aspect = (float)characterTexture.width / (float)characterTexture.height; Rect previewRect = GUILayoutUtility.GetAspectRect(aspect, GUILayout.Width(100), GUILayout.ExpandWidth(true)); if (characterTexture != null) { GUI.DrawTexture(previewRect, characterTexture, ScaleMode.ScaleToFit, true, aspect); } } if (t.display != DisplayType.Hide) { string portraitName = "<Previous>"; if (t.portrait != null) { portraitName = t.portrait.name; } string portraitSummary = " " + portraitName; int toolbarInt = 1; string[] toolbarStrings = { "<--", portraitSummary, "-->" }; toolbarInt = GUILayout.Toolbar(toolbarInt, toolbarStrings, GUILayout.MinHeight(20)); int portraitIndex = -1; if (toolbarInt != 1) { for (int i = 0; i < t.character.portraits.Count; i++) { if (portraitName == t.character.portraits[i].name) { portraitIndex = i; } } } if (toolbarInt == 0) { if (portraitIndex > 0) { t.portrait = t.character.portraits[--portraitIndex]; } else { t.portrait = null; } } if (toolbarInt == 2) { if (portraitIndex < t.character.portraits.Count - 1) { t.portrait = t.character.portraits[++portraitIndex]; } } } } serializedObject.ApplyModifiedProperties(); }