Ejemplo n.º 1
0
        public ItemCollection(YodaReader stream)
        {
            stream.Seek(TNAM_OFFSET, SeekOrigin.Begin);
            Items = new GameItem[ITEM_COUNT];

            stream.Seek(4, SeekOrigin.Current); // skip "TNAM"
            stream.Seek(4, SeekOrigin.Current); // skip 4-byte header
            for (int i = 0; i < ITEM_COUNT; i++)
            {
                byte[] buf = new byte[26];
                stream.Read(buf, 0, 26);
                Items[i].Index = i;
                Items[i].Sprite = buf[0] + buf[1] * 0x100;
                /*StringBuilder builder = new StringBuilder();
                for (int k = 2; k < 26; k++)
                {
                    if (buf[k] == 0)
                        break;
                    builder.Append((char)buf[k]);
                }*/
                Items[i].Name = Encoding.ASCII.GetString(buf, 2, 24);
                Items[i].Name = Items[i].Name.Substring(0, Items[i].Name.IndexOf('\0'));
            }
        }
Ejemplo n.º 2
0
        public void SetThings(YodaReader yodesk_reader, int[] zoneOffsets)
        {
            this.yodesk = yodesk_reader;
            this.zoneOffsets = zoneOffsets;

            Func<int, byte[]> attrs = delegate(int i)
            {
                byte[] header = new byte[20];
                yodesk.Seek(zoneOffsets[i], 0);
                yodesk.Read(header, 0, 20);

                //return header[12].ToString("X02") + " " + header[18].ToString("X02");
                return new byte[] { header[12], header[18] };
            };

            var zone_list = Enumerable.Range(0, zoneOffsets.Length)
                .Select(i => new
                {
                    index = i,
                    attr = attrs(i)
                })
                .Select(o => new ZoneListEntry
                {
                    index = o.index,
                    offset = zoneOffsets[o.index],
                    planet = o.attr[1],
                    type = o.attr[0]
                })
                ;//.OrderBy(o => o.type).OrderBy(o => o.planet);

            ZonesForm.entries = zone_list.ToArray();

            cbZoneTypeFilter.Items.Clear();
            cbZoneTypeFilter.Items.AddRange(Zone.ZONE_TYPE);

            lbZoneIndex.Items.Clear();
            lbZoneIndex.Items.AddRange(ZonesForm.entries);
        }
Ejemplo n.º 3
0
        public void Deserialize(YodaReader stream)
        {
            var puzzles = new List<Ipuz>();

            stream.Seek(0x457048, System.IO.SeekOrigin.Begin);

            stream.ExpectAtCurrentPos("PUZ2");
            stream.ReadLong(); // PUZ2
            stream.ReadLong(); // skip length
            while (stream.CurrentPosContainsAtOffset("IPUZ", 2))
            {
                var ipuz = new Ipuz();
                ipuz.Deserialize(stream);
                puzzles.Add(ipuz);
            }

            this.Puzzles = puzzles.ToArray();
        }