public void ChangeTexture(string name, string type) { if (!ItemManager.Instance) { return; } ItemName = name; ItemType = type; image = transform.GetChild(0).GetComponent <Image>(); itemNumberText = transform.GetChild(1).GetComponent <Text>(); itemNumberText.text = ItemNumber.ToString(); transform.GetChild(0).GetComponent <Image>().color = new Color(1, 1, 1, 1); if (name == "null") { image.sprite = null; transform.GetChild(0).GetComponent <Image>().color = new Color(1, 1, 1, 0); itemNumberText.text = null; ItemNumber = 0; return; } // itemPath = (string)ItemManager.Instance.propValue[name]["path"]; itemPath = (string)ItemManager.Instance.GetPropertyByName(name, type, "path"); Sprite sprite = Resources.Load <Sprite>(itemPath); image.sprite = sprite; }
public void valid(string number) { var n = new ItemNumber(number); Assert.Equal(42, n.Value); Assert.Equal("42", n.ToString()); }
//private static CostumeSlot ParseDefaultItemSlot(string slot) //{ // Func<string, bool> equals = str => slot.Equals(str, StringComparison.InvariantCultureIgnoreCase); // if (equals("hair")) // return CostumeSlot.Hair; // if (equals("face")) // return CostumeSlot.Face; // if (equals("coat")) // return CostumeSlot.Shirt; // if (equals("pants")) // return CostumeSlot.Pants; // if (equals("gloves")) // return CostumeSlot.Gloves; // if (equals("shoes")) // return CostumeSlot.Shoes; // throw new Exception("Invalid slot " + slot); //} #endregion #region Items public IEnumerable <ItemInfo> LoadItems() { var dto = Deserialize <ItemInfoDto>("xml/iteminfo.x7"); var stringTable = Deserialize <StringTableDto>("language/xml/iteminfo_string_table.x7"); foreach (var categoryDto in dto.category) { foreach (var subCategoryDto in categoryDto.sub_category) { foreach (var itemDto in subCategoryDto.item) { var id = new ItemNumber(categoryDto.id, subCategoryDto.id, itemDto.number); ItemInfo item; switch (id.Category) { case ItemCategory.Skill: item = LoadAction(id, itemDto); break; case ItemCategory.Weapon: item = LoadWeapon(id, itemDto); break; default: item = new ItemInfo(); break; } item.ItemNumber = id; item.Level = [email protected]_info.require_level; item.MasterLevel = [email protected]_info.require_master; item.Gender = ParseGender(itemDto.SEX); item.Image = itemDto.client.icon.image; if ([email protected] != null) { item.License = ParseItemLicense([email protected]); } var name = [email protected](s => s.key.Equals([email protected]_info.name_key, StringComparison.InvariantCultureIgnoreCase)); if (string.IsNullOrWhiteSpace(name?.eng)) { Logger.Warning("Missing english translation for {id}", name != null ? [email protected]_info.name_key : id.ToString()); item.Name = name != null ? name.key : itemDto.NAME; } else { item.Name = name.eng; } yield return(item); } } } }
public void LoadItems() { _logger.Information("Loading items..."); var dto = Deserialize <ItemInfoDto>("xml/iteminfo.x7"); var stringTable = Deserialize <StringTableDto>("language/xml/iteminfo_string_table.x7"); Items = Transform().ToImmutableDictionary(x => x.ItemNumber, x => x); _logger.Information("Loaded {Count} items", Items.Count); IEnumerable <ItemInfo> Transform() { foreach (var categoryDto in dto.category) { foreach (var subCategoryDto in categoryDto.sub_category) { foreach (var itemDto in subCategoryDto.item) { var id = new ItemNumber(categoryDto.id, subCategoryDto.id, itemDto.number); ItemInfo item; switch (id.Category) { case ItemCategory.Skill: item = LoadAction(id, itemDto); break; case ItemCategory.Weapon: item = LoadWeapon(id, itemDto); break; default: item = new ItemInfo(); break; } item.ItemNumber = id; item.Level = [email protected]_info.require_level; item.MasterLevel = [email protected]_info.require_master; item.Gender = ParseGender(itemDto.SEX); item.Image = itemDto.client.icon.image; if ([email protected] != null) { item.License = ParseItemLicense([email protected]); } var name = [email protected](s => s.key.Equals([email protected]_info.name_key, StringComparison.InvariantCultureIgnoreCase)); if (string.IsNullOrWhiteSpace(name?.eng)) { _logger.Warning("Missing english translation for {id}", name != null ? [email protected]_info.name_key : id.ToString()); item.Name = name != null ? name.key : itemDto.NAME; } else { item.Name = name.eng; } yield return(item); } } } } Gender ParseGender(string gender) { bool Equals(string str) { return(gender.Equals(str, StringComparison.InvariantCultureIgnoreCase)); } if (Equals("all")) { return(Gender.None); } if (Equals("woman")) { return(Gender.Female); } if (Equals("man")) { return(Gender.Male); } throw new Exception("Invalid gender " + gender); } ItemInfo LoadAction(ItemNumber id, ItemInfoItemDto itemDto) { if (itemDto.action == null) { _logger.Warning("Missing action for item {id}", id); return(new ItemInfoAction()); } var item = new ItemInfoAction { RequiredMP = float.Parse(itemDto.action.ability.required_mp, CultureInfo.InvariantCulture), DecrementMP = float.Parse(itemDto.action.ability.decrement_mp, CultureInfo.InvariantCulture), DecrementMPDelay = float.Parse(itemDto.action.ability.decrement_mp_delay, CultureInfo.InvariantCulture) }; if (itemDto.action.@float != null) { item.ValuesF = itemDto.action.@float .Select(f => float.Parse(f.value.Replace("f", ""), CultureInfo.InvariantCulture)).ToList(); } if (itemDto.action.integer != null) { item.Values = itemDto.action.integer.Select(i => i.value).ToList(); } return(item); } ItemInfo LoadWeapon(ItemNumber id, ItemInfoItemDto itemDto) { if (itemDto.weapon == null) { _logger.Warning("Missing weapon for item {id}", id); return(new ItemInfoWeapon()); } var ability = itemDto.weapon.ability; var item = new ItemInfoWeapon { Type = ability.type, RateOfFire = float.Parse(ability.rate_of_fire, CultureInfo.InvariantCulture), Power = float.Parse(ability.power, CultureInfo.InvariantCulture), MoveSpeedRate = float.Parse(ability.move_speed_rate, CultureInfo.InvariantCulture), AttackMoveSpeedRate = float.Parse(ability.attack_move_speed_rate, CultureInfo.InvariantCulture), MagazineCapacity = ability.magazine_capacity, CrackedMagazineCapacity = ability.cracked_magazine_capacity, MaxAmmo = ability.max_ammo, Accuracy = float.Parse(ability.accuracy, CultureInfo.InvariantCulture), Range = string.IsNullOrWhiteSpace(ability.range) ? 0 : float.Parse(ability.range, CultureInfo.InvariantCulture), SupportSniperMode = ability.support_sniper_mode > 0, SniperModeFov = ability.sniper_mode_fov > 0, AutoTargetDistance = ability.auto_target_distance == null ? 0 : float.Parse(ability.auto_target_distance, CultureInfo.InvariantCulture) }; if (itemDto.weapon.@float != null) { item.ValuesF = itemDto.weapon.@float .Select(f => float.Parse(f.value.Replace("f", ""), CultureInfo.InvariantCulture)).ToList(); } if (itemDto.weapon.integer != null) { item.Values = itemDto.weapon.integer.Select(i => i.value).ToList(); } return(item); } }
public override string ToString() { return(ItemNumber.ToString()); }
public override string ToString() => ItemNumber.ToString();