/// <summary> /// Gets the extention of the resource type, used for saving, returns .extention /// </summary> /// <param name="type"></param> /// <returns></returns> public static string ExtentionFromResourceType(SCI32ResourceType type) { if (type == SCI32ResourceType.None || type == SCI32ResourceType.EndResource) { return("invalid"); } return(string.Format(".{0}", type.ToString().ToLower())); }
/// <summary> /// A SCI32 Packed Resource contained in a Ressci.* file, read into memory /// using the index file of Resmap.*. /// </summary> /// <param name="type">The SCI32 Type this resource is.</param> /// <param name="id">The Id of this resource.</param> /// <param name="atOffset">The offset in the packed file this resource begins at.</param> public SCI32Resource(SCI32ResourceType type, ushort id, uint atOffset) { this.ID = id; this.Offset = atOffset; this.ResourceType = type; this.HasFile = false; this.HasFileLengths = false; }
/// <summary> /// Gets the resource type by byte. /// </summary> /// <param name="value"></param> /// <returns></returns> public static SCI32ResourceType GetResourceType(byte value) { SCI32ResourceType reply = SCI32ResourceType.None; foreach (SCI32ResourceType type in Enum.GetValues(typeof(SCI32ResourceType))) { if ((byte)type == value) { reply = type; } } return(reply); }
public bool TryGetDirectoryByType(SCI32ResourceType type, out SCI32ResourceDirectory dir) { dir = null; for (int i = 0; i < this.Count; i++) { if (this[i].Type == type) { dir = this[i]; } } return(dir != null); }
public string GetDirectoryNameByType(SCI32ResourceType type) { switch (type) { case SCI32ResourceType.Aud: return("Audio"); case SCI32ResourceType.Bmp: return("Bitmaps"); case SCI32ResourceType.Cur: return("Cursors"); case SCI32ResourceType.Fon: return("Fonts"); case SCI32ResourceType.Hep: return("Heaps"); case SCI32ResourceType.Map: return("Maps"); case SCI32ResourceType.Msg: return("Messages"); case SCI32ResourceType.P56: return("Pictures"); case SCI32ResourceType.Pal: return("Palettes"); case SCI32ResourceType.Pat: return("Patches"); case SCI32ResourceType.Scr: return("Scripts"); case SCI32ResourceType.Snd: return("Sounds"); case SCI32ResourceType.Syn: return("Syncs"); case SCI32ResourceType.V56: return("Views"); case SCI32ResourceType.Voc: return("Vocabs"); case SCI32ResourceType.Wav: return("Waves"); default: return("Invalid"); } }
private void PopulateResmapResources() { // we read our ressci file, in a nested loop for (int i = 0; i < this.Count; i++) { SCI32ResourceDirectory sci32Dir = this[i]; for (int j = 0; j < this[i].Resources.Count; j++) { SCI32Resource res = sci32Dir.Resources[j]; this.ressciReader.Seek(res.Offset, SeekOrigin.Begin); // Compare resources SCI32ResourceType type = SCI32Resource.GetResourceType(this.ressciReader.ReadByte()); //if(type != res.ResourceType) //{ throw new IOException(string.Format("Type Mismatch {0} for {1} should be {2}.", type, res.ID, res.ResourceType)); } ushort id = this.ressciReader.ReadUInt16(); if (res.ID != id) { throw new IOException(string.Format("ID {0} Mismatch for {1}.", id, res.ID)); } try { // Ok we passed the compare get our lengths res.SetLengths(this.ressciReader.ReadInt32(), this.ressciReader.ReadInt32()); // Are we compressed ? bool compressed = res.UnCompressedLength != res.CompressedLength; if (compressed) { res.AddFileData(this.ressciReader.ReadBytes(res.CompressedLength)); } else { res.AddFileData(this.ressciReader.ReadBytes(res.UnCompressedLength)); } } catch (Exception ex) { throw new IOException(string.Format("Unable to load filedata from {0} into resource. Error was {1}", this.RessciFileName, ex.Message)); } } } }
public static int GetIconIndexByType(SCI32ResourceType type) { switch (type) { case SCI32ResourceType.Fon: return(GetIconIndex(Icon.Font)); case SCI32ResourceType.Hep: return(GetIconIndex(Icon.Heap)); case SCI32ResourceType.Msg: return(GetIconIndex(Icon.Message)); case SCI32ResourceType.P56: return(GetIconIndex(Icon.Picture)); case SCI32ResourceType.Pal: return(GetIconIndex(Icon.Palette)); case SCI32ResourceType.Scr: return(GetIconIndex(Icon.Script)); case SCI32ResourceType.V56: return(GetIconIndex(Icon.View)); case SCI32ResourceType.Voc: return(GetIconIndex(Icon.Vocab)); default: return(GetIconIndex(Icon.None)); } }