void DisplayAddMainArea() { newWeaponName = EditorGUILayout.TextField(new GUIContent("Name: "), newWeaponName); newWeaponDamage = Convert.ToInt32(EditorGUILayout.TextField(new GUIContent("Damage: "), newWeaponDamage.ToString())); EditorGUILayout.Space(); if (GUILayout.Button("Done", GUILayout.Width(100))) { weapons.Add(new Weapon(newWeaponName, newWeaponDamage)); weapons.SortAlphabeticallyAtoZ(); newWeaponName = string.Empty; newWeaponDamage = 0; EditorUtility.SetDirty(weapons); state = State.BLANK; } }
private static void LoadDataFromKernel() { if (FF7?.MainModule == null) { throw new Exception("FF7 Process MUST be discovered before data can be loaded"); } var ff7Exe = FF7.MainModule?.FileName; var ff7Folder = Path.GetDirectoryName(ff7Exe); var kernelLocation = Path.Combine(ff7Folder, "data", "lang-en", "kernel"); var elena = new KernelReader(Path.Combine(kernelLocation, "KERNEL.BIN")); elena.MergeKernel2Data(Path.Combine(kernelLocation, "kernel2.bin")); // Map Elena's data into local data dbs. foreach (var materia in elena.MateriaData.Materias) { var m = new Materia { Id = materia.Index, Name = materia.Name }; switch (materia.MateriaType) { case Shojy.FF7.Elena.Materias.MateriaType.Command: m.Type = MateriaType.Command; break; case Shojy.FF7.Elena.Materias.MateriaType.Magic: m.Type = MateriaType.Magic; break; case Shojy.FF7.Elena.Materias.MateriaType.Summon: m.Type = MateriaType.Summon; break; case Shojy.FF7.Elena.Materias.MateriaType.Support: m.Type = MateriaType.Support; break; case Shojy.FF7.Elena.Materias.MateriaType.Independent: m.Type = MateriaType.Independent; break; default: m.Type = MateriaType.None; break; } MateriaDatabase.Add(m); } MateriaDatabase.Add(new Materia { Id = 255, Name = "Empty Slot", Type = MateriaType.None }); foreach (var wpn in elena.WeaponData.Weapons) { var w = new Weapon { Name = wpn.Name, Id = wpn.Index, Growth = (int)wpn.GrowthRate, LinkedSlots = wpn.MateriaSlots.Count(slot => slot == MateriaSlot.EmptyLeftLinkedSlot || slot == MateriaSlot.EmptyRightLinkedSlot || slot == MateriaSlot.NormalLeftLinkedSlot || slot == MateriaSlot.NormalRightLinkedSlot), SingleSlots = wpn.MateriaSlots.Count(slot => slot == MateriaSlot.EmptyUnlinkedSlot || slot == MateriaSlot.NormalUnlinkedSlot) }; // Work out what weapon icon to use if ((wpn.EquipableBy & (EquipableBy.Cloud | EquipableBy.YoungCloud)) == wpn.EquipableBy) { w.Type = WeaponType.Sword; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Barret)) { w.Type = WeaponType.Arm; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Tifa)) { w.Type = WeaponType.Glove; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Aeris)) { w.Type = WeaponType.Staff; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.RedXIII)) { w.Type = WeaponType.Hairpin; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Yuffie)) { w.Type = WeaponType.Shuriken; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.CaitSith)) { w.Type = WeaponType.Megaphone; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Vincent)) { w.Type = WeaponType.Gun; } else if (wpn.EquipableBy == (wpn.EquipableBy & EquipableBy.Cid)) { w.Type = WeaponType.Pole; } else { w.Type = WeaponType.Other; } WeaponDatabase.Add(w); } foreach (var arm in elena.ArmorData.Armors) { ArmletDatabase.Add(new Armlet { Id = arm.Index, Name = arm.Name, Growth = (int)arm.GrowthRate, LinkedSlots = arm.MateriaSlots.Count(slot => slot == MateriaSlot.EmptyLeftLinkedSlot || slot == MateriaSlot.EmptyRightLinkedSlot || slot == MateriaSlot.NormalLeftLinkedSlot || slot == MateriaSlot.NormalRightLinkedSlot), SingleSlots = arm.MateriaSlots.Count(slot => slot == MateriaSlot.EmptyUnlinkedSlot || slot == MateriaSlot.NormalUnlinkedSlot) }); } foreach (var acc in elena.AccessoryData.Accessories) { AccessoryDatabase.Add(new Accessory { Id = acc.Index, Name = acc.Name }); } }