public readonly ResType ResType; //16 bit File type //uint ResId; // 32 bit Resource ID, starts at 0 and increments //ushort Unused; // 16 bit NULLs public ErfKeyFrame(ResRef resref, ResType resType) { ResRef = resref; //ResId = res_id; ResType = resType; //Unused = unused; }
public void load(ref BinaryReaderBE reader, UInt32 mapOffset) { reader.BaseStream.Seek(mapOffset + 24, SeekOrigin.Begin); typeListOffset = reader.ReadInt16(); nameListOffset = reader.ReadInt16(); numTypes = reader.ReadInt16(); for (int i = 0; i <= numTypes; i++) { Type type = new Type(); type.load(ref reader); types.Add(type); } for (int t = 0; t < types.Count; t++) { for (int r = 0; r < types[t].numRefs; r++) { ResRef resref = new ResRef(); resref.load(ref reader); resref.type = types[t].type; refs.Add(resref); } } }
public void Init(string name, string url, bool noCache = false) { assetbundleName = name; this.url = url; this.noCache = noCache; _resRef = ResRef.Null; isOver = false; }
public void Start() { _resRef = ResManager.LoadObject("", this.url, true); if (_resRef == ResRef.Null) { Logger.LogError("New www failed!!!"); isOver = true; } else { //Logger.Log("Downloading : " + url); } }
public void Load(string path) { if (File.Exists(path)) { if (Path.GetExtension(path) == Ext) { var lBf = new List <BiffFile>(); var br = new LatinBinaryReader(File.OpenRead(path)); var kh = new KeyHeader(br); br.Stream.Position = kh.OffsetToFileTable; for (var i = 0; i < kh.BiffCount; i++) { br.Stream.Seek(sizeof(uint), SeekOrigin.Current); var nameOffset = br.ReadUInt32(); var nameSize = br.ReadUInt16(); br.Stream.Seek(sizeof(ushort), SeekOrigin.Current); var pos = br.Stream.Position; br.Stream.Position = nameOffset; var name = new string(br.ReadChars(nameSize)).TrimEnd('\0').ToLower(); br.Stream.Position = pos; lBf.Add(new BiffFile(Path.GetDirectoryName(path) + "/" + name)); } br.Stream.Position = kh.OffsetToKeyTable; for (var i = 0; i < kh.KeyCount; i++) { var resref = new ResRef(br.ReadChars(ResRef.Length)); br.Stream.Seek(sizeof(ushort), SeekOrigin.Current); var rawid = br.ReadUInt32(); var biffId = (int)(rawid >> BitShift); var resId = (int)(rawid - (biffId << BitShift)); var res = lBf[biffId][resId]; Add(new ContentObject(lBf[biffId].FilePath, resref, res.ResType, res.Offset, res.Size)); } } else { throw new ApplicationException("Le fichier n'est pas un fichier .key valide."); } } else { throw new ApplicationException("Le fichier n'existe pas."); } }
internal unsafe void ApplyToNativeStructure(CNWSQuickbarButton button) { button.m_oidItem = Item; button.m_oidSecondaryItem = SecondaryItem; button.m_nObjectType = (byte)ObjectType; button.m_nMultiClass = button.m_nMultiClass; button.m_cResRef = ResRef != null ? new CResRef(ResRef.GetFixedLengthString(16)) : new CResRef(); button.m_sCommandLabel = CommandLabel.ToExoString(); button.m_sCommandLine = CommandLine.ToExoString(); button.m_sToolTip = ToolTip.ToExoString(); button.m_nINTParam1 = Param1; button.m_nMetaType = MetaType; button.m_nDomainLevel = DomainLevel; button.m_nAssociateType = (ushort)AssociateType; button.m_oidAssociate = Associate; }
public void Load(string path) { var br = new LatinBinaryReader(File.OpenRead(path)); var h = new ErfHeader(br); _lDesc = new Dictionary <uint, string>(); var keys = new List <ErfKeyFrame>(); var values = new List <ErfResFrame>(); br.Stream.Position = h.OffsetToLocalizedString; for (var i = 0; i < h.LanguageCount; i++) { var langId = br.ReadUInt32(); var strSize = br.ReadUInt32(); var str = new string(br.ReadChars((int)strSize)).TrimEnd('\0'); _lDesc.Add(langId, str); } br.Stream.Position = h.OffsetToKeyList; for (var i = 0; i < h.EntryCount; i++) { var resref = new ResRef(br.ReadChars(ResRef.Length)); br.ReadUInt32(); // ResId var restype = (ResType)br.ReadUInt16(); br.ReadUInt16(); // Unused keys.Add(new ErfKeyFrame(resref, restype)); } br.Stream.Position = h.OffsetToResourceList; for (var i = 0; i < h.EntryCount; i++) { values.Add(new ErfResFrame(br.ReadUInt32(), br.ReadUInt32())); } for (var i = 0; i < h.EntryCount; i++) { Add(new ContentObject(path, keys[i].ResRef, keys[i].ResType, values[i].OffsetToResource, values[i].ResourceSize)); } }
/// <summary> /// 加载 ab package 内包含的资源 /// </summary> public void LoadRes() { // 已经加载过了 if (_isLoaded) { return; } /// 加载 _resRef 依赖的资源 for (int i = waitingList.Count - 1; i >= 0; i--) { /// 还的解析 assetname, 靠!!! var url = AssetBundleUtility.GetAssetBundleFileUrl(waitingList[i]); var r = ResManager.LoadObject(waitingList[i], url, true); _resRefs.Add(r); } { // 对于package 来说, resRef 可能只hold bundle, object,加载不了因为 …… var url = AssetBundleUtility.GetAssetBundleFileUrl(assetbundleName); _resRef = ResManager.LoadObject(assetbundleName, url, true); } _isLoaded = true; }
private static FIELD CreateNewField(BinaryReader br, int index, int fieldOffset, int dataOrDataOffset, GffFieldType fieldType) { FIELD data; switch (fieldType) { case GffFieldType.BYTE: data = new BYTE(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CHAR: data = new CHAR(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.WORD: data = new WORD(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.SHORT: data = new SHORT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DWORD: data = new DWORD(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.INT: data = new INT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DWORD64: data = new DWORD64(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.INT64: data = new INT64(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.FLOAT: data = new FLOAT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DOUBLE: data = new DOUBLE(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CExoString: data = new CExoString(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.ResRef: data = new ResRef(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CExoLocString: data = new CExoLocString(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.VOID: data = new VOID(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Struct: int lbl_index = br.ReadInt32(); data = new STRUCT(br, br.ReadInt32(), lbl_index); break; case GffFieldType.List: data = new LIST(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Orientation: data = new Orientation(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Vector: data = new Vector(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.StrRef: data = new StrRef(br, fieldOffset + dataOrDataOffset * 12); break; default: throw new Exception(string.Format("UNEXPECTED FIELD TYPE \"{0}\", IN STRUCT INDEX \"{1}\"", fieldType, index)); } return(data); }
public void Parse(string value) { _resref = new ResRef(value); }
public void Parse(GffField field) { _resref = new ResRef(LatinEncoding.Latin1.GetString(field.Bytes)); }