Ejemplo n.º 1
0
        public static LangMap GetWeaponsOfType(string targetFile, WeaponType weaponType, IndexOrId by)
        {
            var weaponClassType = weaponType.ToClassType();
            var weaponTypeName  = Path.GetFileNameWithoutExtension(weaponType.ToDatFileName());
            var values          = new LangMap();

            IEnumerable <IWeapon> weapons;

            if (weaponClassType == typeof(Melee))
            {
                weapons = Melee.LoadData(targetFile).GetSingleStructList();
            }
            else if (weaponClassType == typeof(Ranged))
            {
                weapons = Ranged.LoadData(targetFile).GetSingleStructList();
            }
            else
            {
                throw new InvalidOperationException($"Unrecognized weapon type: {weaponClassType.Name}");
            }

            foreach (var weapon in weapons)
            {
                foreach (var lang in Global.LANGUAGES)
                {
                    if (!values.ContainsKey(lang))
                    {
                        values[lang] = new Dictionary <uint, string>();
                    }

                    values[lang][(uint)(by == IndexOrId.Id ? weapon.Id : weapon.Index)] = DataHelper.weaponData[lang][weaponTypeName ?? throw new InvalidOperationException()][weapon.GMD_Name_Index];
Ejemplo n.º 2
0
        public static LangMap GetPalicoArmorsByModelId(HeadOrBody headOrBody)
        {
            var map = new LangMap();

            foreach (var lang in Global.LANGUAGES)
            {
                map[lang] = new Dictionary <uint, string>();
            }

            foreach (var armor in GetPalicoArmors())
            {
                if (armor.Equip_Slot == ArmorType.Head && headOrBody != HeadOrBody.Head)
                {
                    continue;
                }
                if (armor.Equip_Slot == ArmorType.Chest && headOrBody != HeadOrBody.Body)
                {
                    continue;
                }

                foreach (var lang in Global.LANGUAGES)
                {
                    map[lang][armor.Model_Id] = DataHelper.otomoArmorData[lang][armor.GMD_Name_Index];
                }
            }

            return(map);
        }
Ejemplo n.º 3
0
        public static Dictionary <ArmorType, LangMap> GetAllArmors(IndexOrId by)
        {
            var values = new Dictionary <ArmorType, LangMap>();

            foreach (var armor in GetArmor())
            {
                var armorType = armor.Equip_Slot;
                if (!values.ContainsKey(armorType))
                {
                    values[armorType] = new LangMap();
                }

                foreach (var lang in Global.LANGUAGES)
                {
                    if (!values[armorType].ContainsKey(lang))
                    {
                        values[armorType][lang] = new Dictionary <uint, string>();
                    }

                    values[armorType][lang][(uint)(by == IndexOrId.Id ? armor.Set_Group : armor.Index)] = DataHelper.armorData[lang][armor.GMD_Name_Index];
                }
            }

            return(values);
        }
Ejemplo n.º 4
0
        public static LangMap GetWeaponsOfType(string targetFile, WeaponTypeOnlyWeapons weaponType)
        {
            using var dat = new BinaryReader(new FileStream(targetFile, FileMode.Open, FileAccess.Read));
            dat.BaseStream.Seek(6, SeekOrigin.Begin);
            var count = dat.ReadUInt32();

            dat.BaseStream.Seek(10, SeekOrigin.Begin);

            var weaponClassType = weaponType.ToClassType();

            var weaponTypeName = Path.GetFileNameWithoutExtension(weaponType.ToDatFileName());
            // ReSharper disable once PossibleNullReferenceException
            var structSize = (uint)weaponClassType.GetField(nameof(Armor.StructSize), BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy).GetValue(null);

            var values = new LangMap();

            for (var i = 0; i < count; i++)
            {
                var position = dat.BaseStream.Position;
                var buff     = dat.ReadBytes((int)structSize);

                var weapon = (IWeapon)Activator.CreateInstance(weaponClassType, buff, (ulong)position, "");

                foreach (var lang in Global.LANGUAGES)
                {
                    if (!values.ContainsKey(lang))
                    {
                        values[lang] = new Dictionary <uint, string>();
                    }

                    values[lang][weapon.Id] = DataHelper.weaponData[lang][weaponTypeName ?? throw new InvalidOperationException()][weapon.GMD_Name_Index];
Ejemplo n.º 5
0
 private void ViewVariables(TreeNode node, LangObject obj)
 {
     if (obj.objectType == ObjectType.NUMBER)
     {
         node.Text = ((LangNumber)obj).numberValue.Value + "";
     }
     else if (obj.objectType == ObjectType.STRING)
     {
         node.Text = "\"" + ((LangString)obj).stringValue.Value + "\"";
     }
     else if (obj.objectType == ObjectType.MAP)
     {
         LangMap mp = ((LangMap)obj);
         node.Text = "map";
         SortedDictionary <Object, LangObject> sd = new SortedDictionary <object, LangObject>();
         foreach (DictionaryEntry dic in mp.arrayValue.Value)
         {
             sd.Add(dic.Key, (LangObject)dic.Value);
         }
         foreach (KeyValuePair <Object, LangObject> dic in sd)
         {
             TreeNode child = new TreeNode();
             ViewVariables(child, dic.Value);
             child.Text = "[" + dic.Key.ToString() + "]" + " : " + child.Text;
             node.Nodes.Add(child);
         }
     }
     else if (obj.objectType == ObjectType.CLASS)
     {
         LangClass objcls = (LangClass)obj;
         node.Text = objcls.name.Value;
         foreach (DictionaryEntry it in objcls.vars.Value)
         {
             bool cont = false;
             foreach (string mod in ((ArrayList)objcls.permissions.Value[it.Key]))
             {
                 if (mod == "private")
                 {
                     cont = true;
                     break;
                 }
             }
             if (cont)
             {
                 continue;
             }
             LangObject obj2   = ((LangObject)it.Value);
             TreeNode   child  = new TreeNode((string)it.Key);
             TreeNode   child2 = new TreeNode();
             ViewVariables(child2, obj2);
             child.Nodes.Add(child2);
             node.Nodes.Add(child);
         }
     }
 }
Ejemplo n.º 6
0
    public static string[] GetLangsByKey(string key)
    {
        if (string.IsNullOrEmpty(key))
        {
            return(null);
        }

        string[] langs;
        LangMap.TryGetValue(key, out langs);
        return(langs);
    }
Ejemplo n.º 7
0
    public static string Get(string key)
    {
        if (!string.IsNullOrEmpty(key))
        {
            string[] langs;
            if (LangMap.TryGetValue(key, out langs))
            {
                if (_langIndex < langs.Length)
                {
                    return(langs[_langIndex]);
                }
            }
        }

        return("");
    }
Ejemplo n.º 8
0
    public static bool TryGet(string key, out string val)
    {
        if (!string.IsNullOrEmpty(key))
        {
            string[] langs;
            if (LangMap.TryGetValue(key, out langs))
            {
                if (_langIndex < langs.Length)
                {
                    val = langs[_langIndex];
                    return(true);
                }
            }
        }

        val = "";
        return(false);
    }
Ejemplo n.º 9
0
        public static LangMap GetArmorByFileIndex()
        {
            var map = new LangMap();

            foreach (var lang in Global.LANGUAGES)
            {
                map[lang] = new Dictionary <uint, string>();
            }

            foreach (var armor in GetArmor())
            {
                foreach (var lang in Global.LANGUAGES)
                {
                    map[lang][(uint)armor.Index] = DataHelper.armorData[lang][armor.GMD_Name_Index];
                }
            }

            return(map);
        }
Ejemplo n.º 10
0
 public static bool ContainsKey(string key)
 {
     return(LangMap.ContainsKey(key));
 }