public static void Enemies(Rect fullArea, Rect leftArea, Rect mainArea) { var list = Rm_RPGHandler.Instance.Repositories.Enemies.AllEnemies; GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(mainArea, "", "backgroundBoxMain"); GUILayout.BeginArea(PadRect(leftArea, 0, 0)); RPGMakerGUI.ListArea(list, ref selectedCharInfo, Rm_ListAreaType.Enemies, false, true); GUILayout.EndArea(); GUILayout.BeginArea(mainArea); RPGMakerGUI.Title("Enemies"); if (selectedCharInfo != null) { RPGMakerGUI.BeginScrollView(); if (RPGMakerGUI.Foldout(ref mainInfoFoldout, "Main Info")) { GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.MaxWidth(85)); selectedCharInfo.Image = RPGMakerGUI.ImageSelector("", selectedCharInfo.Image, ref selectedCharInfo.ImagePath); GUILayout.EndVertical(); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); selectedCharInfo.ID = RPGMakerGUI.TextField("ID: ", selectedCharInfo.ID); selectedCharInfo.Name = RPGMakerGUI.TextField("Name: ", selectedCharInfo.Name); GUILayout.BeginHorizontal(); gameObject = RPGMakerGUI.PrefabSelector("Enemy Prefab:", gameObject, ref selectedCharInfo.CharPrefabPath); gameObject = RPGMakerGUI.PrefabGeneratorButton(Rmh_PrefabType.Enemy, gameObject, ref selectedCharInfo.CharPrefabPath, null, selectedCharInfo.ID); GUILayout.EndHorizontal(); Rme_Combatants.CombatantDetails(selectedCharInfo); GUILayout.Space(5); GUILayout.EndVertical(); GUILayout.EndHorizontal(); } if (mainInfoFoldout) { RPGMakerGUI.EndFoldout(); } Rme_Combatants.Projectile(selectedCharInfo); Rme_Combatants.Animations(selectedCharInfo); Rme_Combatants.CombatStats(selectedCharInfo); Rme_Combatants.Loot(selectedCharInfo); RPGMakerGUI.EndScrollView(); } else { EditorGUILayout.HelpBox("Add or select a new field to customise Enemy Characters.", MessageType.Info); } GUILayout.EndArea(); }
public static void InteractableObjects(Rect fullArea, Rect leftArea, Rect mainArea) { var list = Rm_RPGHandler.Instance.Repositories.Interactable.AllInteractables; GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(mainArea, "", "backgroundBoxMain"); GUILayout.BeginArea(PadRect(leftArea, 0, 0)); RPGMakerGUI.ListArea(list, ref selectedInteractable, Rm_ListAreaType.Interactables, false, true); GUILayout.EndArea(); GUILayout.BeginArea(mainArea); RPGMakerGUI.Title("Interactables"); if (selectedInteractable != null) { RPGMakerGUI.TextField("ID: ", selectedInteractable.ID); selectedInteractable.Name = RPGMakerGUI.TextField("Name: ", selectedInteractable.Name); GUILayout.BeginHorizontal(); gameObject = RPGMakerGUI.PrefabSelector("Prefab:", gameObject, ref selectedInteractable.PrefabPath); gameObject = RPGMakerGUI.PrefabGeneratorButton(Rmh_PrefabType.Interactable, gameObject, ref selectedInteractable.PrefabPath, null, selectedInteractable.ID); GUILayout.EndHorizontal(); selectedInteractable.Image = RPGMakerGUI.ImageSelector("Image", selectedInteractable.Image, ref selectedInteractable.ImagePath, true); if (GUILayout.Button("Open Interaction Window", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == selectedInteractable.ID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); existingTree.ID = selectedInteractable.ID; existingTree.Name = selectedInteractable.Name; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(selectedInteractable.ID); selectedInteractable.ConversationNodeId = existingTree.ID; } } else { EditorGUILayout.HelpBox("Add or select a new field to customise interactables.", MessageType.Info); } GUILayout.EndArea(); }
public static void NPCs(Rect fullArea, Rect leftArea, Rect mainArea) { var list = Rm_RPGHandler.Instance.Repositories.Interactable.AllNpcs; GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(mainArea, "", "backgroundBoxMain"); GUILayout.BeginArea(PadRect(leftArea, 0, 0)); RPGMakerGUI.ListArea(list, ref selectedNPCInfo, Rm_ListAreaType.NPCs, false, true); GUILayout.EndArea(); GUILayout.BeginArea(mainArea); RPGMakerGUI.Title("NPCs"); if (selectedCharInfo != null) { RPGMakerGUI.BeginScrollView(); if (RPGMakerGUI.Foldout(ref mainInfoFoldout, "Main Info")) { GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.MaxWidth(85)); selectedCharInfo.Image = RPGMakerGUI.ImageSelector("", selectedCharInfo.Image, ref selectedCharInfo.ImagePath); GUILayout.EndVertical(); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); RPGMakerGUI.TextField("ID: ", selectedCharInfo.ID); selectedCharInfo.Name = RPGMakerGUI.TextField("Name: ", selectedCharInfo.Name); GUILayout.BeginHorizontal(); gameObject = RPGMakerGUI.PrefabSelector("NPC Prefab:", gameObject, ref selectedCharInfo.CharPrefabPath); gameObject = RPGMakerGUI.PrefabGeneratorButton(Rmh_PrefabType.NPC, gameObject, ref selectedCharInfo.CharPrefabPath, null, selectedCharInfo.ID); GUILayout.EndHorizontal(); if (GUILayout.Button("Open Interaction Window", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == selectedCharInfo.ID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); existingTree.ID = selectedCharInfo.ID; existingTree.Name = selectedCharInfo.Name; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(selectedCharInfo.ID); selectedNPCInfo.Interaction.ConversationNodeId = existingTree.ID; } if (Rm_RPGHandler.Instance.Combat.NPCsCanFight) { if (RPGMakerGUI.Toggle("This NPC Can Fight?", ref selectedNPCInfo.CanFight)) { selectedNPCInfo.CanBeKilled = RPGMakerGUI.Toggle("Can be Perma-killed? ", selectedNPCInfo.CanBeKilled); Rme_Combatants.CombatantDetails(selectedNPCInfo); } } GUILayout.Space(5); GUILayout.EndVertical(); GUILayout.EndHorizontal(); } if (mainInfoFoldout) { RPGMakerGUI.EndFoldout(); } Rme_Combatants.Animations(selectedNPCInfo); if (Rm_RPGHandler.Instance.Combat.NPCsCanFight && selectedNPCInfo.CanFight) { Rme_Combatants.CombatStats(selectedNPCInfo); Rme_Combatants.Loot(selectedNPCInfo); } RPGMakerGUI.EndScrollView(); } else { EditorGUILayout.HelpBox("Add or select a new field to customise Enemy Characters.", MessageType.Info); } GUILayout.EndArea(); }
public static void HarvestableObjects(Rect fullArea, Rect leftArea, Rect mainArea) { var list = Rm_RPGHandler.Instance.Harvesting.HarvestableDefinitions; GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(mainArea, "", "backgroundBoxMain"); GUILayout.BeginArea(PadRect(leftArea, 0, 0)); RPGMakerGUI.ListArea(list, ref selectedHarvestable, Rm_ListAreaType.Harvestables, false, true); GUILayout.EndArea(); GUILayout.BeginArea(mainArea); areaScrollPos = GUILayout.BeginScrollView(areaScrollPos); RPGMakerGUI.Title("Harvestable Objects"); if (selectedHarvestable != null) { RPGMakerGUI.TextField("ID: ", selectedHarvestable.ID); selectedHarvestable.Name = RPGMakerGUI.TextField("Name: ", selectedHarvestable.Name); GUILayout.BeginHorizontal(); gameObject = RPGMakerGUI.PrefabSelector("Prefab:", gameObject, ref selectedHarvestable.PrefabPath); gameObject = RPGMakerGUI.PrefabGeneratorButton(Rmh_PrefabType.Harvest, gameObject, ref selectedHarvestable.PrefabPath, null, selectedHarvestable.ID); GUILayout.EndHorizontal(); if (RPGMakerGUI.Toggle("Regenerates harvestables?", ref selectedHarvestable.RegensResources)) { selectedHarvestable.TimeInSecToRegen = RPGMakerGUI.FloatField("Time before regen:", selectedHarvestable.TimeInSecToRegen); selectedHarvestable.AmountRegenerated = RPGMakerGUI.IntField("Amount regenerated:", selectedHarvestable.AmountRegenerated); selectedHarvestable.MaxAtOnce = RPGMakerGUI.IntField("Max At Once:", selectedHarvestable.MaxAtOnce); } else { selectedHarvestable.MinObtainable = RPGMakerGUI.IntField("Min Total Quantity Obtainable:", selectedHarvestable.MinObtainable); selectedHarvestable.MaxObtainable = RPGMakerGUI.IntField("Max Total Quantity Obtainable:", selectedHarvestable.MaxObtainable); } if (RPGMakerGUI.Toggle("Is Quest Item?", ref selectedHarvestable.IsQuestItem)) { RPGMakerGUI.PopupID <Quest>("Accepted Quest Required To Loot:", ref selectedHarvestable.QuestAcceptedID); RPGMakerGUI.PopupID <Item>("Harvested Quest Item:", ref selectedHarvestable.HarvestedObjectID, "ID", "Name", "Quest"); if (!string.IsNullOrEmpty(selectedHarvestable.HarvestedObjectID)) { var item = Rm_RPGHandler.Instance.Repositories.QuestItems.AllItems.First(i => i.ID == selectedHarvestable.HarvestedObjectID); var stackable = item as IStackable; if (stackable != null) { selectedHarvestable.MinAmountGained = RPGMakerGUI.IntField("Min Quantity Gained:", selectedHarvestable.MinAmountGained); selectedHarvestable.MaxAmountGained = RPGMakerGUI.IntField("Max Quantity Gained:", selectedHarvestable.MaxAmountGained); } } } else { RPGMakerGUI.PopupID <Item>("Harvested Item:", ref selectedHarvestable.HarvestedObjectID); if (!string.IsNullOrEmpty(selectedHarvestable.HarvestedObjectID)) { var item = Rm_RPGHandler.Instance.Repositories.Items.AllItems.First(i => i.ID == selectedHarvestable.HarvestedObjectID); var stackable = item as IStackable; if (stackable != null) { selectedHarvestable.MinAmountGained = RPGMakerGUI.IntField("Min Quantity Gained:", selectedHarvestable.MinAmountGained); selectedHarvestable.MaxAmountGained = RPGMakerGUI.IntField("Max Quantity Gained:", selectedHarvestable.MaxAmountGained); } } } selectedHarvestable.HarvestSound = RPGMakerGUI.AudioClipSelector("Harvesting Sound:", selectedHarvestable.HarvestSound, ref selectedHarvestable.HarvestingSoundPath); selectedHarvestable.TimeToHarvest = RPGMakerGUI.FloatField("Time to harvest:", selectedHarvestable.TimeToHarvest); if (RPGMakerGUI.Toggle("Require Level To Harvest:", ref selectedHarvestable.RequireLevel)) { selectedHarvestable.LevelRequired = RPGMakerGUI.IntField("- Required Level", selectedHarvestable.LevelRequired); } if (RPGMakerGUI.Toggle("Require Trait Level To Harvest:", ref selectedHarvestable.RequireTraitLevel)) { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait", ref selectedHarvestable.RequiredTraitID); selectedHarvestable.TraitLevelRequired = RPGMakerGUI.IntField("- Required Trait Level", selectedHarvestable.TraitLevelRequired); } Rme_Main_General.ProgressionGain(true, selectedHarvestable.ProgressionGain); if (RPGMakerGUI.Foldout(ref showHarvestAnims, "Animations")) { foreach (var classHarvestAnim in selectedHarvestable.ClassHarvestingAnims) { var classInfo = RPG.Player.GetCharacterDefinition(classHarvestAnim.ClassID); var className = classInfo.Name; if (classInfo.AnimationType == RPGAnimationType.Legacy) { classHarvestAnim.LegacyAnim = RPGMakerGUI.TextField(className + " Animation:", classHarvestAnim.LegacyAnim); } else { GUILayout.BeginHorizontal(); classHarvestAnim.AnimNumber = RPGMakerGUI.IntField(className + "Anim AnimNumber:", classHarvestAnim.AnimNumber); GUILayout.EndHorizontal(); } } RPGMakerGUI.EndFoldout(); } } else { EditorGUILayout.HelpBox("Add or select a new field to customise harvestable objects.", MessageType.Info); } GUILayout.EndScrollView(); GUILayout.EndArea(); }