private void OnEnable() { // Reload skills database SkillDatabase.LoadSkills(); skillNames = SkillDatabase.FindSkills(string.Empty); PlayerSkills playerSkills = target as PlayerSkills; List <string> invalidSkillNames = new List <string>(); if (playerSkills.skillNames == null) { playerSkills.skillNames = new string[0]; } foreach (string skillName in playerSkills.skillNames) { if (skillNames.Contains(skillName)) { skillNames.Remove(skillName); } else { invalidSkillNames.Add(skillName); } } List <string> newSkillNames = new List <string>(); newSkillNames.AddRange(playerSkills.skillNames); foreach (string invalidSkillName in invalidSkillNames) { newSkillNames.Remove(invalidSkillName); } playerSkills.skillNames = newSkillNames.ToArray(); }
private void EditSkills() { EditorGUILayout.Space(); EditorGUILayout.LabelField("Skills"); EditorGUILayout.LabelField("To give a skill a higher chance of being"); EditorGUILayout.LabelField("used add it in multiple times."); EditorGUILayout.Space(); SerializedObject skills = new SerializedObject(Selection.activeGameObject.GetComponent <EnemySkills>()); SerializedProperty skillList = skills.FindProperty("skillNames"); if (!SkillDatabase.isLoaded) { SkillDatabase.LoadSkills(); } int skillCount = skillList.arraySize; int deleteTarget = -1; for (int i = 0; i < skillCount; i++) { SerializedProperty currentSkillName = skillList.GetArrayElementAtIndex(i); SkillDescriptor currentSkill = SkillDatabase.GetSkill(currentSkillName.stringValue); GUILayout.BeginHorizontal(); GUILayout.Label(currentSkill.displayText); if (GUILayout.Button("Remove")) { deleteTarget = i; } GUILayout.EndHorizontal(); } if (deleteTarget > -1) { skillList.DeleteArrayElementAtIndex(deleteTarget); } //put all skills into a combo box for selection List <SkillDescriptor> allSkills = SkillDatabase.GetAllSkills(); string[] skillDisplay = new string[allSkills.Count]; for (int i = 0; i < allSkills.Count; i++) { skillDisplay[i] = allSkills[i].displayText; } GUILayout.BeginHorizontal(); currentSelectedPopUpSkill = EditorGUILayout.Popup(currentSelectedPopUpSkill, skillDisplay); if (GUILayout.Button("Add")) { int targetIndex = skillList.arraySize; skillList.InsertArrayElementAtIndex(targetIndex); SerializedProperty newSkill = skillList.GetArrayElementAtIndex(targetIndex); newSkill.stringValue = allSkills[currentSelectedPopUpSkill].name; } skills.ApplyModifiedProperties(); }
// Use this for initialization void Start() { if (!SkillDatabase.isLoaded) { SkillDatabase.LoadSkills(); } skills = new SkillDescriptor[skillNames.Length]; for (int i = 0; i < skillNames.Length; i++) { skills[i] = SkillDatabase.GetSkill(skillNames[i]); } }
private void OnEnable() { // "What's this?" // This supports the effect expression interpreter. // We have to provide a list of valid variable names. // The values aren't important, since we're only looking for parse validity, // so we use 0 for everything. // This is the list of variables the user can enter into expression formulas // for effect magnitudes. //fixing a bug where this is being called more than once validVariables.Clear(); validVariables.Add("SOURCE_STR", 0); validVariables.Add("SOURCE_CON", 0); validVariables.Add("SOURCE_WIL", 0); validVariables.Add("SOURCE_INT", 0); validVariables.Add("SOURCE_HP", 0); validVariables.Add("SOURCE_MP", 0); validVariables.Add("SOURCE_END", 0); validVariables.Add("SOURCE_RCT", 0); validVariables.Add("SOURCE_LVL", 0); validVariables.Add("SOURCE_PARMOR", 0); validVariables.Add("SOURCE_MARMOR", 0); validVariables.Add("TARGET_STR", 0); validVariables.Add("TARGET_CON", 0); validVariables.Add("TARGET_WIL", 0); validVariables.Add("TARGET_INT", 0); validVariables.Add("TARGET_HP", 0); validVariables.Add("TARGET_MP", 0); validVariables.Add("TARGET_END", 0); validVariables.Add("TARGET_RCT", 0); validVariables.Add("TARGET_LVL", 0); validVariables.Add("TARGET_PARMOR", 0); validVariables.Add("TARGET_MARMOR", 0); effectDisplayNames.Clear(); effectsByName.Clear(); effectDisplayNames.Add(CombatEffectBase.Effect.HealHitPoints, "Heal HP"); effectDisplayNames.Add(CombatEffectBase.Effect.MagicDamage, "Magic Damage"); effectDisplayNames.Add(CombatEffectBase.Effect.ManaDrain, "Mana Drain"); effectDisplayNames.Add(CombatEffectBase.Effect.WeaponDamage, "Weapon Damage"); foreach (CombatEffectBase.Effect effect in effectDisplayNames.Keys) { effectsByName.Add(effectDisplayNames[effect], effect); } SkillDatabase.LoadSkills(); }