Example #1
0
    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;
        }
    }
Example #2
0
        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
                });
            }
        }