Exemple #1
0
        static RoomObjInst ReadRoomObjInst(GMFileContent content, IntPtr p)
        {
            var entry = (RoomObjInstEntry *)p;

            var oi = new RoomObjInst();

            oi.Index = entry->Index;
            oi.Name  = StringFromOffset(content, entry->Name);
            oi.Unk1  = entry->Unk1;
            oi.Depth = entry->Depth;
            oi.Unk3  = entry->Unk3;

            uint isn = entry->InstCount;

            if (isn > 0x8000)
            {
                isn = 0;               // workaround for GM2
            }
            oi.Instances = new uint[isn];
            for (uint i = 0; i < isn; i++)
            {
                oi.Instances[i] = (&entry->Instances)[i];
            }

            return(oi);
        }
Exemple #2
0
        static JsonData SerializeRoomObjInst(RoomObjInst oi)
        {
            var r = CreateObj();

            r["name"]      = oi.Name;
            r["index"]     = oi.Index;
            r["unk1"]      = oi.Unk1;
            r["depth"]     = oi.Depth;
            r["unk3"]      = oi.Unk3;
            r["instances"] = SerializeArray(oi.Instances, Utils.Identity);
            return(r);
        }
Exemple #3
0
 private static void WriteRoomObjInst(BBData data, RoomObjInst roi, StringsChunkBuilder strings)
 {
     data.Buffer.Write(new RoomObjInstEntry
     {
         Index     = roi.Index,
         Unk1      = roi.Unk1,
         Depth     = roi.Depth,
         Unk3      = roi.Unk3,
         InstCount = (uint)roi.Instances.Length,
         Name      = strings.GetOffset(roi.Name)
     });
     data.Buffer.Position -= 4;
     foreach (var id in roi.Instances)
     {
         data.Buffer.Write(id);
     }
 }