public static void Options(Rect fullArea, Rect leftArea, Rect mainArea) { GUI.Box(fullArea, "", "backgroundBox"); GUILayout.BeginArea(fullArea); optionsScrollPos = GUILayout.BeginScrollView(optionsScrollPos); RPGMakerGUI.Title("Stat Options"); RPGMakerGUI.SubTitle("Exp Options"); RPGMakerGUI.Toggle("Allow Exp To Overflow", ref ASVT.AllowExpToOverflow); RPGMakerGUI.SubTitle("Stat Options"); ASVT.RegenInterval = RPGMakerGUI.FloatField("RegenInterval:", ASVT.RegenInterval); RPGMakerGUI.SubTitle("Titles"); ASVT.AttributeNameTitle = RPGMakerGUI.TextField("Attribute Title:", ASVT.AttributeNameTitle); ASVT.StatisticNameTitle = RPGMakerGUI.TextField("Statistic Title:", ASVT.StatisticNameTitle); ASVT.VitalNameTitle = RPGMakerGUI.TextField("Vital Title:", ASVT.VitalNameTitle); ASVT.TraitNameTitle = RPGMakerGUI.TextField("Trait Title:", ASVT.TraitNameTitle); RPGMakerGUI.SubTitle("Movement"); ASVT.JumpHeight = RPGMakerGUI.FloatField("Player Jump Height:", ASVT.JumpHeight); ASVT.BaseMovementSpeed = RPGMakerGUI.FloatField("Base Player Movement Speed:", ASVT.BaseMovementSpeed); ASVT.BaseNpcMovementSpeed = RPGMakerGUI.FloatField("Base NPC Movement Speed:", ASVT.BaseNpcMovementSpeed); if (RPGMakerGUI.Toggle("Use Stat as Movement Multiplier?", ref ASVT.UseStatForMovementSpeed)) { RPGMakerGUI.PopupID <Rm_StatisticDefintion>("Statistic:", ref ASVT.StatForMovementID, 1); RPGMakerGUI.Help("Move Speed = BaseMoveSpeed * Stat:", 1); } GUILayout.EndScrollView(); GUILayout.EndArea(); }
private static void ShowQuestRewardInfo(ref bool show, string prefix, QuestReward reward) { RPGMakerGUI.FoldoutList(ref show, prefix, reward.Items, Rm_RPGHandler.Instance.Repositories.Items.AllItems, "+ItemReward", "", "Click +ItemReward to add an item as a reward.", "ItemID"); RPGMakerGUI.FoldoutList(ref show, prefix + " (Craftable Items)", reward.CraftableItems, Rm_RPGHandler.Instance.Repositories.CraftableItems.AllItems, "+CraftItemReward", "", "Click +CraftItemReward to add a craftable item as a reward.", "ItemID"); RPGMakerGUI.FoldoutList(ref show, prefix + " (Quest Items)", reward.QuestItems, Rm_RPGHandler.Instance.Repositories.QuestItems.AllItems, "+QuestItemReward", "", "Click +QuestItemReward to add a quest item as a reward.", "ItemID"); reward.Exp = RPGMakerGUI.IntField("Exp Reward:", reward.Exp); reward.Gold = RPGMakerGUI.IntField("Gold Reward:", reward.Gold); if (RPGMakerGUI.Toggle("Gives Reputation?", ref reward.GivesReputation)) { RPGMakerGUI.PopupID <ReputationDefinition>("- Reputation", ref reward.Reputation.ReputationID); reward.Reputation.Value = RPGMakerGUI.IntField("- Amount", reward.Reputation.Value); } if (RPGMakerGUI.Toggle("Gives Trait Exp?", ref reward.GivesTraitExp)) { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait", ref reward.TraitID); reward.TraitExp = RPGMakerGUI.IntField("- Amount", reward.TraitExp); } if (RPGMakerGUI.Toggle("Unlocks Skill?", ref reward.UnlocksSkill)) { RPGMakerGUI.PopupID <Skill>("- Skill", ref reward.SkillID); } if (RPGMakerGUI.Toggle("Applys Status Effect?", ref reward.ApplysStatusEffect)) { RPGMakerGUI.PopupID <StatusEffect>("- Status Effect", ref reward.StatusEffectID); } }
public static void ProgressionGain(bool isHarvestable, ProgressionGain progressionGain, bool isCombatant = false) { GUILayout.BeginHorizontal(); RPGMakerGUI.Label(isHarvestable ? "Gains on Harvest:" : "Gains On Kill:"); progressionGain.GainExp = EditorGUILayout.ToggleLeft(" Exp?", progressionGain.GainExp, GUILayout.Width(55)); GUILayout.Space(15); progressionGain.GainSkillPoints = EditorGUILayout.ToggleLeft(" Skill Points?", progressionGain.GainSkillPoints, GUILayout.Width(90)); GUILayout.Space(15); progressionGain.GainTraitExp = EditorGUILayout.ToggleLeft(" Trait Exp?", progressionGain.GainTraitExp, GUILayout.Width(90)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); if (progressionGain.GainExp) { if (isCombatant && RPGMakerGUI.Toggle("Gain Exp with Exp Definition?", ref progressionGain.GainExpWithDefinition)) { RPGMakerGUI.PopupID <ExpDefinition>("Exp Definition:", ref progressionGain.GainExpWithDefinitionID, "ID", "Name", "ExpGained"); } else { progressionGain.ExpGained = RPGMakerGUI.IntField("- Exp ", progressionGain.ExpGained); } } if (progressionGain.GainSkillPoints) { if (isCombatant && RPGMakerGUI.Toggle("Gain Skill Points with Exp Definition?", ref progressionGain.GainSkillWithDefinition)) { RPGMakerGUI.PopupID <ExpDefinition>("Exp Definition:", ref progressionGain.GainSkillWithDefinitionID, "ID", "Name", "ExpGained"); } else { progressionGain.SkillPointsGained = RPGMakerGUI.IntField("- Skill Points: ", progressionGain.SkillPointsGained); } } if (progressionGain.GainTraitExp) { if (isCombatant && RPGMakerGUI.Toggle("Gain Trait Exp with Exp Definition?", ref progressionGain.GainTraitWithDefinition)) { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait:", ref progressionGain.TraitID); RPGMakerGUI.PopupID <ExpDefinition>("Exp Definition:", ref progressionGain.GainTraitWithDefinitionID, "ID", "Name", "ExpGained"); } else { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait:", ref progressionGain.TraitID); progressionGain.TraitExpGained = RPGMakerGUI.IntField("- Trait EXP: ", progressionGain.TraitExpGained); } } }
public static void Traits(Rect fullArea, Rect leftArea, Rect mainArea) { var list = Rm_RPGHandler.Instance.ASVT.TraitDefinitions; GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(mainArea, "", "backgroundBoxMain"); GUILayout.BeginArea(PadRect(leftArea, 0, 0)); RPGMakerGUI.ListArea(list, ref selectedTraitInfo, Rm_ListAreaType.Traits, false, false); GUILayout.EndArea(); GUILayout.BeginArea(mainArea); RPGMakerGUI.Title("Traits"); if (selectedTraitInfo != null) { GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); selectedTraitInfo.Name = RPGMakerGUI.TextField("Name: ", selectedTraitInfo.Name); selectedTraitInfo.Description = RPGMakerGUI.TextArea("Description: ", selectedTraitInfo.Description); RPGMakerGUI.PopupID <ExpDefinition>("Exp Definition:", ref selectedTraitInfo.ExpDefinitionID, "ID", "Name", "Trait"); selectedTraitInfo.StartingLevel = RPGMakerGUI.IntField("Starting Level: ", selectedTraitInfo.StartingLevel); selectedTraitInfo.Color = (Rm_UnityColors)RPGMakerGUI.EnumPopup("Color: ", selectedTraitInfo.Color); selectedTraitInfo.Image = RPGMakerGUI.ImageSelector("Image:", selectedTraitInfo.Image, ref selectedTraitInfo.ImagePath, true); GUILayout.EndVertical(); } else { EditorGUILayout.HelpBox("Add or select a new field to customise traits.", MessageType.Info); EditorGUILayout.HelpBox("What is a trait? A trait is a stat that has a Level with exp to level." + "\nExample use: Sword Mastery (Exp gained with Combat Node check that current" + " weapon is of type Sword)", MessageType.Info); } GUILayout.EndArea(); }
public static void Main(Rect fullArea, Rect leftArea, Rect mainArea) { leftAreaB = new Rect(leftArea.xMax + 5, leftArea.y, leftArea.width, leftArea.height); mainAreaAlt = new Rect(leftAreaB.xMax + 5, leftArea.y, mainArea.width - (leftAreaB.width + 5), leftArea.height); GUI.Box(leftArea, "", "backgroundBox"); GUI.Box(leftAreaB, "", "backgroundBox"); GUI.Box(mainAreaAlt, "", "backgroundBox"); GUILayout.BeginArea(PadRect(leftArea, 1, 1)); if (classPrefabs == null) { classPrefabs = Resources.LoadAll <GameObject>("Prefabs/Classes"); } try { //Get class prefabs in class prefab location foreach (var classPrefab in classPrefabs) { var ifSelected = selectedClass == classPrefab ? "listItemSelected" : "listItem"; if (GUILayout.Button(classPrefab.name, ifSelected)) { selectedClass = classPrefab; Debug.Log("clicked class " + selectedClass.name); } } } catch (Exception e) { Debug.Log("Failed loading class for costume designer, reloading class prefabs"); classPrefabs = Resources.LoadAll <GameObject>("Prefabs/Classes"); GUILayout.EndArea(); return; } GUILayout.FlexibleSpace(); if (GUILayout.Button("- Reload Classes -", "listItem")) { classPrefabs = Resources.LoadAll <GameObject>("Prefabs/Classes"); } GUILayout.EndArea(); GUILayout.BeginArea(PadRect(leftAreaB, 1, 2)); GUILayout.BeginHorizontal(); GUILayout.Label("Filter:", GUILayout.Width(35)); GUI.SetNextControlName("searchTerm"); _searchTerm = GUILayout.TextField(_searchTerm, "nodeTextField"); GUILayout.Space(1); GUILayout.EndHorizontal(); if (Event.current.type == EventType.Repaint) { if (GUI.GetNameOfFocusedControl() == "searchTerm" && _searchTerm == _searchTermPlaceholder) { _searchTerm = ""; } } hierarchyScrollView = GUILayout.BeginScrollView(hierarchyScrollView); if (selectedClass != null) { var children = selectedClass.GetAllChildren <Transform>(); if (_searchTerm != _searchTermPlaceholder) { children = children.Where(n => n.name.ToLower().Contains(_searchTerm.ToLower())).ToArray(); } foreach (var child in children) { var ifSelected = selectedChildTransform == child ? "listItemSelected" : "listItem"; if (GUILayout.Button(child.name, ifSelected)) { selectedChildTransform = child; } } } else { EditorGUILayout.HelpBox("Pick a class to choose a child transform to enable/disable depending on an equipped item.", MessageType.Info); } GUILayout.EndScrollView(); GUILayout.EndArea(); GUILayout.BeginArea(mainAreaAlt); if (selectedChildTransform != null) { var classDef = Rm_RPGHandler.Instance.Player.CharacterDefinitions.FirstOrDefault(c => c.Name == selectedClass.name); if (classDef != null) { var result = RPGMakerGUI.FoldoutToolBar(ref showItems, "Items required to show", "+Item"); if (showItems) { var defs = classDef.EquipmentInfo.Definitions.Where(d => d.NameOfTransform == selectedChildTransform.name).ToList(); for (int i = 0; i < defs.Count; i++) { var dynamicDef = defs[i]; GUILayout.BeginHorizontal(); //RPGMakerGUI.PopupID<Item>("Item:", ref dynamicDef.RequiredEquippedItemId); RPGMakerGUI.PopupID <Item>("Item:", ref dynamicDef.RequiredEquippedItemId, "ID", "Name", "CraftItemAndQuest"); if (RPGMakerGUI.DeleteButton(25)) { classDef.EquipmentInfo.Definitions.Remove(dynamicDef); i--; } GUILayout.EndHorizontal(); RPGMakerGUI.Toggle("Only In Weapon Slot?", ref dynamicDef.OnlyWeaponSlot); if (!dynamicDef.OnlyWeaponSlot && RPGMakerGUI.Toggle("Only In Specific Slot?", ref dynamicDef.SpecificSlot)) { RPGMakerGUI.PopupID <SlotDefinition>("Slot:", ref dynamicDef.SlotId); } GUILayout.Space(20); } foreach (var dynamicDef in defs) { } if (result == 0) { classDef.EquipmentInfo.Definitions.Add(new DynamicEquipmentDefinition(selectedChildTransform.name)); } if (!classDef.EquipmentInfo.Definitions.Any()) { EditorGUILayout.HelpBox("Click +Item to add an item which will activate this transform", MessageType.Info); } RPGMakerGUI.EndFoldout(); } } else { EditorGUILayout.HelpBox("This class does not exist in your class definitions. Rename the prefab in 'Resources/Prefabs/Classes' to be the same as your class.", MessageType.Error); } } else { EditorGUILayout.HelpBox("Pick a child transform to choose an item for it to depend on.", MessageType.Info); } GUILayout.EndArea(); }
private static QuestCondition ShowConditionInfo(QuestCondition condition) { var oldtype = condition.ConditionType; condition.ConditionType = (ConditionType)RPGMakerGUI.EnumPopup("Condition Type:", condition.ConditionType); if (condition.ConditionType != oldtype) { //TODO: if no longer interact node tree than delete that node tree switch (condition.ConditionType) { case ConditionType.Kill: condition = new KillCondition(); break; case ConditionType.Item: condition = new ItemCondition(); break; case ConditionType.Interact: condition = new InteractCondition(); break; case ConditionType.Deliver: condition = new DeliverCondition(); break; case ConditionType.Custom: condition = new CustomCondition(); break; default: throw new ArgumentOutOfRangeException(); } } var killCondition = condition as KillCondition; var itemCondition = condition as ItemCondition; var interactCondition = condition as InteractCondition; var deliverCondition = condition as DeliverCondition; var customCondition = condition as CustomCondition; if (killCondition != null) { if (Rm_RPGHandler.Instance.Combat.NPCsCanFight && Rm_RPGHandler.Instance.Combat.CanAttackNPcs) { RPGMakerGUI.Toggle("Is NPC?", ref killCondition.IsNPC); } else { killCondition.IsNPC = false; } if (killCondition.IsNPC) { RPGMakerGUI.PopupID <NonPlayerCharacter>("NPC to Kill:", ref killCondition.CombatantID); } else { RPGMakerGUI.PopupID <CombatCharacter>("Enemy to Kill:", ref killCondition.CombatantID); } killCondition.NumberToKill = RPGMakerGUI.IntField("Number To Kill:", killCondition.NumberToKill); } if (itemCondition != null) { itemCondition.ItemType = (ItemConditionType)RPGMakerGUI.EnumPopup("Required Item Type:", itemCondition.ItemType); if (itemCondition.ItemType == ItemConditionType.CraftItem) { RPGMakerGUI.PopupID <Item>("CraftItem To Collect:", ref itemCondition.ItemToCollectID, "ID", "Name", "Craft"); } else if (itemCondition.ItemType == ItemConditionType.QuestItem) { RPGMakerGUI.PopupID <Item>("Quest Item To Collect:", ref itemCondition.ItemToCollectID, "ID", "Name", "Quest"); if (Rm_RPGHandler.Instance.Combat.NPCsCanFight && Rm_RPGHandler.Instance.Combat.CanAttackNPcs) { RPGMakerGUI.Toggle("NPC Drops Items?", ref itemCondition.NPCDropsItem); } else { itemCondition.NPCDropsItem = false; } if (itemCondition.NPCDropsItem) { RPGMakerGUI.PopupID <NonPlayerCharacter>("NPC that Drops Item:", ref itemCondition.CombatantIDThatDropsItem); } else { RPGMakerGUI.PopupID <CombatCharacter>("Enemy that Drops Item:", ref itemCondition.CombatantIDThatDropsItem); } } else if (itemCondition.ItemType == ItemConditionType.Item) { RPGMakerGUI.PopupID <Item>("Item To Collect:", ref itemCondition.ItemToCollectID); } itemCondition.NumberToObtain = RPGMakerGUI.IntField("Number To Obtain:", itemCondition.NumberToObtain); } if (interactCondition != null) { if (RPGMakerGUI.Toggle("Talk to NPC?", ref interactCondition.IsNpc)) { RPGMakerGUI.PopupID <NonPlayerCharacter>("NPC to talk to:", ref interactCondition.InteractableID); } else { RPGMakerGUI.PopupID <Interactable>("Object to interact with:", ref interactCondition.InteractableID); } if (GUILayout.Button("Open Interaction Node Tree", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == interactCondition.InteractionNodeTreeID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); Debug.Log("ExistingTree null? " + existingTree == null); existingTree.ID = interactCondition.ID; Debug.Log(existingTree.ID + ":::" + existingTree.Name); var curSelectedQuest = Rme_Main.Window.CurrentPageIndex == 1 ? selectedQuestChainQuest : selectedQuest; //todo: need unique name existingTree.Name = curSelectedQuest.Name + "Interact"; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(interactCondition.ID); interactCondition.InteractionNodeTreeID = existingTree.ID; } } if (deliverCondition != null) { RPGMakerGUI.PopupID <Item>("Quest Item To Deliver:", ref deliverCondition.ItemToDeliverID, "ID", "Name", "Quest"); if (RPGMakerGUI.Toggle("Deliver to NPC?", ref deliverCondition.DeliverToNPC)) { RPGMakerGUI.PopupID <NonPlayerCharacter>("NPC to deliver to:", ref deliverCondition.InteractableToDeliverToID); } else { RPGMakerGUI.PopupID <Interactable>("Object to deliver with:", ref deliverCondition.InteractableToDeliverToID); } if (GUILayout.Button("Open Interaction On Deliver", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == deliverCondition.InteractionNodeTreeID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); existingTree.ID = deliverCondition.ID; //todo: need unique name var curSelectedQuest = Rme_Main.Window.CurrentPageIndex == 1 ? selectedQuestChainQuest : selectedQuest; existingTree.Name = curSelectedQuest.Name + "Interact"; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(deliverCondition.ID); deliverCondition.InteractionNodeTreeID = existingTree.ID; } } if (customCondition != null) { var customVar = customCondition.CustomVariableRequirement; RPGMakerGUI.PopupID <Rmh_CustomVariable>("Custom Variable:", ref customVar.VariableID); var foundCvar = Rm_RPGHandler.Instance.DefinedVariables.Vars.FirstOrDefault(v => v.ID == customCondition.CustomVariableRequirement.VariableID); if (foundCvar != null) { switch (foundCvar.VariableType) { case Rmh_CustomVariableType.Float: customVar.FloatValue = RPGMakerGUI.FloatField("Required Value:", customVar.FloatValue); break; case Rmh_CustomVariableType.Int: customVar.IntValue = RPGMakerGUI.IntField("Required Value:", customVar.IntValue); break; case Rmh_CustomVariableType.String: customVar.StringValue = RPGMakerGUI.TextField("Required Value:", customVar.StringValue); break; case Rmh_CustomVariableType.Bool: selectedVarSetterBoolResult = customVar.BoolValue ? 0 : 1; selectedVarSetterBoolResult = EditorGUILayout.Popup("Required Value:", selectedVarSetterBoolResult, new[] { "True", "False" }); customVar.BoolValue = selectedVarSetterBoolResult == 0; break; default: throw new ArgumentOutOfRangeException(); } } } if (condition.ConditionType != ConditionType.Custom) { RPGMakerGUI.Toggle("Use Custom Tracking Text:", ref condition.UseCustomText); } else { condition.UseCustomText = true; } if (condition.UseCustomText) { condition.CustomText = RPGMakerGUI.TextField("Custom Incomplete Text:", condition.CustomText); condition.CustomCompletedText = RPGMakerGUI.TextField("Custom Completed Text:", condition.CustomCompletedText); } GUILayout.Space(5); return(condition); }
private static void QuestDetails(Quest quest, bool inQuestChain) { if (RPGMakerGUI.Foldout(ref showSelectedQuestDetails, "Selected Quest - Main Details")) { GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.MaxWidth(85)); quest.Image.Image = RPGMakerGUI.ImageSelector("", quest.Image.Image, ref quest.Image.ImagePath); GUILayout.EndVertical(); GUILayout.BeginVertical(GUILayout.ExpandWidth(true)); quest.Name = RPGMakerGUI.TextField("Name: ", quest.Name); quest.Description = RPGMakerGUI.TextArea("Description:", quest.Description); quest.ConditionMode = (QuestConditionMode)RPGMakerGUI.EnumPopup("Condition Mode:", quest.ConditionMode); if (GUILayout.Button("Open Dialog/Event On Accept", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == quest.DialogNodeTreeID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); existingTree.ID = quest.ID; existingTree.Name = quest.Name; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(quest.ID); quest.DialogNodeTreeID = existingTree.ID; } if (GUILayout.Button("Open Dialog/Event On Complete", "genericButton", GUILayout.MaxHeight(30))) { var trees = Rm_RPGHandler.Instance.Nodes.DialogNodeBank.NodeTrees; var existingTree = trees.FirstOrDefault(t => t.ID == quest.CompletedDialogNodeTreeID); if (existingTree == null) { existingTree = NodeWindow.GetNewTree(NodeTreeType.Dialog); existingTree.ID = "complete_" + quest.ID; existingTree.Name = "Completed " + quest.Name; trees.Add(existingTree); } DialogNodeWindow.ShowWindow(existingTree.ID); quest.CompletedDialogNodeTreeID = existingTree.ID; } GUILayout.Space(5); RPGMakerGUI.Toggle("Player Keeps Quest Items?", ref quest.PlayerKeepsQuestItems); RPGMakerGUI.Toggle("Is Repeatable?", ref quest.Repeatable); RPGMakerGUI.Toggle("Can Abandon?", ref quest.CanAbandon); if (RPGMakerGUI.Toggle("Has Time Limit?", ref quest.HasTimeLimit)) { quest.TimeLimit = RPGMakerGUI.FloatField("- Time Limit:", quest.TimeLimit); } if (RPGMakerGUI.Toggle("Run Event On Accept?", ref quest.RunEventOnAccept)) { RPGMakerGUI.PopupID <NodeChain>("- Event:", ref quest.EventOnAcceptID); } if (RPGMakerGUI.Toggle("Run Event On Completion?", ref quest.RunEventOnComplete)) { RPGMakerGUI.PopupID <NodeChain>("- Event:", ref quest.EventOnCompletionId); } if (RPGMakerGUI.Toggle("Run Event On Cancel?", ref quest.RunEventOnCancel)) { RPGMakerGUI.PopupID <NodeChain>("- Event:", ref quest.EventOnCancelId); } GUILayout.Space(5); GUILayout.EndVertical(); GUILayout.EndHorizontal(); RPGMakerGUI.EndFoldout(); } if (RPGMakerGUI.Foldout(ref showSelectedQuestReq, "Requirements")) { List <Quest> availableReqQuests = new List <Quest>(); if (inQuestChain) { availableReqQuests = Rm_RPGHandler.Instance.Repositories.Quests.AllQuests.Where(q => selectedQuestChain.QuestsInChain.FirstOrDefault(qu => qu.ID == q.ID) == null).ToList(); } else { availableReqQuests = Rm_RPGHandler.Instance.Repositories.Quests.AllQuests; } RPGMakerGUI.FoldoutList(ref showReqAcceptedQuests, "Required Completed Quests", quest.Requirements.QuestCompletedIDs, availableReqQuests, "+Quest", "", "Click +Quest to add a requirement for a completed quest."); RPGMakerGUI.FoldoutList(ref showCustomVarReqSetters, "Custom Var Requirements", quest.Requirements.CustomRequirements, Rm_RPGHandler.Instance.DefinedVariables.Vars, "+VariableReq", "", "Click +VariableReq to add a varaible requirement", "VariableID", "Name", "ID", "Name", false, "Value"); RPGMakerGUI.SubTitle("More Requirements"); if (RPGMakerGUI.Toggle("Require Player Level:", ref quest.Requirements.RequireLevel)) { quest.Requirements.LevelRequired = RPGMakerGUI.IntField("- Required Level:", quest.Requirements.LevelRequired); } if (RPGMakerGUI.Toggle("Require Player Class:", ref quest.Requirements.RequireClass)) { RPGMakerGUI.PopupID <Rm_ClassNameDefinition>("- Class ID:", ref quest.Requirements.RequiredClassID); } RPGMakerGUI.Toggle("Require Reputation Above Amount :", ref quest.Requirements.ReqRepAboveValue); if (quest.Requirements.ReqRepAboveValue) { quest.Requirements.ReqRepBelowValue = false; } RPGMakerGUI.Toggle("Require Reputation Below Amount :", ref quest.Requirements.ReqRepBelowValue); if (quest.Requirements.ReqRepBelowValue) { quest.Requirements.ReqRepAboveValue = false; } if (quest.Requirements.ReqRepAboveValue || quest.Requirements.ReqRepBelowValue) { RPGMakerGUI.PopupID <ReputationDefinition>("- Reputation Faction:", ref quest.Requirements.ReputationFactionID); var prefix = quest.Requirements.ReqRepAboveValue ? "Above " : "Below "; quest.Requirements.ReputationValue = RPGMakerGUI.IntField("- " + prefix + "Amount:", quest.Requirements.ReputationValue); } if (RPGMakerGUI.Toggle("Require Trait Level?", ref quest.Requirements.RequireTraitLevel)) { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait:", ref quest.Requirements.RequiredTraitID); quest.Requirements.TraitLevel = RPGMakerGUI.IntField("- Level:", quest.Requirements.TraitLevel); } if (RPGMakerGUI.Toggle("Require Learnt Skill?", ref quest.Requirements.RequireLearntSkill)) { RPGMakerGUI.PopupID <Skill>("- Skill:", ref quest.Requirements.LearntSkillID); } RPGMakerGUI.EndFoldout(); } var result = RPGMakerGUI.FoldoutToolBar(ref showSelectedQuestMainConditions, "Quest Conditions", "+Condition", false, false); if (showSelectedQuestMainConditions) { if (quest.Conditions.Count == 0) { EditorGUILayout.HelpBox("Click +Condition to add a new quest condition.", MessageType.Info); } for (int index = 0; index < quest.Conditions.Count; index++) { GUILayout.BeginVertical("foldoutBox"); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (index > 0 && GUILayout.Button("Move Up", "genericButton")) { GUI.FocusControl(""); var curCondition = quest.Conditions[index]; var prevCondition = quest.Conditions[index - 1]; quest.Conditions[index - 1] = curCondition; quest.Conditions[index] = prevCondition; return; } if (index < quest.Conditions.Count - 1 && GUILayout.Button("Move Down", "genericButton")) { GUI.FocusControl(""); var curCondition = quest.Conditions[index]; var nextCondition = quest.Conditions[index + 1]; quest.Conditions[index + 1] = curCondition; quest.Conditions[index] = nextCondition; return; } GUILayout.EndHorizontal(); quest.Conditions[index] = ShowConditionInfo(quest.Conditions[index]); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Delete", "genericButton", GUILayout.Height(25), GUILayout.Width(100))) { GUI.FocusControl(""); quest.Conditions.RemoveAt(index); index--; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } if (result == 0) { quest.Conditions.Add(new KillCondition()); } RPGMakerGUI.EndFoldout(); } if (RPGMakerGUI.Foldout(ref showFinalCondition, "Final Condition")) { if (RPGMakerGUI.Toggle("Enable Final Condition?", ref quest.HasFinalCondition)) { quest.FinalCondition = ShowConditionInfo(quest.FinalCondition); } RPGMakerGUI.EndFoldout(); } if (RPGMakerGUI.Foldout(ref showBonusCondition, "Bonus Condition")) { if (RPGMakerGUI.Toggle("Enable Bonus Condition?", ref quest.HasBonusCondition)) { quest.BonusCondition = ShowConditionInfo(quest.BonusCondition); if (RPGMakerGUI.Toggle("- Has Time Limit", ref quest.BonusHasTimeLimit)) { quest.BonusTimeLimit = RPGMakerGUI.FloatField(" - Time Limit:", quest.BonusTimeLimit); } } RPGMakerGUI.EndFoldout(); } if (RPGMakerGUI.Foldout(ref showQuestRewards, "Rewards")) { ShowQuestRewardInfo(ref showQuestMainRewards, "Item Rewards", quest.Rewards); RPGMakerGUI.EndFoldout(); } if (quest.HasBonusCondition) { if (RPGMakerGUI.Foldout(ref showBonusRewards, "Bonus Rewards")) { ShowQuestRewardInfo(ref showQuestBonusRewards, "Bonus Condition Reward", quest.BonusRewards); RPGMakerGUI.EndFoldout(); } } RPGMakerGUI.FoldoutList(ref showCustomVarSetters, "Set Custom Vars on Completion", quest.SetCustomVariablesOnCompletion, Rm_RPGHandler.Instance.DefinedVariables.Vars, "+VariableSetter", "", "Click +VariableSetter to add a varaible setter", "VariableID", "Name", "ID", "Name"); }
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(); }