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];
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); }
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); }
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];
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); } } }
public static string[] GetLangsByKey(string key) { if (string.IsNullOrEmpty(key)) { return(null); } string[] langs; LangMap.TryGetValue(key, out langs); return(langs); }
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(""); }
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); }
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); }
public static bool ContainsKey(string key) { return(LangMap.ContainsKey(key)); }