Beispiel #1
0
 /// <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()));
 }
Beispiel #2
0
 /// <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;
 }
Beispiel #3
0
        /// <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)); }
         }
     }
 }
Beispiel #7
0
        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));
            }
        }