public static Asset GetFile(this IAssetProvider assetProvider, NamedIdentifier name) { if (name.Name.IndexOf('/') == -1) { assetProvider.GetAssets().FirstOrDefault(p => p.NamedIdentifier.Equals(name)); } var type = name.Name[..name.Name.IndexOf('/')] switch
/// <summary> /// 创建一个<see cref="Asset" /> /// </summary> /// <param name="type"><see cref="Asset" />的类型</param> /// <param name="resource"><see cref="Asset" />的所属资源</param> /// <param name="uuid"><see cref="Asset" />的标识符</param> /// <exception cref="ResourceException">命名空间或名字格式错误</exception> protected Asset(NamedIdentifier namedId, AssetType type, Resource resource, Uuid uuid) { if (!namedId.IsValid) { throw new ResourceException("invalid namespace or name"); } NamedIdentifier = namedId; Type = type; Resource = resource; Id = uuid; }
public Asset this[AssetType type, NamedIdentifier name] { get { var asset = GetAssets().FirstOrDefault(p => p.Type == type && p.NamedIdentifier.Equals(name)); if (asset == null) { throw new ResourceException($"{type} asset {name} not found!"); } return(asset); } }
public (NamedIdentifier file, float x1, float y1, float x2, float y2)? GetChar(char c) { if (c > '\uffff') { return(null); } NamedIdentifier file = Template.Replace("%s", (c >> 8).ToString("x2")); int x = (c & 0b1111) << 4; int y = c & 0b11110000; float unit = 1F / 256; return(file, unit *(x + (_size[c] >> 4)), unit *y, unit *(x + (_size[c] & 0b1111) + 1), unit *(y + 16)); }
public BitmapFontProvider(NamedIdentifier file, int ascent, IEnumerable <string> chars, int height = 16) { File = file; Ascent = ascent; _chars = chars.ToArray(); Column = Chars[0].Length; Row = Chars.Count; if (!Chars.All(p => p.Length == Column)) { throw new ResourceException("Failed to load bitmap provider."); } Height = height; }
public void Write(NamedIdentifier value) { _binaryWriter.Write(value); }
public Asset this[AssetType type, NamedIdentifier name] { get => ActiveAssets[new KeyValuePair <AssetType, NamedIdentifier>(type, name)];
public BlockState(NamedIdentifier id, IEnumerable <KeyValuePair <string, string> > properties) { Name = id; Properties = new Dictionary <string, string>(properties); }
public BlockState(NamedIdentifier id) { Name = id; }
public bool TryGetAsset(AssetType type, NamedIdentifier name, out Asset asset) { asset = GetAssets().FirstOrDefault(p => p.Type == type && p.NamedIdentifier == name); return(asset != null); }
/// <summary> /// 创建<see cref="AssetFile" /> /// </summary> /// <param name="name">名称</param> /// <param name="type">类型</param> /// <param name="resource">所属资源</param> /// <param name="id">标识符</param> /// <param name="file">文件</param> /// <param name="namespace">命名空间</param> public AssetFile(NamedIdentifier name, AssetType type, Resource resource, Uuid id, IFilePath file, string @namespace = "minecraft") : base(name, type, resource, id) { _file = file; }
public static Translation GetTranslation(this IEnumerable <Translation> translations, NamedIdentifier fullname) { return(translations .FirstOrDefault(translation => translation.NamedIdentifier == fullname)); }
public override bool TryThisParseXml(XmlElement elem) { if (!base.TryThisParseXml(elem)) return false; if (!elem.HasChildNodes) return true; var tempIdList = new List<XrefIdentifier>(); foreach (var cnode in elem.ChildNodes) { var cElem = cnode as XmlElement; if (cElem == null) continue; if(string.Equals(cElem.Name, X_REF, StringComparison.OrdinalIgnoreCase)) { if(!cElem.HasChildNodes) throw new RahRowRagee($"The '{X_REF}' node must have at least one child " + "element to be a valid cross reference"); foreach (var xRefIdNode in cElem.ChildNodes) { var xRefIdElem = xRefIdNode as XmlElement; var idValue = xRefIdElem?.InnerText; if (string.IsNullOrWhiteSpace(idValue)) continue; var dataFileXrefNode = _dataFile.SelectSingleNode($"//{_nodeName}[@ID='{idValue}']"); var dataFileXrefElem = dataFileXrefNode as XmlElement; var xmlDocId = new XmlDocXrefIdentifier {_localName = _nodeName}; if (xmlDocId.TryThisParseXml(dataFileXrefElem)) { tempIdList.Add(xmlDocId); } } continue; } var nameAttr = cElem.Attributes[NAME]; var valueAttr = cElem.Attributes[VALUE]; if (nameAttr == null || valueAttr == null) continue; if(string.IsNullOrWhiteSpace(nameAttr.Value) || string.IsNullOrWhiteSpace(valueAttr.Value)) continue; ReferenceDictionary.Add(nameAttr.Value, valueAttr.Value); } XrefIds = new NamedIdentifier[tempIdList.Count]; Array.Copy(tempIdList.ToArray(), XrefIds, XrefIds.Length); return XrefIds.Length > 0; }
/// <summary> /// 创建翻译 /// </summary> /// <param name="value">值</param> public Translation(NamedIdentifier namedIdentifier, string value) { NamedIdentifier = namedIdentifier; Value = value; }