/// <summary> /// Draw the body of the block. /// </summary> private static void DrawItems() { // exit early if there are no items if (items == null || items.Count == 0) { HeroKitCommon.DrawNoItemsInList(blockName); return; } SimpleLayout.BeginVertical(Box.StyleCanvasBox); // display items (move up, move down, int field, for (int i = 0; i < items.Count; i++) { SimpleLayout.BeginHorizontal(); HeroKitCommon.DrawListArrows(moveItemUp, moveItemDown, i); items[i].value = SimpleLayout.BoolListField(items[i], i); items[i].name = SimpleLayout.StringListField(items[i].name, HeroKitCommon.GetWidthForField(289)); HeroKitCommon.DrawListButtons(addItem, copyItem, pasteItem, deleteItem, i); SimpleLayout.EndHorizontal(); if (i != items.Count - 1) { SimpleLayout.Line(); } } SimpleLayout.EndVertical(); SimpleLayout.Space(20); }
// -------------------------------------------------------------- // Action Fields // -------------------------------------------------------------- /// <summary> /// Get a hero object. /// </summary> /// <param name="title">Title for action field.</param> /// <param name="actionParams">Action field parameters.</param> /// <param name="actionField">Action field.</param> public static void BuildField(string title, HeroActionParams actionParams, HeroActionField actionField) { // create the fields HeroTypeFieldData data = CreateFieldData(title, actionField, actionParams.heroObject); //----------------------------------------- // Display this title above the field //----------------------------------------- if (data.title != "") { SimpleLayout.Label(data.title); } SimpleLayout.BeginHorizontal(); //----------------------------------------- // Get the integer list you want to work with. // The integer list is in hero object editor > Variables //----------------------------------------- data.fieldValue = SimpleLayout.ObjectField(data.fieldValue, HeroKitCommon.GetWidthForField(65)); //----------------------------------------- // assign values back to hero object fields //----------------------------------------- actionField.heroObjects[0] = data.fieldValue; //----------------------------------------- // Visual stuff //----------------------------------------- SimpleLayout.Space(); SimpleLayout.EndHorizontal(); }
/// <summary> /// Fields for the hero property (strings). /// </summary> private static void DrawStrings() { List <StringField> items = propertyBlock.itemProperties.strings.items; // exit early if there are no values if (items == null || items.Count == 0) { return; } SimpleLayout.BeginVertical(SimpleGUI.Fields.Box.StyleB); for (int i = 0; i < items.Count; i++) { SimpleLayout.Label(items[i].name + ":"); if (!items[i].useTextField) { items[i].value = SimpleLayout.TextField(items[i].value, HeroKitCommon.GetWidthForField(60, 150)); } else { items[i].value = SimpleLayout.TextArea(items[i].value, HeroKitCommon.GetWidthForField(60, 150)); } } SimpleLayout.EndVertical(); }
// pass field into a drop down list [change first value in DropDownList] public static int SetValues(FieldInfo[] list, int selectedValue, int titleWidth) { PopulateField(list); int result = SimpleLayout.DropDownList(selectedValue, field, titleWidth, HeroKitCommon.GetWidthForField(62)); result = (result == 0 && list != null && list.Length != 0) ? 1 : result; return(result); }
/// <summary> /// Draw the body of the block. /// </summary> private static void DrawBody() { SimpleLayout.BeginVertical(Box.StyleCanvasBox); // draw name of the block action.name = HeroKitCommon.DrawBlockName(action.name); SimpleLayout.Line(); // get current action template on hero object HeroKitAction oldTemplate = action.actionTemplate; // draw action field for block SimpleLayout.Space(5); SimpleLayout.BeginHorizontal(); SimpleLayout.Label("Action:"); action.actionTemplate = SimpleLayout.ObjectField(action.actionTemplate, HeroKitCommon.GetWidthForField(85)); SimpleLayout.Space(); SimpleLayout.EndHorizontal(); // SHOW FIELDS FOR SPECIFIC ACTION if (action.actionTemplate != null) { SimpleLayout.Space(5); SimpleLayout.Line(); SimpleLayout.Space(5); // build fields ActionBlockBuilder.BuildFields(heroObject, action, action.actionTemplate, oldTemplate); // build description for action SimpleLayout.Space(5); SimpleLayout.Line(); SimpleLayout.Label("Description:"); SimpleLayout.Label(action.actionTemplate.description, true); } SimpleLayout.EndVertical(); }
// -------------------------------------------------------------- // Action Fields // -------------------------------------------------------------- /// <summary> /// Get an object. /// </summary> /// <typeparam name="T">The type of object.</typeparam> /// <param name="title">Title for action field.</param> /// <param name="actionParams">Action field parameters.</param> /// <param name="actionField">Action field.</param> /// <param name="titleToLeft">Show the title on the left?</param> /// <returns>The object.</returns> public static T BuildField <T>(string title, HeroActionParams actionParams, HeroActionField actionField, bool titleToLeft = false) where T : Object { // create the fields GetObjectValueData data = CreateFieldData(title, actionField, actionParams.heroObject); //----------------------------------------- // Display this title above the field //----------------------------------------- if (data.title != "" && !titleToLeft) { SimpleLayout.Label(data.title); } SimpleLayout.BeginHorizontal(); if (data.title != "" && titleToLeft) { SimpleLayout.Label(data.title); } //----------------------------------------- // Get the object you want to work with //----------------------------------------- data.fieldValue = SimpleLayout.ObjectField(data.fieldValue as T, HeroKitCommon.GetWidthForField(60)); //----------------------------------------- // assign values back to hero object fields //----------------------------------------- actionField.component = data.fieldValue; //----------------------------------------- // Visual stuff //----------------------------------------- SimpleLayout.Space(); SimpleLayout.EndHorizontal(); return(actionField.component as T); }
public static void MenuSkins() { // exit early if we don't want to show the menu skins. if (!toggleMenuSkins) { return; } HeroKitSettings settings = HeroKitCommon.LoadHeroSettings(); int distance = 10; SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Dialog Box"); settings.dialogBox = SimpleLayout.ObjectField(settings.dialogBox, HeroKitCommon.GetWidthForField(65)); if (settings.dialogBox == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Fade Screen In and Out Window"); settings.fadeInOutScreen = SimpleLayout.ObjectField(settings.fadeInOutScreen, HeroKitCommon.GetWidthForField(65)); if (settings.fadeInOutScreen == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Game Over Menu"); settings.gameoverMenu = SimpleLayout.ObjectField(settings.gameoverMenu, HeroKitCommon.GetWidthForField(65)); if (settings.gameoverMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Inventory Menu"); settings.inventoryMenu = SimpleLayout.ObjectField(settings.inventoryMenu, HeroKitCommon.GetWidthForField(65)); if (settings.inventoryMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.Label("Inventory Item"); settings.inventoryItem = SimpleLayout.ObjectField(settings.inventoryItem, HeroKitCommon.GetWidthForField(65)); if (settings.inventoryItem == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.Label("Inventory Slot"); settings.inventorySlot = SimpleLayout.ObjectField(settings.inventorySlot, HeroKitCommon.GetWidthForField(65)); if (settings.inventorySlot == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Journal Menu"); settings.journalMenu = SimpleLayout.ObjectField(settings.journalMenu, HeroKitCommon.GetWidthForField(65)); if (settings.journalMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.Label("Journal Item"); settings.journalItem = SimpleLayout.ObjectField(settings.journalItem, HeroKitCommon.GetWidthForField(65)); if (settings.journalItem == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.Label("Journal Slot"); settings.journalSlot = SimpleLayout.ObjectField(settings.journalSlot, HeroKitCommon.GetWidthForField(65)); if (settings.journalSlot == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Options Menu"); settings.optionsMenu = SimpleLayout.ObjectField(settings.optionsMenu, HeroKitCommon.GetWidthForField(65)); if (settings.optionsMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Save Menu"); settings.saveMenu = SimpleLayout.ObjectField(settings.saveMenu, HeroKitCommon.GetWidthForField(65)); if (settings.saveMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.Label("Save Slot"); settings.saveSlot = SimpleLayout.ObjectField(settings.saveSlot, HeroKitCommon.GetWidthForField(65)); if (settings.saveSlot == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); SimpleLayout.BeginVertical(Box.StyleB); SimpleLayout.Label("Start Menu"); settings.startMenu = SimpleLayout.ObjectField(settings.startMenu, HeroKitCommon.GetWidthForField(65)); if (settings.startMenu == null) { HeroKitCommon.RefreshHeroSettings(); } SimpleLayout.EndVertical(); SimpleLayout.Space(distance); }
// -------------------------------------------------------------- // Action Fields // -------------------------------------------------------------- /// <summary> /// Get a value from a game object field. /// This is for a field that contains Value, Variable, Property, Global. /// </summary> /// <param name="title">Title for action field.</param> /// <param name="actionParams">Action field parameters.</param> /// <param name="actionField">Action field.</param> /// <param name="titleToLeft">Show the title on the left?</param> /// <returns>A game object.</returns> public static GameObject BuildFieldA(string title, HeroActionParams actionParams, HeroActionField actionField, bool titleToLeft = false) { GameObjectFieldData data = CreateFieldData(title, actionField, actionParams.heroObject); //----------------------------------------- // Display this title above the field //----------------------------------------- if (data.title != "" && !titleToLeft) { SimpleLayout.Label(data.title); } SimpleLayout.BeginHorizontal(); if (data.title != "" && titleToLeft) { SimpleLayout.Label(data.title); } else { SimpleLayout.Space(8); } //----------------------------------------- // Get the type of field you want to work with. //----------------------------------------- SimpleLayout.Space(-8); data.fieldType = new HeroField.ValueTypeFieldC().SetValues(data.fieldType, 0); //----------------------------------------- // Get the type of object we are working with // Option 1: This object (object that this hero object is attached to) // Option 2: Another object (another object in the scene that has a hero object attached to it) //----------------------------------------- if (data.fieldType == 2 || data.fieldType == 3 || data.fieldType == 4) { data = ActionCommon.GetTargetHeroObject(data); } //----------------------------------------- // Get the integer list you want to work with. // The integer list is in hero object editor > Variables //----------------------------------------- // if this is a field, draw field (1=value) if (data.fieldType == 1) { data.objectName = SimpleLayout.TextField(data.objectName, HeroKitCommon.GetWidthForField(133)); } // if this is a list, draw items (2=variables, 3=properties, 5=globals) if (data.fieldType == 2 || data.fieldType == 3 || data.fieldType == 5) { data = SetPropertyID(data, -1); List <GameObjectField> items = GetItemsFromList(data, -1); data = BuildItemFieldList(data, items); } //----------------------------------------- // assign values back to hero object fields //----------------------------------------- actionField.heroObjects[0] = data.targetHeroObject; actionField.ints[0] = data.objectType; actionField.ints[1] = data.objectID; actionField.ints[2] = data.fieldID; actionField.ints[3] = data.fieldType; actionField.ints[4] = data.heroGUID; actionField.ints[5] = data.propertyID; actionField.strings[0] = data.objectName; actionField.gameObjects[0] = data.gameObject; //----------------------------------------- // Visual stuff //----------------------------------------- SimpleLayout.Space(); SimpleLayout.EndHorizontal(); return(data.gameObject); }
/// <summary> /// Get the hero object template you want to work with. /// </summary> /// <typeparam name="T">The type of data for the action field.</typeparam> /// <param name="data">The data for the action field.</param> /// <returns>The data for the action field.</returns> public static T GetTargetHeroTemplate <T>(T data) where T : ITargetHeroObject { data.objectType = new HeroField.HeroObjectTypeFieldB().SetValues(data.objectType, -5); switch (data.objectType) { case 1: data.targetHeroObject = SimpleLayout.ObjectField(data.targetHeroObject, HeroKitCommon.GetWidthForField(213)); break; case 2: data = GetThisHeroObject(data); break; case 3: data = GetHeroObjectInVariables(data); break; case 4: data = GetHeroObjectInScene(data); break; case 5: data = GetHeroObjectInProperties(data); break; case 6: data = GetHeroObjectInGlobals(data); break; } return(data); }
/// <summary> /// Fields for the hero property (unity objects). /// </summary> private static void DrawUnityObjects() { List <UnityObjectField> items = propertyBlock.itemProperties.unityObjects.items; // exit early if there are no values if (items == null || items.Count == 0) { return; } SimpleLayout.BeginVertical(SimpleGUI.Fields.Box.StyleB); for (int i = 0; i < items.Count; i++) { SimpleLayout.Label(items[i].name + ":"); switch (items[i].objectType) { case 1: // audio items[i].value = SimpleLayout.ObjectField(items[i].value as AudioClip, HeroKitCommon.GetWidthForField(60, 150)); break; case 2: // sprite items[i].value = SimpleLayout.ObjectField(items[i].value as Sprite, HeroKitCommon.GetWidthForField(60, 150)); break; case 3: // scene items[i].value = SimpleLayout.ObjectField(items[i].value as SceneAsset, HeroKitCommon.GetWidthForField(60, 150)); if (items[i].value != null) { // add the scene to the editor build settings if it doesn't already exist there. HeroKitCommon.AddSceneToBuildSettings(items[i].value as SceneAsset); } break; case 4: // particle system items[i].value = SimpleLayout.ObjectField(items[i].value as ParticleSystem, HeroKitCommon.GetWidthForField(60, 150)); break; case 5: // script items[i].value = SimpleLayout.ObjectField(items[i].value as MonoScript, HeroKitCommon.GetWidthForField(60, 150)); break; } } SimpleLayout.EndVertical(); }
// -------------------------------------------------------------- // Methods (Fields) // -------------------------------------------------------------- /// <summary> /// A field for a hero property file. /// </summary> private static void DrawItemType() { SimpleLayout.BeginHorizontal(); SimpleLayout.Label("Item Type:"); SimpleLayout.Space(13); propertyBlock.propertyTemplate = SimpleLayout.ObjectField(propertyBlock.propertyTemplate, HeroKitCommon.GetWidthForField(120)); SimpleLayout.Space(); SimpleLayout.EndHorizontal(); // SHOW FIELDS FOR SPECIFIC HERO PROPERTY // if hero property has been removed, sanitize properties list if (propertyBlock.propertyTemplate != null) { SimpleLayout.Space(5); SimpleLayout.Line(); } else { propertyBlock.itemProperties = new HeroList(); } }
/// <summary> /// Draw the body of the block. /// </summary> private static void DrawItems() { // exit early if there are no items if (items == null || items.Count == 0) { HeroKitCommon.DrawNoItemsInList(blockName); return; } SimpleLayout.BeginVertical(Box.StyleCanvasBox); // display items (move up, move down, int field, for (int i = 0; i < items.Count; i++) { SimpleLayout.BeginHorizontal(); HeroKitCommon.DrawListArrows(moveItemUp, moveItemDown, i); SimpleLayout.BeginVertical(); items[i].objectType = new UnityObjectTypeField().SetValues(items[i].objectType, HeroKitCommon.GetWidthForField(270, 150)); switch (items[i].objectType) { case 1: // audio items[i].value = SimpleLayout.ObjectField(items[i].value as AudioClip, HeroKitCommon.GetWidthForField(270, 150)); break; case 2: // sprite items[i].value = SimpleLayout.ObjectField(items[i].value as Sprite, HeroKitCommon.GetWidthForField(270, 150)); break; case 3: // scene items[i].value = SimpleLayout.ObjectField(items[i].value as SceneAsset, HeroKitCommon.GetWidthForField(270, 150)); if (items[i].value != null) { // add the scene to the editor build settings if it doesn't already exist there. HeroKitCommon.AddSceneToBuildSettings(items[i].value as SceneAsset); } break; case 4: // particle system items[i].value = SimpleLayout.ObjectField(items[i].value as ParticleSystem, HeroKitCommon.GetWidthForField(270, 150)); break; case 5: // mono script items[i].value = SimpleLayout.ObjectField(items[i].value as MonoScript, HeroKitCommon.GetWidthForField(270, 150)); break; } items[i].name = SimpleLayout.StringListField(items[i].name, HeroKitCommon.GetWidthForField(270, 150)); SimpleLayout.EndVertical(); HeroKitCommon.DrawListButtons(addItem, copyItem, pasteItem, deleteItem, i); SimpleLayout.EndHorizontal(); if (i != items.Count - 1) { SimpleLayout.Line(); } } SimpleLayout.EndVertical(); SimpleLayout.Space(20); }